From 4d389fed3bb9b8422c0e36eb12d75d6b4d36cc6f Mon Sep 17 00:00:00 2001 From: moskalyk Date: Wed, 3 Apr 2024 21:44:54 +0000 Subject: [PATCH] Build: (8088450) Merge pull request #19 from 0xsequence/custom-marketplace-guide fixed dead links --- .vocs/search-index-8a46a6d9.json | 1 - .vocs/search-index-e1175f97.json | 1 + api/embedded-wallet/index.html | 6 +- api/index.html | 6 +- api/indexer/01-overview/index.html | 6 +- api/indexer/02-installation/index.html | 11 +- api/indexer/03-fetch-tokens/index.html | 6 +- api/indexer/04-transaction-history/index.html | 6 +- api/indexer/05-unique-tokens/index.html | 6 +- .../index.html | 6 +- .../07-native-network-balance/index.html | 6 +- api/indexer/08-metadata-tips/index.html | 6 +- api/marketplace/index.html | 6 +- api/metadata/index.html | 6 +- api/relayer/index.html | 6 +- ...gRTiZ.js => 01-connect-wallet-Cl599MBF.js} | 2 +- ...6QA2h.js => 01-connect-wallet-Dt-ODA_X.js} | 2 +- ... 01-deploy-an-item-collection-DjzMitxr.js} | 2 +- ...EZsM2H.js => 01-fiat-on-ramps-CrXvbg7X.js} | 2 +- ...5-dZ9eG.js => 01-introduction-ORpy4spW.js} | 2 +- ...ew-DwlQ2Vdp.js => 01-overview-BOMJT4H0.js} | 2 +- ...ew-GJz_L1Q9.js => 01-overview-BOVk6_Iv.js} | 2 +- ...ew-DwQx-QaI.js => 01-overview-CKoYw6iK.js} | 2 +- ...ew-CDm9TwOo.js => 01-overview-CRNWUnhq.js} | 2 +- ...ew-B8wB59mz.js => 01-overview-CfZ4B1C6.js} | 2 +- ...ew-BwLa55n_.js => 01-overview-CgIU_uUT.js} | 2 +- assets/01-overview-Cgd_Khl-.js | 12 + ...ew-sg4qQZti.js => 01-overview-Cm_eirZl.js} | 2 +- ...ew-B8XR8Ef0.js => 01-overview-DTc0-0Lg.js} | 2 +- ...ew-RdxEHBz8.js => 01-overview-YB_pmFKQ.js} | 2 +- ...{01-why-8FHUeyRc.js => 01-why-DDLn-B4w.js} | 2 +- ...3x9gD_B.js => 02-auth-address-CyNhiG2u.js} | 2 +- ...QDRmsCg.js => 02-auth-address-ckDlTMpv.js} | 2 +- ...> 02-building-relaying-server-tgIgg2w9.js} | 2 +- ...s => 02-deploy-ERC20-currency-CJ-woKNT.js} | 4 +- ...NKDy.js => 02-getting-started-DCEjiXfb.js} | 2 +- ...fcWzbCM.js => 02-installation-CLf2UaDN.js} | 2 +- ...mHFe_OD.js => 02-installation-CObAK7UR.js} | 4 +- ...ZrO8R1J.js => 02-installation-D0o4nSPs.js} | 7 +- assets/02-installation-D1RIPokR.js | 10 + ...-zdv7eQeo.js => 02-quickstart-4ykaiCFW.js} | 2 +- ...-DgD-oWhr.js => 02-quickstart-CVOVMm3N.js} | 2 +- ...-xxXaq7Pn.js => 02-quickstart-Dm3tzuR_.js} | 2 +- ...-BTnDCOWm.js => 02-quickstart-jegcKRXn.js} | 2 +- ...3RjIvG6.js => 02-sequence-kit-BMZSpUXz.js} | 2 +- ...Y.js => 02-universal-deployer-V3lr9jJW.js} | 2 +- ...ets-hufkdzO-.js => 02-wallets-BAOFMlWK.js} | 2 +- ...nts-BliPa7eW.js => 03-clients-BfjUnR5d.js} | 2 +- ...JRPMlZ.js => 03-configuration-cZDC_IKQ.js} | 2 +- ...0WixhHL.js => 03-fetch-tokens-DDkmBp8W.js} | 2 +- ...lHPhA.js => 03-get-top-orders-BE-_zj92.js} | 2 +- ...WGXa.js => 03-manage-sessions-BJA3--RF.js} | 2 +- ...-mint-collectibles-serverless-DFmuqk8W.js} | 2 +- assets/03-setup-B2DzkyEa.js | 20 + ...setup-CAEHu-rE.js => 03-setup-DVqc6pPn.js} | 2 +- ...n5G7lSc.js => 03-sign-message-Br_SQVC8.js} | 2 +- ...7OGb3o1.js => 03-sign-message-C06zBfE6.js} | 9 +- ...-BvCSK8V2.js => 03-tokens-api-Wt-yZ8iO.js} | 2 +- ...wagmi-BsRrkGCX.js => 03-wagmi-v91jUr-a.js} | 2 +- ...EaeZR.js => 03-wallet-factory-BQXRuWg_.js} | 2 +- assets/04-authentication-BECPZ5yD.js | 65 ++ ...mV0ES.js => 04-authentication-Y1sSErYo.js} | 2 +- ...ut-DpZFyP0s.js => 04-checkout-BNYQ2nrw.js} | 2 +- ...14J_v-.js => 04-get-orderbook-Dy7YyvsP.js} | 2 +- ...s-489X8Wat.js => 04-platforms-glPWmaN4.js} | 2 +- ...CjV-OizB.js => 04-rainbow-kit-v4LsgczZ.js} | 2 +- ...YfKAfv7.js => 04-sequence-kit-Dm2NVQTH.js} | 2 +- ...qvnoKIS.js => 04-session-keys-BH_jcGg9.js} | 2 +- ...izP5hvN.js => 04-session-keys-DwD4iACN.js} | 2 +- ....js => 04-transaction-history-wUrcEF9g.js} | 2 +- ...s-DTgmCvbU.js => 04-transfers-5gM1Zbvb.js} | 2 +- ...CpqAdL-1.js => 04-use-wallets-Bbt6hEyu.js} | 2 +- ...js => 04-wallet-configuration-Bs_jtNnf.js} | 2 +- ...04-wallet-transaction-history-Wt-yZ8iO.js} | 2 +- assets/05-api-integration-t2lA4Nv8.js | 49 ++ ...s-Dj4y6dqe.js => 05-contracts-DVDi4fXD.js} | 2 +- ...vT.js => 05-custom-connectors-Bd4W47Wz.js} | 2 +- ...zzmOgZ.js => 05-fiat-on-ramps-CbgCC_Wz.js} | 2 +- ....js => 05-get-user-activities-DkfpsBW4.js} | 2 +- ....js => 05-modules-and-updates-BZ-acVOs.js} | 2 +- ...s-L-ay0RTN.js => 05-platforms-BswQsHZ_.js} | 2 +- ...XDd.js => 05-send-transaction-B-8IwTpV.js} | 2 +- ...w8C.js => 05-send-transaction-BLPMy39e.js} | 2 +- ...aws6XW.js => 05-unique-tokens-BBoAQBrC.js} | 2 +- ...CSK8V2.js => 05-unique-tokens-Wt-yZ8iO.js} | 2 +- ...-DVqBruW7.js => 05-validation-D6nAm2G3.js} | 2 +- ...VawCyHG.js => 05-web3-onboard-B4-r8qZO.js} | 2 +- ....js => 05-write-to-blockchain-DCBcfOKI.js} | 2 +- ...S08Lfl.js => 06-fiat-on-ramps-l3lSSIK6.js} | 2 +- ...Slzfo.js => 06-key-management-BRNfS8bX.js} | 2 +- ...=> 06-main-module-upgradeable-CwFDq2xw.js} | 2 +- ... => 06-orderbook-transactions-BeUtSFOp.js} | 4 +- assets/06-packaging-DAGyVEwf.js | 32 + ...js => 06-read-from-blockchain-DEKqDbrP.js} | 2 +- ...-C1l4rkxy.js => 06-send-erc20-BNf9h1bS.js} | 2 +- ...-XQSQj5Q8.js => 06-send-erc20-C1S52TMX.js} | 2 +- ... => 06-token-contract-history-Wt-yZ8iO.js} | 2 +- ...kens-DFX9gYW5.js => 06-tokens-DONJK441.js} | 2 +- ...js => 06-transaction-receipts-CFVZYVqh.js} | 2 +- ...sation-history-token-contract-Dkspf4AH.js} | 2 +- ...Y2pWoi.js => 06-web3-react-v6-i-_P8qDI.js} | 2 +- ...KVybh.js => 07-key-management-DHKyIl2b.js} | 2 +- ... => 07-native-network-balance-BS__wyoA.js} | 2 +- ... => 07-native-network-balance-Cdn-RXjO.js} | 2 +- ...98x3-w4n.js => 07-send-erc721-CsiV7Skt.js} | 2 +- ...YLiMwPp8.js => 07-send-erc721-DoTiPEJu.js} | 2 +- ...6lHzv8.js => 07-sign-messages-D8skSErh.js} | 2 +- ...js => 07-transaction-encoding-NtDrHizW.js} | 2 +- ...l-B_MxMDHV.js => 07-web3modal-D_QEo_Cm.js} | 2 +- ...{08-FAQ-DepmDNn0.js => 08-FAQ-BHeUJunZ.js} | 2 +- ...P33.js => 08-deploy-contracts-LwLe-vTP.js} | 2 +- assets/08-metadata-spam-help-DNjsN4I2.js | 1 + assets/08-metadata-spam-help-K-jqvWgl.js | 1 - ...zSqYlx.js => 08-metadata-tips-BWKhXYEP.js} | 2 +- ...Po2Lx2i.js => 08-send-erc1155-CEo8sbIR.js} | 2 +- ...BTp7FaY.js => 08-send-erc1155-D40DRcgC.js} | 2 +- ...D.js => 08-signature-encoding-BKrZASNJ.js} | 2 +- ...9-nested-transaction-batching-DTwnnEId.js} | 2 +- ...=> 09-send-batch-transactions-BVNHKRSw.js} | 2 +- ...=> 09-send-batch-transactions-HYpwCDES.js} | 2 +- ...i-1Oq8sjqr.js => 09-wallet-ui-CGHbjSvR.js} | 2 +- ...YW.js => 10-building-backends-D00hi_S2.js} | 2 +- ...9z.js => 10-building-backends-DQ9yfDdo.js} | 2 +- ...V98_VsT.js => 10-guest-module-D-VbStHJ.js} | 2 +- ...kBWSb.js => 11-wallet-context-Db3u6bux.js} | 2 +- ...RZoK.js => 12-contract-audits-CcNg0PwU.js} | 2 +- ...> 800-manage-metadata-builder-Ciwcw9Ff.js} | 2 +- ...dGrid-DjVwb6Sh.js => CardGrid-BJuHU1g_.js} | 2 +- ...Group-CR9eTTBb.js => TabGroup-4xq3SqP5.js} | 2 +- .../{Video-DFRdAWy3.js => Video-D4tib21T.js} | 2 +- assets/android-B2fnIbxK.js | 1 - assets/android-DDSjtPZP.js | 1 + assets/{api-CZx4snhI.js => api-CwTDnCMS.js} | 2 +- ...uilder-QULSxq77.js => builder-CWYB5K28.js} | 2 +- ...-Cp2robJr.js => chain-support-2kKPeZZF.js} | 4 +- ...acts-CjOFm7ZO.js => contracts-CuvV6GHJ.js} | 2 +- ...iscord-yy34ze5o.js => discord-4SQogg4W.js} | 2 +- ...fyLlYIQ.js => embedded-wallet-DLKt2LEl.js} | 2 +- ...-tank-Bz1VtCNO.js => gas-tank-5jwCKQMo.js} | 2 +- ...fz2S2Lp.js => getting-started-tGSASkus.js} | 2 +- assets/guides-C1WMslv2.js | 1 - assets/guides-CiPrz4EV.js | 1 + assets/iOS-B2fnIbxK.js | 1 - assets/iOS-DDSjtPZP.js | 1 + assets/index-Bzi1W8NW.js | 12 + .../{index-BXOUdEEZ.js => index-CchMGs7j.js} | 32 +- assets/index-zvSSGYfB.js | 9 - ...ndexer-BNcqlYvI.js => indexer-C1rQqZDC.js} | 2 +- ...ootbox-DEQa4lNC.js => lootbox-C0r6ta1l.js} | 2 +- ...ce-18DLP9fD.js => marketplace-BCSYig1O.js} | 2 +- ...s-g41MwN17.js => marketplaces-C1EU8FD8.js} | 2 +- ...adata-DXObJIIe.js => metadata-CvpA6pFm.js} | 2 +- ...{minter-BSa-53Qv.js => minter-Bc741e3c.js} | 2 +- ...t-pBVHcwgz.js => nft-checkout-DSVuiQyl.js} | 2 +- ...y-BGPM7sbe.js => node-gateway--cb6A7Vi.js} | 2 +- ...y-B-vKmDRu.js => node-gateway-AlJTIeLe.js} | 2 +- assets/nodejs-B2fnIbxK.js | 1 - assets/nodejs-DDSjtPZP.js | 1 + ...nramps-D-Axs59U.js => onramps-B3y5y17T.js} | 2 +- ...rview-CbmKF1dG.js => overview-BZmNqhcT.js} | 2 +- ...rview-C941poV6.js => overview-CxmFtSTo.js} | 2 +- ...rview-vh5QMYbM.js => overview-DxEtoZKX.js} | 2 +- ...b2Gi.js => project-management-n9UsdPJr.js} | 2 +- ...SsJ5Y3.js => project-settings-BpxUzeh_.js} | 2 +- assets/reactnative-B2fnIbxK.js | 1 - assets/reactnative-DDSjtPZP.js | 1 + ...elayer-B--Nth41.js => relayer-DGbh8fZY.js} | 2 +- assets/{sdk-D2N61MiJ.js => sdk-CwKciPAs.js} | 2 +- assets/sequence-kit-B2fnIbxK.js | 1 - assets/sequence-kit-DDSjtPZP.js | 1 + assets/solutions-B5Q3HaVY.js | 1 - assets/solutions-DXL3d8Fv.js | 1 + .../{stack-DCajA93o.js => stack-sys9QMOG.js} | 2 +- assets/style-8q7c0hl7.css | 1 + assets/style-DmXq5Yy3.css | 1 - ...upport-DbNzZ5Kc.js => support-1XM_K1Pq.js} | 2 +- ...s => template-embedded-wallet-B6sqiArS.js} | 2 +- assets/template-marketplace-api-B-xCZnWo.js | 88 --- assets/template-marketplace-api-CMxsDKvn.js | 618 ++++++++++++++++++ ...VROtl18.js => token-directory-u4Sdw-ST.js} | 2 +- assets/typescript-B2fnIbxK.js | 1 - assets/typescript-DDSjtPZP.js | 1 + assets/unity-B2fnIbxK.js | 1 - assets/unity-DDSjtPZP.js | 1 + ...de-CueCJCPV.js => unity-guide-txEESrUd.js} | 2 +- assets/unreal-B2fnIbxK.js | 1 - ...{wallet-GrjrteyT.js => wallet-mf2x4_rS.js} | 2 +- ...ks-Cc2jbMjt.js => wallet-sdks-Co1VpyGC.js} | 2 +- ...de-CueCJCPV.js => webgl-guide-txEESrUd.js} | 2 +- ...js => white-label-marketplace-CCd3phEf.js} | 2 +- builder/index.html | 6 +- guides/discord/index.html | 6 +- guides/index.html | 6 +- guides/lootbox/index.html | 6 +- .../02-building-relaying-server/index.html | 6 +- .../index.html | 6 +- .../template-embedded-wallet/index.html | 6 +- .../template-marketplace-api/index.html | 562 +++++++++++++++- guides/unity-guide/index.html | 6 +- guides/webgl-guide/index.html | 6 +- index.html | 21 +- sdk/android/index.html | 8 +- sdk/go/overview/index.html | 8 +- sdk/iOS/index.html | 8 +- sdk/index.html | 8 +- sdk/nodejs/index.html | 8 +- sdk/reactnative/index.html | 8 +- sdk/sequence-kit/01-overview/index.html | 8 +- .../02-getting-started/index.html | 8 +- sdk/sequence-kit/03-configuration/index.html | 8 +- sdk/sequence-kit/04-checkout/index.html | 8 +- .../05-custom-connectors/index.html | 8 +- sdk/sequence-kit/index.html | 8 +- sdk/typescript/01-overview/index.html | 8 +- sdk/typescript/02-quickstart/index.html | 8 +- .../03-guides/01-connect-wallet/index.html | 8 +- .../03-guides/02-auth-address/index.html | 8 +- .../03-guides/03-sign-message/index.html | 8 +- .../03-guides/04-session-keys/index.html | 8 +- .../03-guides/05-send-transaction/index.html | 8 +- .../03-guides/06-send-erc20/index.html | 8 +- .../03-guides/07-send-erc721/index.html | 8 +- .../03-guides/08-send-erc1155/index.html | 8 +- .../09-send-batch-transactions/index.html | 8 +- .../03-guides/10-building-backends/index.html | 8 +- sdk/typescript/04-platforms/index.html | 8 +- sdk/typescript/05-fiat-on-ramps/index.html | 8 +- sdk/typescript/06-key-management/index.html | 8 +- .../connectors/01-overview/index.html | 8 +- .../connectors/02-sequence-kit/index.html | 8 +- sdk/typescript/connectors/03-wagmi/index.html | 8 +- .../connectors/04-rainbow-kit/index.html | 8 +- .../connectors/05-web3-onboard/index.html | 8 +- .../connectors/06-web3-react-v6/index.html | 8 +- .../connectors/07-web3modal/index.html | 8 +- sdk/typescript/connectors/08-FAQ/index.html | 8 +- sdk/typescript/index.html | 8 +- sdk/unity/01-overview/index.html | 8 +- sdk/unity/02-installation/index.html | 8 +- sdk/unity/03-setup/index.html | 8 +- sdk/unity/04-authentication/index.html | 8 +- sdk/unity/05-write-to-blockchain/index.html | 8 +- sdk/unity/06-read-from-blockchain/index.html | 8 +- sdk/unity/07-sign-messages/index.html | 8 +- sdk/unity/08-deploy-contracts/index.html | 8 +- sdk/unity/09-wallet-ui/index.html | 8 +- sdk/unity/Advanced/01-introduction/index.html | 8 +- sdk/unity/Advanced/02-wallets/index.html | 8 +- sdk/unity/Advanced/03-clients/index.html | 8 +- sdk/unity/Advanced/04-transfers/index.html | 8 +- sdk/unity/Advanced/05-contracts/index.html | 8 +- sdk/unity/Advanced/06-tokens/index.html | 8 +- sdk/unity/index.html | 8 +- sdk/unreal/01-overview/index.html | 32 + sdk/unreal/02-installation/index.html | 30 + sdk/unreal/03-setup/index.html | 40 ++ sdk/unreal/04-authentication/index.html | 85 +++ sdk/unreal/05-api-integration/index.html | 69 ++ sdk/unreal/06-packaging/index.html | 52 ++ sdk/unreal/index.html | 21 - solutions/builder/contracts/index.html | 6 +- solutions/builder/gas-tank/index.html | 6 +- solutions/builder/getting-started/index.html | 6 +- solutions/builder/indexer/index.html | 6 +- solutions/builder/marketplaces/index.html | 6 +- solutions/builder/node-gateway/index.html | 6 +- solutions/builder/overview/index.html | 6 +- .../builder/project-management/index.html | 6 +- solutions/builder/project-settings/index.html | 6 +- solutions/builder/wallet-sdks/index.html | 6 +- .../01-deploy-an-item-collection/index.html | 6 +- .../02-deploy-ERC20-currency/index.html | 8 +- .../800-manage-metadata-builder/index.html | 6 +- solutions/index.html | 6 +- solutions/indexer/01-overview/index.html | 6 +- solutions/indexer/02-installation/index.html | 8 +- solutions/indexer/03-tokens-api/index.html | 6 +- .../04-wallet-transaction-history/index.html | 6 +- solutions/indexer/05-unique-tokens/index.html | 6 +- .../06-token-contract-history/index.html | 6 +- .../07-native-network-balance/index.html | 6 +- .../indexer/08-metadata-spam-help/index.html | 6 +- solutions/marketplaces/index.html | 6 +- .../orderbook/01-overview/index.html | 6 +- .../orderbook/02-quickstart/index.html | 6 +- .../orderbook/03-get-top-orders/index.html | 6 +- .../orderbook/04-get-orderbook/index.html | 6 +- .../05-get-user-activities/index.html | 6 +- .../06-orderbook-transactions/index.html | 8 +- .../white-label-marketplace/index.html | 6 +- solutions/minter/index.html | 6 +- solutions/nft-checkout/index.html | 6 +- solutions/onramps/index.html | 6 +- .../onramps/01-fiat-on-ramps/index.html | 6 +- .../chain-support/index.html | 8 +- .../node-gateway/index.html | 6 +- .../wallet-contracts/01-why/index.html | 6 +- .../02-universal-deployer/index.html | 6 +- .../03-wallet-factory/index.html | 6 +- .../04-wallet-configuration/index.html | 6 +- .../05-modules-and-updates/index.html | 6 +- .../06-main-module-upgradeable/index.html | 6 +- .../07-transaction-encoding/index.html | 6 +- .../08-signature-encoding/index.html | 6 +- .../09-nested-transaction-batching/index.html | 6 +- .../10-guest-module/index.html | 6 +- .../11-wallet-context/index.html | 6 +- .../12-contract-audits/index.html | 6 +- .../embedded-wallet/01-overview/index.html | 6 +- .../embedded-wallet/02-quickstart/index.html | 6 +- .../03-manage-sessions/index.html | 6 +- .../embedded-wallet/04-use-wallets/index.html | 6 +- .../embedded-wallet/05-validation/index.html | 6 +- .../06-transaction-receipts/index.html | 6 +- solutions/wallets/overview/index.html | 6 +- .../universal-wallet/01-overview/index.html | 6 +- .../universal-wallet/02-quickstart/index.html | 6 +- .../04-sequence-kit/index.html | 6 +- .../universal-wallet/05-platforms/index.html | 6 +- .../06-fiat-on-ramps/index.html | 6 +- .../07-key-management/index.html | 6 +- .../examples/01-connect-wallet/index.html | 6 +- .../examples/02-auth-address/index.html | 6 +- .../examples/03-sign-message/index.html | 13 +- .../examples/04-session-keys/index.html | 6 +- .../examples/05-send-transaction/index.html | 6 +- .../examples/06-send-erc20/index.html | 6 +- .../examples/07-send-erc721/index.html | 6 +- .../examples/08-send-erc1155/index.html | 6 +- .../09-send-batch-transactions/index.html | 6 +- .../examples/10-building-backends/index.html | 6 +- stack/index.html | 6 +- support/index.html | 6 +- support/token-directory/index.html | 6 +- wallet/index.html | 6 +- 335 files changed, 2370 insertions(+), 834 deletions(-) delete mode 100644 .vocs/search-index-8a46a6d9.json create mode 100644 .vocs/search-index-e1175f97.json rename assets/{01-connect-wallet-F3vgRTiZ.js => 01-connect-wallet-Cl599MBF.js} (99%) rename assets/{01-connect-wallet-U8b6QA2h.js => 01-connect-wallet-Dt-ODA_X.js} (99%) rename assets/{01-deploy-an-item-collection-C0Yi1LxS.js => 01-deploy-an-item-collection-DjzMitxr.js} (99%) rename assets/{01-fiat-on-ramps-BpEZsM2H.js => 01-fiat-on-ramps-CrXvbg7X.js} (96%) rename assets/{01-introduction-D5-dZ9eG.js => 01-introduction-ORpy4spW.js} (98%) rename assets/{01-overview-DwlQ2Vdp.js => 01-overview-BOMJT4H0.js} (98%) rename assets/{01-overview-GJz_L1Q9.js => 01-overview-BOVk6_Iv.js} (97%) rename assets/{01-overview-DwQx-QaI.js => 01-overview-CKoYw6iK.js} (95%) rename assets/{01-overview-CDm9TwOo.js => 01-overview-CRNWUnhq.js} (97%) rename assets/{01-overview-B8wB59mz.js => 01-overview-CfZ4B1C6.js} (95%) rename assets/{01-overview-BwLa55n_.js => 01-overview-CgIU_uUT.js} (95%) create mode 100644 assets/01-overview-Cgd_Khl-.js rename assets/{01-overview-sg4qQZti.js => 01-overview-Cm_eirZl.js} (98%) rename assets/{01-overview-B8XR8Ef0.js => 01-overview-DTc0-0Lg.js} (97%) rename assets/{01-overview-RdxEHBz8.js => 01-overview-YB_pmFKQ.js} (99%) rename assets/{01-why-8FHUeyRc.js => 01-why-DDLn-B4w.js} (98%) rename assets/{02-auth-address-63x9gD_B.js => 02-auth-address-CyNhiG2u.js} (99%) rename assets/{02-auth-address-DQDRmsCg.js => 02-auth-address-ckDlTMpv.js} (99%) rename assets/{02-building-relaying-server-BHX8B3BM.js => 02-building-relaying-server-tgIgg2w9.js} (99%) rename assets/{02-deploy-ERC20-currency-CDfzyuDC.js => 02-deploy-ERC20-currency-CJ-woKNT.js} (98%) rename assets/{02-getting-started-6k5WNKDy.js => 02-getting-started-DCEjiXfb.js} (99%) rename assets/{02-installation-ZfcWzbCM.js => 02-installation-CLf2UaDN.js} (99%) rename assets/{02-installation-CmHFe_OD.js => 02-installation-CObAK7UR.js} (99%) rename assets/{02-installation-BZrO8R1J.js => 02-installation-D0o4nSPs.js} (97%) create mode 100644 assets/02-installation-D1RIPokR.js rename assets/{02-quickstart-zdv7eQeo.js => 02-quickstart-4ykaiCFW.js} (99%) rename assets/{02-quickstart-DgD-oWhr.js => 02-quickstart-CVOVMm3N.js} (99%) rename assets/{02-quickstart-xxXaq7Pn.js => 02-quickstart-Dm3tzuR_.js} (98%) rename assets/{02-quickstart-BTnDCOWm.js => 02-quickstart-jegcKRXn.js} (99%) rename assets/{04-sequence-kit-B3RjIvG6.js => 02-sequence-kit-BMZSpUXz.js} (97%) rename assets/{02-universal-deployer-DEID6HbY.js => 02-universal-deployer-V3lr9jJW.js} (99%) rename assets/{02-wallets-hufkdzO-.js => 02-wallets-BAOFMlWK.js} (99%) rename assets/{03-clients-BliPa7eW.js => 03-clients-BfjUnR5d.js} (99%) rename assets/{03-configuration-CeJRPMlZ.js => 03-configuration-cZDC_IKQ.js} (99%) rename assets/{03-fetch-tokens-D0WixhHL.js => 03-fetch-tokens-DDkmBp8W.js} (99%) rename assets/{03-get-top-orders-CuGlHPhA.js => 03-get-top-orders-BE-_zj92.js} (99%) rename assets/{03-manage-sessions-Bed6WGXa.js => 03-manage-sessions-BJA3--RF.js} (99%) rename assets/{03-mint-collectibles-serverless-DpSz7LyU.js => 03-mint-collectibles-serverless-DFmuqk8W.js} (99%) create mode 100644 assets/03-setup-B2DzkyEa.js rename assets/{03-setup-CAEHu-rE.js => 03-setup-DVqc6pPn.js} (97%) rename assets/{03-sign-message-Cn5G7lSc.js => 03-sign-message-Br_SQVC8.js} (90%) rename assets/{03-sign-message-67OGb3o1.js => 03-sign-message-C06zBfE6.js} (98%) rename assets/{03-tokens-api-BvCSK8V2.js => 03-tokens-api-Wt-yZ8iO.js} (75%) rename assets/{03-wagmi-BsRrkGCX.js => 03-wagmi-v91jUr-a.js} (99%) rename assets/{03-wallet-factory-QCZEaeZR.js => 03-wallet-factory-BQXRuWg_.js} (99%) create mode 100644 assets/04-authentication-BECPZ5yD.js rename assets/{04-authentication-Ca9mV0ES.js => 04-authentication-Y1sSErYo.js} (99%) rename assets/{04-checkout-DpZFyP0s.js => 04-checkout-BNYQ2nrw.js} (99%) rename assets/{04-get-orderbook-BX14J_v-.js => 04-get-orderbook-Dy7YyvsP.js} (99%) rename assets/{05-platforms-489X8Wat.js => 04-platforms-glPWmaN4.js} (97%) rename assets/{04-rainbow-kit-CjV-OizB.js => 04-rainbow-kit-v4LsgczZ.js} (99%) rename assets/{02-sequence-kit-DYfKAfv7.js => 04-sequence-kit-Dm2NVQTH.js} (97%) rename assets/{04-session-keys-CqvnoKIS.js => 04-session-keys-BH_jcGg9.js} (99%) rename assets/{04-session-keys-1izP5hvN.js => 04-session-keys-DwD4iACN.js} (99%) rename assets/{04-transaction-history-BmURpOpl.js => 04-transaction-history-wUrcEF9g.js} (99%) rename assets/{04-transfers-DTgmCvbU.js => 04-transfers-5gM1Zbvb.js} (96%) rename assets/{04-use-wallets-CpqAdL-1.js => 04-use-wallets-Bbt6hEyu.js} (99%) rename assets/{04-wallet-configuration-DjII-_lO.js => 04-wallet-configuration-Bs_jtNnf.js} (99%) rename assets/{04-wallet-transaction-history-BvCSK8V2.js => 04-wallet-transaction-history-Wt-yZ8iO.js} (75%) create mode 100644 assets/05-api-integration-t2lA4Nv8.js rename assets/{05-contracts-Dj4y6dqe.js => 05-contracts-DVDi4fXD.js} (99%) rename assets/{05-custom-connectors-D8GReivT.js => 05-custom-connectors-Bd4W47Wz.js} (99%) rename assets/{05-fiat-on-ramps-DuzzmOgZ.js => 05-fiat-on-ramps-CbgCC_Wz.js} (96%) rename assets/{05-get-user-activities-BjO2VX3q.js => 05-get-user-activities-DkfpsBW4.js} (99%) rename assets/{05-modules-and-updates-9zZOEDsr.js => 05-modules-and-updates-BZ-acVOs.js} (99%) rename assets/{04-platforms-L-ay0RTN.js => 05-platforms-BswQsHZ_.js} (97%) rename assets/{05-send-transaction-B0MAcXDd.js => 05-send-transaction-B-8IwTpV.js} (98%) rename assets/{05-send-transaction-ZzzFqw8C.js => 05-send-transaction-BLPMy39e.js} (98%) rename assets/{05-unique-tokens-B6aws6XW.js => 05-unique-tokens-BBoAQBrC.js} (99%) rename assets/{05-unique-tokens-BvCSK8V2.js => 05-unique-tokens-Wt-yZ8iO.js} (75%) rename assets/{05-validation-DVqBruW7.js => 05-validation-D6nAm2G3.js} (99%) rename assets/{05-web3-onboard-CVawCyHG.js => 05-web3-onboard-B4-r8qZO.js} (99%) rename assets/{05-write-to-blockchain-VezosJxu.js => 05-write-to-blockchain-DCBcfOKI.js} (99%) rename assets/{06-fiat-on-ramps-CSS08Lfl.js => 06-fiat-on-ramps-l3lSSIK6.js} (96%) rename assets/{07-key-management-DUbSlzfo.js => 06-key-management-BRNfS8bX.js} (98%) rename assets/{06-main-module-upgradeable-DY1GyouI.js => 06-main-module-upgradeable-CwFDq2xw.js} (90%) rename assets/{06-orderbook-transactions-zkP6j4hb.js => 06-orderbook-transactions-BeUtSFOp.js} (99%) create mode 100644 assets/06-packaging-DAGyVEwf.js rename assets/{06-read-from-blockchain-73BXkFTH.js => 06-read-from-blockchain-DEKqDbrP.js} (97%) rename assets/{06-send-erc20-C1l4rkxy.js => 06-send-erc20-BNf9h1bS.js} (99%) rename assets/{06-send-erc20-XQSQj5Q8.js => 06-send-erc20-C1S52TMX.js} (99%) rename assets/{06-token-contract-history-BvCSK8V2.js => 06-token-contract-history-Wt-yZ8iO.js} (75%) rename assets/{06-tokens-DFX9gYW5.js => 06-tokens-DONJK441.js} (98%) rename assets/{06-transaction-receipts-xKZlIoFb.js => 06-transaction-receipts-CFVZYVqh.js} (99%) rename assets/{06-transation-history-token-contract-CwEE_wwj.js => 06-transation-history-token-contract-Dkspf4AH.js} (99%) rename assets/{06-web3-react-v6-CaY2pWoi.js => 06-web3-react-v6-i-_P8qDI.js} (99%) rename assets/{06-key-management-CAyKVybh.js => 07-key-management-DHKyIl2b.js} (98%) rename assets/{07-native-network-balance-CvWur8gO.js => 07-native-network-balance-BS__wyoA.js} (99%) rename assets/{07-native-network-balance-Dnqc7LbR.js => 07-native-network-balance-Cdn-RXjO.js} (99%) rename assets/{07-send-erc721-98x3-w4n.js => 07-send-erc721-CsiV7Skt.js} (99%) rename assets/{07-send-erc721-YLiMwPp8.js => 07-send-erc721-DoTiPEJu.js} (99%) rename assets/{07-sign-messages-Cv6lHzv8.js => 07-sign-messages-D8skSErh.js} (97%) rename assets/{07-transaction-encoding-E5kTMKdL.js => 07-transaction-encoding-NtDrHizW.js} (89%) rename assets/{07-web3modal-B_MxMDHV.js => 07-web3modal-D_QEo_Cm.js} (96%) rename assets/{08-FAQ-DepmDNn0.js => 08-FAQ-BHeUJunZ.js} (99%) rename assets/{08-deploy-contracts-DAG8jP33.js => 08-deploy-contracts-LwLe-vTP.js} (98%) create mode 100644 assets/08-metadata-spam-help-DNjsN4I2.js delete mode 100644 assets/08-metadata-spam-help-K-jqvWgl.js rename assets/{08-metadata-tips-BIzSqYlx.js => 08-metadata-tips-BWKhXYEP.js} (97%) rename assets/{08-send-erc1155-BPo2Lx2i.js => 08-send-erc1155-CEo8sbIR.js} (99%) rename assets/{08-send-erc1155-CBTp7FaY.js => 08-send-erc1155-D40DRcgC.js} (99%) rename assets/{08-signature-encoding-BpIeLhrD.js => 08-signature-encoding-BKrZASNJ.js} (99%) rename assets/{09-nested-transaction-batching-u-DqvEw7.js => 09-nested-transaction-batching-DTwnnEId.js} (89%) rename assets/{09-send-batch-transactions-Do5fZWQa.js => 09-send-batch-transactions-BVNHKRSw.js} (99%) rename assets/{09-send-batch-transactions-YOyMzkjj.js => 09-send-batch-transactions-HYpwCDES.js} (99%) rename assets/{09-wallet-ui-1Oq8sjqr.js => 09-wallet-ui-CGHbjSvR.js} (99%) rename assets/{10-building-backends-Co9Q_2YW.js => 10-building-backends-D00hi_S2.js} (98%) rename assets/{10-building-backends-3_wpH69z.js => 10-building-backends-DQ9yfDdo.js} (98%) rename assets/{10-guest-module-1V98_VsT.js => 10-guest-module-D-VbStHJ.js} (90%) rename assets/{11-wallet-context-CqBkBWSb.js => 11-wallet-context-Db3u6bux.js} (98%) rename assets/{12-contract-audits-kUOBRZoK.js => 12-contract-audits-CcNg0PwU.js} (97%) rename assets/{800-manage-metadata-builder-Dm6XG6DA.js => 800-manage-metadata-builder-Ciwcw9Ff.js} (99%) rename assets/{CardGrid-DjVwb6Sh.js => CardGrid-BJuHU1g_.js} (87%) rename assets/{TabGroup-CR9eTTBb.js => TabGroup-4xq3SqP5.js} (89%) rename assets/{Video-DFRdAWy3.js => Video-D4tib21T.js} (90%) delete mode 100644 assets/android-B2fnIbxK.js create mode 100644 assets/android-DDSjtPZP.js rename assets/{api-CZx4snhI.js => api-CwTDnCMS.js} (85%) rename assets/{builder-QULSxq77.js => builder-CWYB5K28.js} (88%) rename assets/{chain-support-Cp2robJr.js => chain-support-2kKPeZZF.js} (81%) rename assets/{contracts-CjOFm7ZO.js => contracts-CuvV6GHJ.js} (97%) rename assets/{discord-yy34ze5o.js => discord-4SQogg4W.js} (93%) rename assets/{embedded-wallet-BfyLlYIQ.js => embedded-wallet-DLKt2LEl.js} (95%) rename assets/{gas-tank-Bz1VtCNO.js => gas-tank-5jwCKQMo.js} (95%) rename assets/{getting-started-Mfz2S2Lp.js => getting-started-tGSASkus.js} (98%) delete mode 100644 assets/guides-C1WMslv2.js create mode 100644 assets/guides-CiPrz4EV.js delete mode 100644 assets/iOS-B2fnIbxK.js create mode 100644 assets/iOS-DDSjtPZP.js create mode 100644 assets/index-Bzi1W8NW.js rename assets/{index-BXOUdEEZ.js => index-CchMGs7j.js} (68%) delete mode 100644 assets/index-zvSSGYfB.js rename assets/{indexer-BNcqlYvI.js => indexer-C1rQqZDC.js} (95%) rename assets/{lootbox-DEQa4lNC.js => lootbox-C0r6ta1l.js} (96%) rename assets/{marketplace-18DLP9fD.js => marketplace-BCSYig1O.js} (94%) rename assets/{marketplaces-g41MwN17.js => marketplaces-C1EU8FD8.js} (94%) rename assets/{metadata-DXObJIIe.js => metadata-CvpA6pFm.js} (99%) rename assets/{minter-BSa-53Qv.js => minter-Bc741e3c.js} (94%) rename assets/{nft-checkout-pBVHcwgz.js => nft-checkout-DSVuiQyl.js} (92%) rename assets/{node-gateway-BGPM7sbe.js => node-gateway--cb6A7Vi.js} (99%) rename assets/{node-gateway-B-vKmDRu.js => node-gateway-AlJTIeLe.js} (95%) delete mode 100644 assets/nodejs-B2fnIbxK.js create mode 100644 assets/nodejs-DDSjtPZP.js rename assets/{onramps-D-Axs59U.js => onramps-B3y5y17T.js} (91%) rename assets/{overview-CbmKF1dG.js => overview-BZmNqhcT.js} (96%) rename assets/{overview-C941poV6.js => overview-CxmFtSTo.js} (95%) rename assets/{overview-vh5QMYbM.js => overview-DxEtoZKX.js} (88%) rename assets/{project-management-DsGrb2Gi.js => project-management-n9UsdPJr.js} (95%) rename assets/{project-settings-CMSsJ5Y3.js => project-settings-BpxUzeh_.js} (99%) delete mode 100644 assets/reactnative-B2fnIbxK.js create mode 100644 assets/reactnative-DDSjtPZP.js rename assets/{relayer-B--Nth41.js => relayer-DGbh8fZY.js} (97%) rename assets/{sdk-D2N61MiJ.js => sdk-CwKciPAs.js} (85%) delete mode 100644 assets/sequence-kit-B2fnIbxK.js create mode 100644 assets/sequence-kit-DDSjtPZP.js delete mode 100644 assets/solutions-B5Q3HaVY.js create mode 100644 assets/solutions-DXL3d8Fv.js rename assets/{stack-DCajA93o.js => stack-sys9QMOG.js} (89%) create mode 100644 assets/style-8q7c0hl7.css delete mode 100644 assets/style-DmXq5Yy3.css rename assets/{support-DbNzZ5Kc.js => support-1XM_K1Pq.js} (95%) rename assets/{template-embedded-wallet-BbebFEN_.js => template-embedded-wallet-B6sqiArS.js} (99%) delete mode 100644 assets/template-marketplace-api-B-xCZnWo.js create mode 100644 assets/template-marketplace-api-CMxsDKvn.js rename assets/{token-directory-DVROtl18.js => token-directory-u4Sdw-ST.js} (99%) delete mode 100644 assets/typescript-B2fnIbxK.js create mode 100644 assets/typescript-DDSjtPZP.js delete mode 100644 assets/unity-B2fnIbxK.js create mode 100644 assets/unity-DDSjtPZP.js rename assets/{unity-guide-CueCJCPV.js => unity-guide-txEESrUd.js} (96%) delete mode 100644 assets/unreal-B2fnIbxK.js rename assets/{wallet-GrjrteyT.js => wallet-mf2x4_rS.js} (89%) rename assets/{wallet-sdks-Cc2jbMjt.js => wallet-sdks-Co1VpyGC.js} (97%) rename assets/{webgl-guide-CueCJCPV.js => webgl-guide-txEESrUd.js} (96%) rename assets/{white-label-marketplace-DxCxhU5v.js => white-label-marketplace-CCd3phEf.js} (94%) create mode 100644 sdk/unreal/01-overview/index.html create mode 100644 sdk/unreal/02-installation/index.html create mode 100644 sdk/unreal/03-setup/index.html create mode 100644 sdk/unreal/04-authentication/index.html create mode 100644 sdk/unreal/05-api-integration/index.html create mode 100644 sdk/unreal/06-packaging/index.html delete mode 100644 sdk/unreal/index.html diff --git a/.vocs/search-index-8a46a6d9.json b/.vocs/search-index-8a46a6d9.json deleted file mode 100644 index a3e555463d..0000000000 --- a/.vocs/search-index-8a46a6d9.json +++ /dev/null @@ -1 +0,0 @@ -{"documentCount":420,"nextId":420,"documentIds":{"0":"docs/pages/builder.mdx#builder-intro","1":"docs/pages/stack.mdx#stack","2":"docs/pages/support.mdx#support","3":"docs/pages/wallet.mdx#wallet","4":"docs/pages/api/marketplace.mdx#marketplace-api","5":"docs/pages/api/metadata.mdx#metadata-api","6":"docs/pages/api/metadata.mdx#creating-collections-tokens-and-managing-metadata","7":"docs/pages/api/metadata.mdx#pricing--usage","8":"docs/pages/api/relayer.mdx#relayer-api","9":"docs/pages/guides/discord.mdx#deploy-an-in-game-collectibles-contract","10":"docs/pages/guides/discord.mdx#query-contract-details","11":"docs/pages/guides/lootbox.mdx#deploy-an-in-game-collectibles-contract","12":"docs/pages/guides/lootbox.mdx#query-contract-details","13":"docs/pages/guides/lootbox.mdx#fetch-token-balances-of-a-wallet","14":"docs/pages/guides/unity-guide.mdx#integrate-sequencekit-with-waas","15":"docs/pages/guides/unity-guide.mdx#deploy-a-collectibles-contract","16":"docs/pages/guides/unity-guide.mdx#deploy-a-remote-minter","17":"docs/pages/guides/unity-guide.mdx#mint-in-game-achievement-tokens","18":"docs/pages/guides/unity-guide.mdx#burn-in-game-achievement-tokens","19":"docs/pages/guides/unity-guide.mdx#integrate-an-embedded-marketplace","20":"docs/pages/guides/webgl-guide.mdx#integrate-sequencekit-with-waas","21":"docs/pages/guides/webgl-guide.mdx#deploy-a-collectibles-contract","22":"docs/pages/guides/webgl-guide.mdx#deploy-a-remote-minter","23":"docs/pages/guides/webgl-guide.mdx#mint-in-game-achievement-tokens","24":"docs/pages/guides/webgl-guide.mdx#burn-in-game-achievement-tokens","25":"docs/pages/guides/webgl-guide.mdx#integrate-an-embedded-marketplace","26":"docs/pages/solutions/minter.mdx#mint-tokens-using-builder-manually","27":"docs/pages/solutions/minter.mdx#deploy-a-serverless-minter-on-cloudflare-workers","28":"docs/pages/solutions/nft-checkout.mdx#integrate-nft-checkout-on-web-coming-soon","29":"docs/pages/solutions/onramps.mdx#integrate-onramp-on-web","30":"docs/pages/api/indexer/01-overview.mdx#indexer","31":"docs/pages/api/indexer/01-overview.mdx#supported-networks--endpoints","32":"docs/pages/api/indexer/01-overview.mdx#getting-started","33":"docs/pages/api/indexer/08-metadata-tips.mdx#metadata-tips--notes-on-spam","34":"docs/pages/guides/templates/02-building-relaying-server.mdx#building-a-relaying-server","35":"docs/pages/guides/templates/02-building-relaying-server.mdx#nodejs-server","36":"docs/pages/guides/templates/02-building-relaying-server.mdx#nodejs-server-with-gas-sponsoring-using-sequence-builder","37":"docs/pages/guides/templates/02-building-relaying-server.mdx#a-create-dapp","38":"docs/pages/guides/templates/02-building-relaying-server.mdx#b-new-dapp","39":"docs/pages/guides/templates/02-building-relaying-server.mdx#c1-gas-tank","40":"docs/pages/guides/templates/02-building-relaying-server.mdx#c2-add-gas","41":"docs/pages/guides/templates/02-building-relaying-server.mdx#c3-add-sponsored-address","42":"docs/pages/guides/templates/02-building-relaying-server.mdx#parallel-transactions","43":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#mint-collectibles-using-a-gasless-serverless-relayer","44":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test","45":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#deploy-test","46":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#2-deploy-sponsor-and-update-metadata-for-an-erc1155-contract-with-builder","47":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#update-metadata","48":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#contract-sponsoring","49":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#3-use-ethauthproof-to-prevent-eoa-ddos","50":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#add-cloudflare-environment-variables","51":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#implement-window-object-in-wrangler-template","52":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#testing-the-deploy","53":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#using-the-ethauthproof-viewer-dapp","54":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#4-mint-a-collectible-to-wallet","55":"docs/pages/guides/templates/template-embedded-wallet.mdx#quickstart","56":"docs/pages/guides/templates/template-embedded-wallet.mdx#try-a-demo","57":"docs/pages/guides/templates/template-embedded-wallet.mdx#template","58":"docs/pages/guides/templates/template-embedded-wallet.mdx#getting-started","59":"docs/pages/guides/templates/template-embedded-wallet.mdx#sdk-installation","60":"docs/pages/guides/templates/template-embedded-wallet.mdx#project-setup","61":"docs/pages/guides/templates/template-embedded-wallet.mdx#library-setup","62":"docs/pages/guides/templates/template-marketplace-api.mdx#custom-marketplace","63":"docs/pages/guides/templates/template-marketplace-api.mdx#minting","64":"docs/pages/guides/templates/template-marketplace-api.mdx#blockchain-queries","65":"docs/pages/guides/templates/template-marketplace-api.mdx#request-creation","66":"docs/pages/sdk/go/overview.mdx#go","67":"docs/pages/sdk/go/overview.mdx#ethkit","68":"docs/pages/sdk/sequence-kit/01-overview.mdx#sequencekit-sdk","69":"docs/pages/sdk/sequence-kit/01-overview.mdx#key-features","70":"docs/pages/sdk/sequence-kit/01-overview.mdx#next-steps","71":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#getting-started-with-sequence-kit","72":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#installing-sequence-kit-packages","73":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#setting-up-the-kit-wrapper","74":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#setting-up-the-embedded-wallet-wrapper","75":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#triggering-the-connect-modal","76":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#invoking-the-embedded-wallet-modal","77":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#react-example","78":"docs/pages/sdk/sequence-kit/03-configuration.mdx#configuration-options","79":"docs/pages/sdk/sequence-kit/03-configuration.mdx#available-options","80":"docs/pages/sdk/sequence-kit/03-configuration.mdx#defaulttheme","81":"docs/pages/sdk/sequence-kit/03-configuration.mdx#position","82":"docs/pages/sdk/sequence-kit/03-configuration.mdx#sign-in-modal-configuration-signin","83":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinlogourl","84":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinprojectname","85":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinshowemailinput","86":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinsocialauthoptions","87":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinwalletauthoptions","88":"docs/pages/sdk/sequence-kit/03-configuration.mdx#displayedassets","89":"docs/pages/sdk/sequence-kit/04-checkout.mdx#overview","90":"docs/pages/sdk/sequence-kit/04-checkout.mdx#integration","91":"docs/pages/sdk/sequence-kit/04-checkout.mdx#opening-the-checkout-modal","92":"docs/pages/sdk/sequence-kit/04-checkout.mdx#configuring-the-checkout-modal","93":"docs/pages/sdk/sequence-kit/04-checkout.mdx#crypto-checkout-configuration-cryptocheckout","94":"docs/pages/sdk/sequence-kit/04-checkout.mdx#order-summary-configuration-ordersummaryitems","95":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#custom-connectors-in-sequence-kit","96":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#creating-a-custom-connector","97":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#using-custom-connectors","98":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#share-your-custom-connectors","99":"docs/pages/sdk/typescript/01-overview.mdx#wallet","100":"docs/pages/sdk/typescript/02-quickstart.mdx#quickstart","101":"docs/pages/sdk/typescript/02-quickstart.mdx#try-a-demo","102":"docs/pages/sdk/typescript/02-quickstart.mdx#template","103":"docs/pages/sdk/typescript/02-quickstart.mdx#install-for-existing-project","104":"docs/pages/sdk/typescript/02-quickstart.mdx#cdn-distribution-as-native-js","105":"docs/pages/sdk/typescript/04-platforms.mdx#platforms","106":"docs/pages/sdk/typescript/04-platforms.mdx#web-wallet","107":"docs/pages/sdk/typescript/04-platforms.mdx#mobile-wallet","108":"docs/pages/sdk/typescript/04-platforms.mdx#browser-extension-wallet","109":"docs/pages/sdk/typescript/05-fiat-on-ramps.mdx#fiat-on-ramps","110":"docs/pages/sdk/typescript/06-key-management.mdx#key-management","111":"docs/pages/sdk/typescript/06-key-management.mdx#social-login-wallets","112":"docs/pages/sdk/typescript/06-key-management.mdx#session-keys","113":"docs/pages/sdk/typescript/06-key-management.mdx#guard-key","114":"docs/pages/sdk/typescript/06-key-management.mdx#torus-key","115":"docs/pages/sdk/unity/01-overview.mdx#introduction","116":"docs/pages/sdk/unity/01-overview.mdx#requirements","117":"docs/pages/sdk/unity/02-installation.mdx#installation","118":"docs/pages/sdk/unity/02-installation.mdx#package-manager---recommended","119":"docs/pages/sdk/unity/02-installation.mdx#samples","120":"docs/pages/sdk/unity/02-installation.mdx#manual","121":"docs/pages/sdk/unity/03-setup.mdx#setup","122":"docs/pages/sdk/unity/04-authentication.mdx#authentication","123":"docs/pages/sdk/unity/04-authentication.mdx#1-email-sign-in","124":"docs/pages/sdk/unity/04-authentication.mdx#2-social-sign-in","125":"docs/pages/sdk/unity/04-authentication.mdx#ios","126":"docs/pages/sdk/unity/04-authentication.mdx#macos","127":"docs/pages/sdk/unity/04-authentication.mdx#pc","128":"docs/pages/sdk/unity/04-authentication.mdx#android","129":"docs/pages/sdk/unity/04-authentication.mdx#webgl","130":"docs/pages/sdk/unity/04-authentication.mdx#connecting-with-waas","131":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#write-to-blockchain","132":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#rawtransaction","133":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#senderc20","134":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#complex-erc20-interactions","135":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#senderc721","136":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#complex-erc721-interactions","137":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#senderc1155","138":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#complex-erc1155-interactions","139":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#delayedencode","140":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#batch-transactions","141":"docs/pages/sdk/unity/06-read-from-blockchain.mdx#read-from-blockchain","142":"docs/pages/sdk/unity/07-sign-messages.mdx#sign-messages","143":"docs/pages/sdk/unity/08-deploy-contracts.mdx#contract-deployment","144":"docs/pages/sdk/unity/09-wallet-ui.mdx#wallet-ui","145":"docs/pages/sdk/unity/09-wallet-ui.mdx#how-it-works","146":"docs/pages/sdk/unity/09-wallet-ui.mdx#ui-customizability","147":"docs/pages/sdk/unity/09-wallet-ui.mdx#color-scheme-manager","148":"docs/pages/sdk/unity/09-wallet-ui.mdx#more-customization-tools-coming-soon","149":"docs/pages/solutions/indexer/02-installation.mdx#indexer-installation","150":"docs/pages/solutions/indexer/02-installation.mdx#installation","151":"docs/pages/solutions/indexer/02-installation.mdx#web--nodejs-installation","152":"docs/pages/solutions/indexer/02-installation.mdx#go-installation","153":"docs/pages/solutions/indexer/02-installation.mdx#unity-or-unreal-installation","154":"docs/pages/solutions/technical-references/node-gateway.mdx#node-gateway","155":"docs/pages/solutions/technical-references/node-gateway.mdx#give-it-a-try","156":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connect-wallet","157":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-your-dapp-with-0xsequence","158":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#wallet-login-and-connect-options","159":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#app","160":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#appprotocol","161":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#origin","162":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#expiry","163":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#authorize","164":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#authorizenonce","165":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#refresh","166":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#keepwalletopened","167":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#askforemail","168":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingstheme","169":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsbannerurl","170":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingssigninwith","171":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingssigninwithemail","172":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingssigninoptions","173":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsincludedpaymentproviders","174":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsdefaultfundingcurrency","175":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsdefaultpurchaseamount","176":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingslockfundingcurrencytodefault","177":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-your-dapp-with-web3js-or-ethersjs","178":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-to-any-ethereum-dapp-with-the-sequence-wallet-chrome-extension","179":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-via-walletconnect","180":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#authenticate-users-with-message-signature","181":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#ask-for-the-wallet-address","182":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#authenticate-wallet","183":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#authenticate-wallet-server-side","184":"docs/pages/sdk/typescript/03-guides/03-sign-message.mdx#todo---replace-with-code-groups-from-vocs","185":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#no-wallet-confirmation-signatures","186":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#session-keys","187":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#using-session-keys-with-sequence","188":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#1-initialize-sequence-wallet-and-connect","189":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#2-generate-a-session-key","190":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#3-sign-authorization-message","191":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#4-verify-authorization-signature","192":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#5-sign-message-with-session-key","193":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#6-verify-session-signature","194":"docs/pages/sdk/typescript/03-guides/05-send-transaction.mdx#sending-transactions","195":"docs/pages/sdk/typescript/03-guides/06-send-erc20.mdx#sending-erc-20-tokens","196":"docs/pages/sdk/typescript/03-guides/07-send-erc721.mdx#sending-erc-721-nft-tokens","197":"docs/pages/sdk/typescript/03-guides/08-send-erc1155.mdx#sending-erc-1155-collectible-tokens","198":"docs/pages/sdk/typescript/03-guides/09-send-batch-transactions.mdx#sending-a-batch-of-transactions","199":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#building-backends-with-sequence","200":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#nodejs","201":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#go","202":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#ethkit","203":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#support-for-other-backend-languages","204":"docs/pages/sdk/typescript/connectors/01-overview.mdx#wallet-connectors","205":"docs/pages/sdk/typescript/connectors/02-sequence-kit.mdx#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","206":"docs/pages/sdk/typescript/connectors/02-sequence-kit.mdx#key-features","207":"docs/pages/sdk/typescript/connectors/02-sequence-kit.mdx#next-steps","208":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#using-wagmi","209":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#installation","210":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#usage","211":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#parameters","212":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#chains","213":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#optionsconnect-optional","214":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#optionsdefaultnetwork-optional","215":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#using-older-versions-of-wagmi--012x","216":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#using-nextjs","217":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#examples","218":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#using-rainbowkit","219":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#installation","220":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#usage","221":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#parameters","222":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#chains","223":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#connect-optional","224":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#defaultnetwork-optional","225":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#using-nextjs","226":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#using-older-versions-of-wagmi--012x","227":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#examples","228":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#using-web3-onboard","229":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#installation","230":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#usage","231":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#parameters","232":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#network-optional","233":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#appname-optional","234":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#example","235":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#using-web3-react-v6","236":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#installation","237":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#usage","238":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#initialization","239":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#activationdeactivation","240":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#options","241":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#chainid","242":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#appname-optional","243":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#example","244":"docs/pages/sdk/typescript/connectors/07-web3modal.mdx#using-web3modal","245":"docs/pages/sdk/typescript/connectors/07-web3modal.mdx#usage","246":"docs/pages/sdk/typescript/connectors/07-web3modal.mdx#example","247":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#nextjs","248":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs","249":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-pages-directory-all-versions-of-nextjs","250":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-app-directory-version-13-and-above-only","251":"docs/pages/sdk/unity/Advanced/01-introduction.mdx#advanced---introduction","252":"docs/pages/sdk/unity/Advanced/01-introduction.mdx#important-components","253":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#wallets","254":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#1-ethwallet","255":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#2-waastowalletadapter","256":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#methods","257":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#getaddress","258":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransaction","259":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransactionandwaitforreceipt","260":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransactionbatch","261":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransactionbatchandwaitforreceipts","262":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#signmessage","263":"docs/pages/sdk/unity/Advanced/03-clients.mdx#clients","264":"docs/pages/sdk/unity/Advanced/03-clients.mdx#methods","265":"docs/pages/sdk/unity/Advanced/03-clients.mdx#balanceat","266":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blockbynumber","267":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blockbyhash","268":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blocknumber","269":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blockrange","270":"docs/pages/sdk/unity/Advanced/03-clients.mdx#chainid","271":"docs/pages/sdk/unity/Advanced/03-clients.mdx#codeat","272":"docs/pages/sdk/unity/Advanced/03-clients.mdx#estimategas","273":"docs/pages/sdk/unity/Advanced/03-clients.mdx#feehistory","274":"docs/pages/sdk/unity/Advanced/03-clients.mdx#networkid","275":"docs/pages/sdk/unity/Advanced/03-clients.mdx#nonceat","276":"docs/pages/sdk/unity/Advanced/03-clients.mdx#sendrawtransaction","277":"docs/pages/sdk/unity/Advanced/03-clients.mdx#suggestgasprice","278":"docs/pages/sdk/unity/Advanced/03-clients.mdx#suggestgastipcap","279":"docs/pages/sdk/unity/Advanced/03-clients.mdx#transactionbyhash","280":"docs/pages/sdk/unity/Advanced/03-clients.mdx#transactioncount","281":"docs/pages/sdk/unity/Advanced/03-clients.mdx#waitfortransactionreceipt","282":"docs/pages/sdk/unity/Advanced/04-transfers.mdx#transfers","283":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#contracts","284":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#calling-smart-contract-functions","285":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#understanding-data-type-mappings","286":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#querying-contracts","287":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#deploying-contracts","288":"docs/pages/sdk/unity/Advanced/06-tokens.mdx#tokens","289":"docs/pages/sdk/unity/Advanced/06-tokens.mdx#bonus-ownable","290":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#how-to-manage-item-metadata-in-sequence-builder","291":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#introduction","292":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-1-prepare-your-token-images-and-metadata","293":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-2-set-up-on-pinatacloud","294":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-3-upload-your-metadata-files","295":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-4-get-the-folder-url","296":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-5-set-up-on-sequence-builder","297":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-6-deploy-your-contract","298":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-7-move-to-contract-details","299":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-8-update-contract-attributes","300":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-9-set-the-base-metadata-uri","301":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-10-minting-time","302":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-11-finalize-and-admire","303":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-12-updating-metadata","304":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#quickstart","305":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#try-a-demo","306":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#template","307":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#try-an-api-call","308":"docs/pages/solutions/payments/onramps/01-fiat-on-ramps.mdx#fiat-on-ramps","309":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#why-smart-contracts-wallets","310":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#externally-owned-accounts","311":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#pros","312":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#popular-examples","313":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#smart-contract-wallets","314":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#pros-1","315":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#examples","316":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#modules--wallet-update","317":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#wallet-implementation","318":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#_updateconfiguration","319":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#parameters","320":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#reading-current-implementation","321":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#wallet-configuration-validation","322":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#_isvalidimage","323":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#parameters-1","324":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#return-values","325":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#mainmoduleupgradeable","326":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#updateimagehash","327":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#parameters-2","328":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#first-configuration-update","329":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#delegatecall-false","330":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#revertonerror-true","331":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#to-wallet","332":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#value-ethersconstantszero","333":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#gaslimit-ethersconstantszero","334":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#subsequent-configuration-updates","335":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#retrieving-the-current-configuration","336":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#retrieving-the-wallet-configuration","337":"docs/pages/solutions/technical-references/wallet-contracts/06-main-module-upgradeable.mdx#mainmoduleupgradeable--configuration-migration","338":"docs/pages/solutions/technical-references/wallet-contracts/07-transaction-encoding.mdx#transaction-encoding","339":"docs/pages/solutions/technical-references/wallet-contracts/08-signature-encoding.mdx#signature-encoding","340":"docs/pages/solutions/technical-references/wallet-contracts/08-signature-encoding.mdx#erc-191-ethereum-signed-data","341":"docs/pages/solutions/technical-references/wallet-contracts/08-signature-encoding.mdx#erc-712-structured-data-signatures","342":"docs/pages/solutions/technical-references/wallet-contracts/08-signature-encoding.mdx#verification","343":"docs/pages/solutions/technical-references/wallet-contracts/09-nested-transaction-batching.mdx#nested-transaction-batching","344":"docs/pages/solutions/technical-references/wallet-contracts/10-guest-module.mdx#guestmodule-and-on-demand-deployment","345":"docs/pages/solutions/technical-references/wallet-contracts/11-wallet-context.mdx#wallet-context","346":"docs/pages/solutions/technical-references/wallet-contracts/12-contract-audits.mdx#contract-audits","347":"docs/pages/solutions/technical-references/wallet-contracts/12-contract-audits.mdx#quantstamp","348":"docs/pages/solutions/technical-references/wallet-contracts/12-contract-audits.mdx#consensys-diligence","349":"docs/pages/solutions/technical-references/wallet-contracts/12-contract-audits.mdx#zellic","350":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#sequence-embedded-wallet","351":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#architecture-overview","352":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#signer-1-sequence-auth","353":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#signer-2-sequence-guard","354":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#threat-model","355":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#quickstart","356":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#try-a-demo","357":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#template","358":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#getting-started","359":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#sdk-installation","360":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#project-setup","361":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#library-setup","362":"docs/pages/solutions/wallets/embedded-wallet/03-manage-sessions.mdx#session-management","363":"docs/pages/solutions/wallets/embedded-wallet/03-manage-sessions.mdx#sign-in--sign-up","364":"docs/pages/solutions/wallets/embedded-wallet/03-manage-sessions.mdx#email-sign-in--sign-up","365":"docs/pages/solutions/wallets/embedded-wallet/03-manage-sessions.mdx#google--apple-auth","366":"docs/pages/solutions/wallets/embedded-wallet/03-manage-sessions.mdx#list-sessions","367":"docs/pages/solutions/wallets/embedded-wallet/03-manage-sessions.mdx#close-session","368":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#validation","369":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#email-login-one-time-code","370":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#social-login","371":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#validation-status","372":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#trigger-session-validation","373":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#onvalidationrequired-callback","374":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#listen-for-session-validations","375":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#automatic-session-validation","376":"docs/pages/solutions/wallets/embedded-wallet/06-transaction-receipts.mdx#transaction-receipts","377":"docs/pages/solutions/wallets/embedded-wallet/06-transaction-receipts.mdx#successful-transaction-response","378":"docs/pages/solutions/wallets/embedded-wallet/06-transaction-receipts.mdx#failed-transaction-response","379":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#quickstart","380":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#try-a-demo","381":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#template","382":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#install","383":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#cdn-distribution-as-native-js","384":"docs/pages/solutions/wallets/universal-wallet/04-sequence-kit.mdx#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","385":"docs/pages/solutions/wallets/universal-wallet/04-sequence-kit.mdx#key-features","386":"docs/pages/solutions/wallets/universal-wallet/04-sequence-kit.mdx#next-steps","387":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#platforms","388":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#web-wallet","389":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#mobile-wallet","390":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#browser-extension-wallet","391":"docs/pages/solutions/wallets/universal-wallet/06-fiat-on-ramps.mdx#fiat-on-ramps","392":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#key-management","393":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#social-login-wallets","394":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#session-keys","395":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#guard-key","396":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#torus-key","397":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#authenticate-users-with-message-signature","398":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#ask-for-the-wallet-address","399":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#authenticate-wallet","400":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#authenticate-wallet-server-side","401":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#no-wallet-confirmation-signatures","402":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#session-keys","403":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#using-session-keys-with-sequence","404":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#1-initialize-sequence-wallet-and-connect","405":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#2-generate-a-session-key","406":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#3-sign-authorization-message","407":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#4-verify-authorization-signature","408":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#5-sign-message-with-session-key","409":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#6-verify-session-signature","410":"docs/pages/solutions/wallets/universal-wallet/examples/05-send-transaction.mdx#sending-transactions","411":"docs/pages/solutions/wallets/universal-wallet/examples/06-send-erc20.mdx#sending-erc-20-tokens","412":"docs/pages/solutions/wallets/universal-wallet/examples/07-send-erc721.mdx#sending-erc-721-nft-tokens","413":"docs/pages/solutions/wallets/universal-wallet/examples/08-send-erc1155.mdx#sending-erc-1155-collectible-tokens","414":"docs/pages/solutions/wallets/universal-wallet/examples/09-send-batch-transactions.mdx#sending-a-batch-of-transactions","415":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#building-backends-with-sequence","416":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#nodejs","417":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#go","418":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#ethkit","419":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#support-for-other-backend-languages"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,1],"1":[1,1,2],"2":[1,1,58],"3":[1,1,2],"4":[2,1,39],"5":[2,1,42],"6":[6,2,142],"7":[3,2,22],"8":[2,1,114],"9":[6,1,1],"10":[3,1,1],"11":[6,1,1],"12":[3,1,1],"13":[6,1,41],"14":[4,1,1],"15":[4,1,1],"16":[4,1,1],"17":[5,1,1],"18":[5,1,1],"19":[4,1,1],"20":[4,1,1],"21":[4,1,1],"22":[4,1,1],"23":[5,1,1],"24":[5,1,1],"25":[4,1,1],"26":[5,1,1],"27":[7,1,1],"28":[8,1,1],"29":[4,1,1],"30":[1,1,129],"31":[4,1,11],"32":[2,1,47],"33":[6,1,144],"34":[4,1,37],"35":[2,4,226],"36":[8,4,62],"37":[3,11,1],"38":[3,11,1],"39":[4,11,1],"40":[4,11,1],"41":[5,11,131],"42":[2,4,121],"43":[7,1,114],"44":[11,7,123],"45":[2,18,37],"46":[12,7,171],"47":[2,20,25],"48":[2,20,12],"49":[7,7,212],"50":[4,15,47],"51":[6,15,39],"52":[3,15,67],"53":[5,15,94],"54":[6,7,175],"55":[1,1,1],"56":[3,1,11],"57":[1,1,11],"58":[2,1,1],"59":[2,3,32],"60":[2,3,41],"61":[2,3,62],"62":[2,1,55],"63":[1,2,22],"64":[2,2,177],"65":[2,2,1],"66":[1,1,33],"67":[1,1,36],"68":[2,1,40],"69":[2,2,78],"70":[2,1,33],"71":[5,1,23],"72":[4,5,48],"73":[5,1,83],"74":[6,1,72],"75":[4,1,46],"76":[5,1,26],"77":[2,1,18],"78":[2,1,38],"79":[2,1,1],"80":[1,2,40],"81":[1,2,22],"82":[6,2,12],"83":[2,8,12],"84":[2,8,12],"85":[2,8,14],"86":[2,8,48],"87":[2,8,48],"88":[1,2,39],"89":[1,1,11],"90":[1,1,46],"91":[4,1,30],"92":[4,1,12],"93":[5,5,39],"94":[5,5,22],"95":[5,1,30],"96":[4,5,89],"97":[3,1,85],"98":[4,1,34],"99":[1,1,71],"100":[1,1,1],"101":[3,1,11],"102":[1,1,9],"103":[4,1,87],"104":[5,6,32],"105":[1,1,1],"106":[2,1,27],"107":[2,1,48],"108":[3,1,5],"109":[3,1,65],"110":[2,1,69],"111":[3,2,76],"112":[2,5,32],"113":[2,5,45],"114":[2,5,102],"115":[1,1,67],"116":[1,1,48],"117":[1,1,1],"118":[3,1,95],"119":[1,4,145],"120":[1,1,137],"121":[1,1,102],"122":[1,1,112],"123":[4,1,46],"124":[4,1,70],"125":[1,5,41],"126":[1,5,43],"127":[1,5,5],"128":[1,5,155],"129":[1,5,3],"130":[3,1,91],"131":[3,1,104],"132":[1,3,103],"133":[1,3,87],"134":[3,4,94],"135":[1,3,53],"136":[3,4,92],"137":[1,3,76],"138":[3,4,93],"139":[1,3,190],"140":[2,3,119],"141":[3,1,54],"142":[2,1,76],"143":[2,1,139],"144":[2,1,93],"145":[3,2,12],"146":[2,2,25],"147":[3,3,118],"148":[5,3,46],"149":[2,1,54],"150":[1,2,106],"151":[4,2,72],"152":[2,2,62],"153":[4,2,16],"154":[2,1,46],"155":[4,2,76],"156":[2,1,145],"157":[5,2,205],"158":[5,2,26],"159":[1,6,22],"160":[1,6,8],"161":[1,6,23],"162":[1,6,20],"163":[1,6,19],"164":[1,6,23],"165":[1,6,17],"166":[1,6,20],"167":[1,6,26],"168":[2,6,21],"169":[2,6,38],"170":[2,6,36],"171":[2,6,29],"172":[2,6,28],"173":[2,6,27],"174":[2,6,31],"175":[2,6,27],"176":[2,6,40],"177":[8,2,25],"178":[11,2,5],"179":[3,2,106],"180":[5,1,1],"181":[5,5,17],"182":[2,5,121],"183":[4,5,139],"184":[7,1,1],"185":[4,1,28],"186":[2,1,95],"187":[5,1,1],"188":[6,6,17],"189":[5,6,33],"190":[4,6,28],"191":[4,6,35],"192":[6,6,25],"193":[4,6,49],"194":[2,1,42],"195":[4,1,72],"196":[5,1,85],"197":[5,1,93],"198":[5,1,82],"199":[4,1,1],"200":[1,5,22],"201":[1,5,33],"202":[1,5,36],"203":[5,5,72],"204":[2,1,105],"205":[9,1,40],"206":[2,9,78],"207":[2,1,33],"208":[2,1,34],"209":[1,2,32],"210":[1,2,38],"211":[1,2,1],"212":[1,3,18],"213":[4,3,29],"214":[4,3,27],"215":[11,2,37],"216":[2,2,51],"217":[1,2,34],"218":[2,1,38],"219":[1,2,17],"220":[1,2,38],"221":[1,2,1],"222":[1,3,18],"223":[3,3,28],"224":[3,3,27],"225":[2,2,54],"226":[11,2,37],"227":[1,2,23],"228":[3,1,39],"229":[1,3,17],"230":[1,3,21],"231":[1,3,1],"232":[3,4,12],"233":[3,4,20],"234":[1,3,14],"235":[4,1,26],"236":[1,4,16],"237":[1,4,1],"238":[1,5,31],"239":[2,5,33],"240":[1,4,1],"241":[1,5,15],"242":[3,5,16],"243":[1,4,11],"244":[2,1,33],"245":[1,2,23],"246":[1,2,18],"247":[1,1,1],"248":[14,2,75],"249":[21,2,88],"250":[21,2,159],"251":[2,1,90],"252":[2,2,24],"253":[1,1,21],"254":[2,1,29],"255":[2,1,41],"256":[1,1,15],"257":[1,2,9],"258":[1,2,17],"259":[1,2,20],"260":[1,2,62],"261":[1,2,64],"262":[1,2,48],"263":[1,1,64],"264":[1,1,50],"265":[1,2,73],"266":[1,2,31],"267":[1,2,17],"268":[1,2,18],"269":[1,2,39],"270":[1,2,19],"271":[1,2,37],"272":[1,2,18],"273":[1,2,35],"274":[1,2,20],"275":[1,2,38],"276":[1,2,19],"277":[1,2,14],"278":[1,2,17],"279":[1,2,14],"280":[1,2,20],"281":[1,2,20],"282":[1,1,51],"283":[1,1,79],"284":[4,1,107],"285":[4,1,64],"286":[2,1,69],"287":[2,1,24],"288":[1,1,107],"289":[2,1,47],"290":[8,1,1],"291":[1,8,25],"292":[8,8,61],"293":[7,8,54],"294":[6,8,31],"295":[6,8,25],"296":[7,8,25],"297":[5,8,20],"298":[6,8,17],"299":[5,8,58],"300":[7,8,66],"301":[4,8,65],"302":[5,8,28],"303":[4,8,62],"304":[1,1,1],"305":[3,1,12],"306":[1,1,11],"307":[4,1,41],"308":[3,1,63],"309":[5,1,35],"310":[3,5,20],"311":[1,7,11],"312":[2,7,5],"313":[3,5,46],"314":[1,6,23],"315":[1,5,5],"316":[4,1,40],"317":[2,4,25],"318":[2,6,44],"319":[2,7,42],"320":[3,6,53],"321":[3,4,58],"322":[2,7,42],"323":[2,8,9],"324":[3,8,12],"325":[1,4,18],"326":[1,5,20],"327":[2,6,88],"328":[3,4,82],"329":[2,7,31],"330":[2,7,32],"331":[2,7,19],"332":[4,7,20],"333":[4,7,73],"334":[3,6,37],"335":[4,6,35],"336":[4,9,49],"337":[4,1,1],"338":[2,1,1],"339":[2,1,17],"340":[5,2,72],"341":[5,2,96],"342":[1,2,87],"343":[3,1,1],"344":[5,1,1],"345":[2,1,20],"346":[2,1,30],"347":[1,2,7],"348":[2,2,3],"349":[1,2,3],"350":[3,1,57],"351":[2,3,38],"352":[4,5,111],"353":[4,5,116],"354":[2,3,86],"355":[1,1,1],"356":[3,1,11],"357":[1,1,11],"358":[2,1,1],"359":[2,3,32],"360":[2,3,41],"361":[2,3,63],"362":[2,1,40],"363":[3,2,102],"364":[4,5,107],"365":[3,5,173],"366":[2,2,94],"367":[2,2,51],"368":[1,1,17],"369":[6,2,29],"370":[2,2,68],"371":[2,1,34],"372":[3,2,49],"373":[2,5,60],"374":[4,2,35],"375":[3,1,51],"376":[2,1,21],"377":[3,2,124],"378":[3,2,133],"379":[1,1,1],"380":[3,1,11],"381":[1,1,9],"382":[1,1,68],"383":[5,3,32],"384":[9,1,40],"385":[2,9,78],"386":[2,1,33],"387":[1,1,1],"388":[2,1,27],"389":[2,1,48],"390":[3,1,5],"391":[3,1,65],"392":[2,1,69],"393":[3,2,76],"394":[2,5,32],"395":[2,5,45],"396":[2,5,102],"397":[5,1,1],"398":[5,5,17],"399":[2,5,121],"400":[4,5,139],"401":[4,1,28],"402":[2,1,95],"403":[5,1,1],"404":[6,6,17],"405":[5,6,33],"406":[4,6,28],"407":[4,6,35],"408":[6,6,25],"409":[4,6,49],"410":[2,1,42],"411":[4,1,72],"412":[5,1,85],"413":[5,1,93],"414":[5,1,82],"415":[4,1,1],"416":[1,5,22],"417":[1,5,33],"418":[1,5,36],"419":[5,5,72]},"averageFieldLength":[2.9761904761904763,3.2404761904761914,44.647619047619045],"storedFields":{"0":{"href":"/builder#builder-intro","html":"","isPage":true,"text":"","title":"builder intro","titles":[]},"1":{"href":"/stack#stack","html":"\n

Intro ..............

","isPage":true,"text":"\nIntro ..............","title":"Stack","titles":[]},"2":{"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

\"Sequence

\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.\n\nStart talking to support today","title":"Support","titles":[]},"3":{"href":"/wallet#wallet","html":"\n

sadfasdf

","isPage":true,"text":"\nsadfasdf","title":"Wallet","titles":[]},"4":{"href":"/api/marketplace#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.

\n

#TODO add example from solutions

","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.\n#TODO add example from solutions","title":"Marketplace API","titles":[]},"5":{"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. Sign up to grab your\nAPI access key before following the steps below.\n","title":"Metadata API","titles":[]},"6":{"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

    \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
    • set metadataField (assetType) to one of the following\n
        \n
      • image
      • \n
      • animation_url
      • \n
      • audio
      • \n
      • video
      • \n
      \n
    • \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\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"]},"7":{"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"]},"8":{"href":"/api/relayer#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.

","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.","title":"Relayer API","titles":[]},"9":{"href":"/guides/discord#deploy-an-in-game-collectibles-contract","html":"\n","isPage":true,"text":"\n","title":"Deploy an in-game collectibles contract","titles":[null]},"10":{"href":"/guides/discord#query-contract-details","html":"\n","isPage":false,"text":"\n","title":"Query contract details","titles":[null]},"11":{"href":"/guides/lootbox#deploy-an-in-game-collectibles-contract","html":"\n","isPage":true,"text":"\n","title":"Deploy an in-game collectibles contract","titles":[null]},"12":{"href":"/guides/lootbox#query-contract-details","html":"\n","isPage":false,"text":"\n","title":"Query contract details","titles":[null]},"13":{"href":"/guides/lootbox#fetch-token-balances-of-a-wallet","html":"\n
    \n
  1. \n

    Builder Signup & Project Creation

    \n
  2. \n
  3. \n

    Access Key Management

    \n
  4. \n
  5. \n

    Deploy a Contract

    \n
  6. \n
  7. \n

    Sponsor contract gas

    \n
  8. \n
  9. \n

    Deploying a cloudflare worker

    \n
  10. \n
  11. \n

    Generating AI Prompts & Images

    \n
  12. \n
  13. \n

    Uploading metadata to Sequence Metadata Service

    \n
  14. \n
  15. \n

    Minting Onchain with Relayer

    \n
  16. \n
  17. \n

    iframe-to-Webapp Communication

    \n
  18. \n
  19. \n

    Secure your cloudflare relayer from outside requests

    \n
  20. \n
","isPage":false,"text":"\n\n\nBuilder Signup & Project Creation\n\n\nAccess Key Management\n\n\nDeploy a Contract\n\n\nSponsor contract gas\n\n\nDeploying a cloudflare worker\n\n\nGenerating AI Prompts & Images\n\n\nUploading metadata to Sequence Metadata Service\n\n\nMinting Onchain with Relayer\n\n\niframe-to-Webapp Communication\n\n\nSecure your cloudflare relayer from outside requests\n\n","title":"Fetch token balances of a wallet","titles":[null]},"14":{"href":"/guides/unity-guide#integrate-sequencekit-with-waas","html":"\n","isPage":true,"text":"\n","title":"Integrate SequenceKit with WaaS","titles":[null]},"15":{"href":"/guides/unity-guide#deploy-a-collectibles-contract","html":"\n","isPage":false,"text":"\n","title":"Deploy a collectibles contract","titles":[null]},"16":{"href":"/guides/unity-guide#deploy-a-remote-minter","html":"\n","isPage":false,"text":"\n","title":"Deploy a remote minter","titles":[null]},"17":{"href":"/guides/unity-guide#mint-in-game-achievement-tokens","html":"\n","isPage":false,"text":"\n","title":"Mint in-game achievement tokens","titles":[null]},"18":{"href":"/guides/unity-guide#burn-in-game-achievement-tokens","html":"\n","isPage":false,"text":"\n","title":"Burn in-game achievement tokens","titles":[null]},"19":{"href":"/guides/unity-guide#integrate-an-embedded-marketplace","html":"\n","isPage":false,"text":"\n","title":"Integrate an embedded marketplace","titles":[null]},"20":{"href":"/guides/webgl-guide#integrate-sequencekit-with-waas","html":"\n","isPage":true,"text":"\n","title":"Integrate SequenceKit with WaaS","titles":[null]},"21":{"href":"/guides/webgl-guide#deploy-a-collectibles-contract","html":"\n","isPage":false,"text":"\n","title":"Deploy a collectibles contract","titles":[null]},"22":{"href":"/guides/webgl-guide#deploy-a-remote-minter","html":"\n","isPage":false,"text":"\n","title":"Deploy a remote minter","titles":[null]},"23":{"href":"/guides/webgl-guide#mint-in-game-achievement-tokens","html":"\n","isPage":false,"text":"\n","title":"Mint in-game achievement tokens","titles":[null]},"24":{"href":"/guides/webgl-guide#burn-in-game-achievement-tokens","html":"\n","isPage":false,"text":"\n","title":"Burn in-game achievement tokens","titles":[null]},"25":{"href":"/guides/webgl-guide#integrate-an-embedded-marketplace","html":"\n","isPage":false,"text":"\n","title":"Integrate an embedded marketplace","titles":[null]},"26":{"href":"/solutions/minter#mint-tokens-using-builder-manually","html":"\n","isPage":true,"text":"\n","title":"Mint tokens using Builder manually","titles":[null]},"27":{"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]},"28":{"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]},"29":{"href":"/solutions/onramps#integrate-onramp-on-web","html":"\n","isPage":true,"text":"\n","title":"Integrate onramp on web","titles":[null]},"30":{"href":"/api/indexer/01-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\n

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

\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.\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\nThe Sequence Indexer is a modular web3 service that makes it easy to query blockchain token\nand NFT data from Ethereum-compatible networks. The Indexer automatically indexes every\nERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.\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":[]},"31":{"href":"/api/indexer/01-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"]},"32":{"href":"/api/indexer/01-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\n","title":"Getting Started","titles":["Indexer"]},"33":{"href":"/api/indexer/08-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":[]},"34":{"href":"/guides/templates/02-building-relaying-server#building-a-relaying-server","html":"\n

With Sequence, you can create a smart contract wallet your server can use to dispatch transactions for your users\nwithout you having to be worried about transaction speed, throughput and re-orgs.

\n

:::info Sequentual Transactions\nBy default, Sequence transactions will be executed sequentially.\n:::

\n","isPage":true,"text":"\nWith Sequence, you can create a smart contract wallet your server can use to dispatch transactions for your users\nwithout you having to be worried about transaction speed, throughput and re-orgs.\n:::info Sequentual Transactions\nBy default, Sequence transactions will be executed sequentially.\n:::\n","title":"Building a Relaying Server","titles":[]},"35":{"href":"/guides/templates/02-building-relaying-server#nodejs-server","html":"\n

Your server will need an EOA wallet that will be able to sign messages. It will be the owner of your server-side Sequence\nwallet which will be used to dispatch transactions.

\n

This Sequence wallet should have the correct ownership at your contract level, not the EOA.\nAlso, the Sequence wallet should be sufficiently funded in order to pay fees needed by the relayer to dispatch your transactions.

\n

Using this approach - versus the next section (with sponsoring) - includes the ability to pay for gas in any available currency by our relayer (e.g. 'MATIC', 'DAI', 'USDC', 'WETH').

\n
import { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n  signer: walletEOA,\n  projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1:     Ethereum Mainnet\n// - 137:   Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137);\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n  "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n  senderAddress,\n  recipientAddress,\n  id,\n]);\n \nconst txn = {\n  to: erc721TokenAddress,\n  data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n  console.log(`Unexpected status: ${txnReceipt.status}`);\n}
\n

You can also enforce a specific way to pay for gas fees, or the openning of a specific Sequence wallet.

\n
import { Session } from '@0xsequence/auth'\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider)\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n  signer: walletEOA,\n  projectAccessKey: '<access_key>'\n  // OPTIONAL: Multiple wallets could be found for the same EOA\n  // to enforce a specific wallet you can use the following callback\n  selectWallet: async (wallets: string[]) => {\n    const found = wallets.find(w => w === EXPECTED_WALLET_ADDRESS)\n    if (!found) throw Error('wallet not found')\n    // Returning the wallet address will make the session use it\n    // returning undefined will make the session create a new wallet\n    return found\n  }\n})\n \nconst signer = session.account.getSigner(137, {\n  // OPTIONAL: You can also enforce a specific way to pay for gas fees\n  // if not provided the sdk will select one for you\n  selectFee: async (\n    _txs: any,\n    options: FeeOption[]\n  ) => {\n    // Find the option to pay with native tokens\n    const found = options.find(o => !o.token.contractAddress)\n    if (!found) throw Error('fee option not found')\n    return found\n  }\n})\n \n// Initialize the contract\nconst usdc = new ethers.Contract(\n  '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC on Polygon\n  ERC_20_ABI,\n  signer\n)\n \n// Send the transaction\nconst txnResponse = await usdc.transfer(recipient, 1)\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n  console.log(`Unexpected status: ${txnReceipt.status}`)\n}
\n

:::caution Triggers migration

\n

Openning a session may trigger a migration of your Sequence wallet to a new version, this could be v1 to v2 or v2 to future versions.

\n

Migration is a one-way process, once your wallet is migrated it cannot be reverted to a previous version.

\n

To catch any unwanted migration, you can use the onMigration callback.\n:::

\n","isPage":false,"text":"\nYour server will need an EOA wallet that will be able to sign messages. It will be the owner of your server-side Sequence\nwallet which will be used to dispatch transactions.\nThis Sequence wallet should have the correct ownership at your contract level, not the EOA.\nAlso, the Sequence wallet should be sufficiently funded in order to pay fees needed by the relayer to dispatch your transactions.\nUsing this approach - versus the next section (with sponsoring) - includes the ability to pay for gas in any available currency by our relayer (e.g. 'MATIC', 'DAI', 'USDC', 'WETH').\nimport { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1: Ethereum Mainnet\n// - 137: Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137);\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n senderAddress,\n recipientAddress,\n id,\n]);\n \nconst txn = {\n to: erc721TokenAddress,\n data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n console.log(`Unexpected status: ${txnReceipt.status}`);\n}\nYou can also enforce a specific way to pay for gas fees, or the openning of a specific Sequence wallet.\nimport { Session } from '@0xsequence/auth'\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider)\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: '<access_key>'\n // OPTIONAL: Multiple wallets could be found for the same EOA\n // to enforce a specific wallet you can use the following callback\n selectWallet: async (wallets: string[]) => {\n const found = wallets.find(w => w === EXPECTED_WALLET_ADDRESS)\n if (!found) throw Error('wallet not found')\n // Returning the wallet address will make the session use it\n // returning undefined will make the session create a new wallet\n return found\n }\n})\n \nconst signer = session.account.getSigner(137, {\n // OPTIONAL: You can also enforce a specific way to pay for gas fees\n // if not provided the sdk will select one for you\n selectFee: async (\n _txs: any,\n options: FeeOption[]\n ) => {\n // Find the option to pay with native tokens\n const found = options.find(o => !o.token.contractAddress)\n if (!found) throw Error('fee option not found')\n return found\n }\n})\n \n// Initialize the contract\nconst usdc = new ethers.Contract(\n '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC on Polygon\n ERC_20_ABI,\n signer\n)\n \n// Send the transaction\nconst txnResponse = await usdc.transfer(recipient, 1)\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n console.log(`Unexpected status: ${txnReceipt.status}`)\n}\n:::caution Triggers migration\nOpenning a session may trigger a migration of your Sequence wallet to a new version, this could be v1 to v2 or v2 to future versions.\nMigration is a one-way process, once your wallet is migrated it cannot be reverted to a previous version.\nTo catch any unwanted migration, you can use the onMigration callback.\n:::\n","title":"Nodejs Server","titles":["Building a Relaying Server"]},"36":{"href":"/guides/templates/02-building-relaying-server#nodejs-server-with-gas-sponsoring-using-sequence-builder","html":"\n

If you want to have your transactions sponsored & paid for with a credit card, you can follow the below steps before beginning your code, at the following link: https://sequence.build/

\n

By sponsoring your transaction, you can now just send the transaction without a fee object and not have to fund the smart contract wallet before relaying any transactions.

\n

:::info Already Deployed Contract\nFor this example, we assume you have a smart contract deployed with a contract address to include in the last step.\n:::

\n","isPage":false,"text":"\nIf you want to have your transactions sponsored & paid for with a credit card, you can follow the below steps before beginning your code, at the following link: https://sequence.build/\nBy sponsoring your transaction, you can now just send the transaction without a fee object and not have to fund the smart contract wallet before relaying any transactions.\n:::info Already Deployed Contract\nFor this example, we assume you have a smart contract deployed with a contract address to include in the last step.\n:::\n","title":"Nodejs Server with Gas Sponsoring using Sequence Builder","titles":["Building a Relaying Server"]},"37":{"href":"/guides/templates/02-building-relaying-server#a-create-dapp","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"A. Create Dapp","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"38":{"href":"/guides/templates/02-building-relaying-server#b-new-dapp","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"B. New Dapp","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"39":{"href":"/guides/templates/02-building-relaying-server#c1-gas-tank","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"C.1 Gas Tank","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"40":{"href":"/guides/templates/02-building-relaying-server#c2-add-gas","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"C.2 Add Gas","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"41":{"href":"/guides/templates/02-building-relaying-server#c3-add-sponsored-address","html":"\n

\"Sequence

\n

The following is example code that implements a relayed transaction, same as the above example (i.e. Nodejs Server) but without fees, taken care of by the Sequence Builder.

\n
import { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n  signer: walletEOA,\n  projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1:     Ethereum Mainnet\n// - 137:   Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137, {\n  // OPTIONAL: This ensures that the transaction is paid for by the gas tank\n  // but if not provided, the gas tank will be used anyway\n  selectFee: async (_txs: any, _options: FeeOption[]) => {\n    return undefined;\n  },\n});\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n  "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n  senderAddress,\n  recipientAddress,\n  id,\n]);\n \nconst txn = {\n  to: erc721TokenAddress,\n  data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n  console.log(`Unexpected status: ${txnReceipt.status}`);\n}
\n","isPage":false,"text":"\n\nThe following is example code that implements a relayed transaction, same as the above example (i.e. Nodejs Server) but without fees, taken care of by the Sequence Builder.\nimport { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1: Ethereum Mainnet\n// - 137: Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137, {\n // OPTIONAL: This ensures that the transaction is paid for by the gas tank\n // but if not provided, the gas tank will be used anyway\n selectFee: async (_txs: any, _options: FeeOption[]) => {\n return undefined;\n },\n});\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n senderAddress,\n recipientAddress,\n id,\n]);\n \nconst txn = {\n to: erc721TokenAddress,\n data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n console.log(`Unexpected status: ${txnReceipt.status}`);\n}\n","title":"C.3 Add Sponsored Address","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"42":{"href":"/guides/templates/02-building-relaying-server#parallel-transactions","html":"\n

If you want to send multiple independent transactions without needing to batch them, you can also send them in distinct nonce spaces.\nUsing distinct nonce spaces for your transactions signals to the relayer that there's no dependency between them and that\nthey can be executed on-chain in any order.

\n

This allows the transactions to be dispatched immediately in an unbuffered way without having to wait for a full batch.\nHere is an example of how to do that:

\n
// Generate random nonce spaces with ~0% probability of collision\nconst randomNonceSpace1 = ethers.BigNumber.from(\n  ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\nconst randomNonceSpace2 = ethers.BigNumber.from(\n  ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\n \n// Create signers for each nonce space\nconst signer1 = session.account.getSigner(137, {\n  nonceSpace: randomNonceSpace1,\n});\n \nconst signer2 = session.account.getSigner(137, {\n  nonceSpace: randomNonceSpace2,\n});\n \n// Generate transactions\nconst txn1 = {\n  to: tokenContract.address,\n  data: erc20Interface.encodeFunctionData("transfer", [recipient1, amount1]),\n};\n \nconst txn2 = {\n  to: tokenContract.address,\n  data: erc20Interface.encodeFunctionData("transfer", [recipient2, amount2]),\n};\n \n// Dispatch transactions, which can now be executed in parallel\nawait Promise.all([\n  signer1.sendTransaction(txn1),\n  signer2.sendTransaction(txn2),\n]);
\n

If batching transactions is not a problem for your use-case, you can call await wallet.sendTransaction(txns).\nYou can read more about batch transactions in Sending Batched Transactions.

","isPage":false,"text":"\nIf you want to send multiple independent transactions without needing to batch them, you can also send them in distinct nonce spaces.\nUsing distinct nonce spaces for your transactions signals to the relayer that there's no dependency between them and that\nthey can be executed on-chain in any order.\nThis allows the transactions to be dispatched immediately in an unbuffered way without having to wait for a full batch.\nHere is an example of how to do that:\n// Generate random nonce spaces with ~0% probability of collision\nconst randomNonceSpace1 = ethers.BigNumber.from(\n ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\nconst randomNonceSpace2 = ethers.BigNumber.from(\n ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\n \n// Create signers for each nonce space\nconst signer1 = session.account.getSigner(137, {\n nonceSpace: randomNonceSpace1,\n});\n \nconst signer2 = session.account.getSigner(137, {\n nonceSpace: randomNonceSpace2,\n});\n \n// Generate transactions\nconst txn1 = {\n to: tokenContract.address,\n data: erc20Interface.encodeFunctionData("transfer", [recipient1, amount1]),\n};\n \nconst txn2 = {\n to: tokenContract.address,\n data: erc20Interface.encodeFunctionData("transfer", [recipient2, amount2]),\n};\n \n// Dispatch transactions, which can now be executed in parallel\nawait Promise.all([\n signer1.sendTransaction(txn1),\n signer2.sendTransaction(txn2),\n]);\nIf batching transactions is not a problem for your use-case, you can call await wallet.sendTransaction(txns).\nYou can read more about batch transactions in Sending Batched Transactions.","title":"Parallel Transactions","titles":["Building a Relaying Server"]},"43":{"href":"/guides/templates/03-mint-collectibles-serverless#mint-collectibles-using-a-gasless-serverless-relayer","html":"\n

Time to complete: 20-30 minutes

\n

The Sequence Relayer can be implemented on a serverless 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.

\n

The following steps will guide you through how to build your hosted minter API in 4 steps:

\n
    \n
  1. Setup Cloudflare environment with wrangler cli and deploy a test
  2. \n
  3. Deploy, sponsor and update Metadata for an ERC1155 contract with Builder
  4. \n
  5. Use EthAuthProof to prevent EOA DDoS
  6. \n
  7. Mint a collectible to wallet
  8. \n
\n

The result, a secure API with the following specs:

\n\n

:::info Difficulty\nYou need basic knowledge of wrangler cli, npm, and Sequence Builder in order to complete this implementation.\n:::

\n","isPage":true,"text":"\nTime to complete: 20-30 minutes\nThe Sequence Relayer can be implemented on a serverless 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.\nThe following steps will guide you through how to build your hosted minter API in 4 steps:\n\nSetup Cloudflare environment with wrangler cli and deploy a test\nDeploy, sponsor and update Metadata for an ERC1155 contract with Builder\nUse EthAuthProof to prevent EOA DDoS\nMint a collectible to wallet\n\nThe result, a secure API with the following specs:\n\nHTTPS GET: returns blockNumber\nHTTPS POST(proof, address): mints a collectible & returns transaction hash\n\n:::info Difficulty\nYou need basic knowledge of wrangler cli, npm, and Sequence Builder in order to complete this implementation.\n:::\n","title":"Mint Collectibles Using a Gasless Serverless Relayer","titles":[]},"44":{"href":"/guides/templates/03-mint-collectibles-serverless#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test","html":"\n

In order to create the project from scratch, first create a project with mkdir, cd into the project, and run pnpm init to create a package.json.

\n

Next, make sure wrangler cli is installed in your project and set the wrangler keyword as an alias in your local bash session.

\n
pnpm install wrangler --save-dev\nalias wrangler='./node_modules/.bin/wrangler'
\n

Create an account on the Cloudflare site and perform a login step to login to your Cloudflare dashboard to connect the Cloudflare platform to your local development environment.

\n
wrangler login
\n

Once logged in, initialize the project in the directory by accepting one of the randomly generated project folder names provided that you like, and follow the prompts to initialize your git tracked typescript "Hello World" Worker application.

\n
wrangler init
\n

To complete this step, you should press enter 4 times after wrangler init with the last step answered as No to decline deployment.

\n

This will clone down a starter repository that can be used to deploy code to the cloud.

\n

:::info Local API Testing\nAt any point in the guide, you can use the wrangler dev command in the project folder for local testing\n:::

\n","isPage":false,"text":"\nIn order to create the project from scratch, first create a project with mkdir, cd into the project, and run pnpm init to create a package.json.\nNext, make sure wrangler cli is installed in your project and set the wrangler keyword as an alias in your local bash session.\npnpm install wrangler --save-dev\nalias wrangler='./node_modules/.bin/wrangler'\nCreate an account on the Cloudflare site and perform a login step to login to your Cloudflare dashboard to connect the Cloudflare platform to your local development environment.\nwrangler login\nOnce logged in, initialize the project in the directory by accepting one of the randomly generated project folder names provided that you like, and follow the prompts to initialize your git tracked typescript "Hello World" Worker application.\nwrangler init\nTo complete this step, you should press enter 4 times after wrangler init with the last step answered as No to decline deployment.\nThis will clone down a starter repository that can be used to deploy code to the cloud.\n:::info Local API Testing\nAt any point in the guide, you can use the wrangler dev command in the project folder for local testing\n:::\n","title":"1. Setup Cloudflare environment with wrangler cli and deploy a test","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"45":{"href":"/guides/templates/03-mint-collectibles-serverless#deploy-test","html":"\n

Finally, cd into the randomly generated project folder, and perform a wrangler deploy command.

\n

This should print a URL, which you can enter in the browser the URL https://<app>.<account>.workers.dev to view the Hello World! result.

\n","isPage":false,"text":"\nFinally, cd into the randomly generated project folder, and perform a wrangler deploy command.\nThis should print a URL, which you can enter in the browser the URL https://<app>.<account>.workers.dev to view the Hello World! result.\n","title":"Deploy Test","titles":["Mint Collectibles Using a Gasless Serverless Relayer","1. Setup Cloudflare environment with wrangler cli and deploy a test",null]},"46":{"href":"/guides/templates/03-mint-collectibles-serverless#2-deploy-sponsor-and-update-metadata-for-an-erc1155-contract-with-builder","html":"\n

First, follow this guide to deploy a contract.

\n

Then, one must update the role access of the contract in the Builder to only receive requests from the minter wallet address, which can be done in 2 steps.

\n

You can do this in Sequence Builder by providing minter permission to your Sequence Wallet Relayer Address.

\n

In order to know what the relayer address you are working with is, one must first either:

\n
    \n
  1. Have one generated for you using this dapp by selecting your network, and generating a wallet keypair with the generate local wallet button
  2. \n
  3. Or, you can print locally the account address produced from an EOA wallet private key using the following code snippet:
  4. \n
\n
import { Session } from "@0xsequence/auth";\nimport { ethers } from "ethers";\n \n(async () => {\n  // Generate a new EOA\n  // const wallet = ethers.Wallet.createRandom()\n  // const privateKey = wallet.privateKey\n \n  // Or, use an existing EOA private key\n  const privateKey = "";\n  const provider = new ethers.providers.JsonRpcProvider(\n    "https://nodes.sequence.app/mainnet"\n  );\n \n  // Create your server EOA\n  const walletEOA = new ethers.Wallet(privateKey, provider);\n \n  // Open a Sequence session, this will find or create\n  // a Sequence wallet controlled by your server EOA\n  const session = await Session.singleSigner({\n    signer: walletEOA,\n    projectAccessKey: "access_key",\n  });\n \n  const signer = session.account.getSigner(1);\n  console.log(`Your relayer wallet address: ${signer.account.address}`);\n})();
\n

To do so, open your project, navigate to the Contracts page, select your Linked contracts and under Write Contract tab expand the grantRole method.

\n

Complete with the following details:

\n

bytes32 role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6

\n

address account: <Generated Sequence Relayer Wallet Address>

\n\n

Where the role string inputted is the result of keccak256("MINTER_ROLE") in solidity or ethers.utils.keccak256(ethers.utils.toUtf8Bytes("MINTER_ROLE")) in javascript

\n

This makes it so that only your specific address can mint from the contract, it will error otherwise.

\n

Complete the role update by clicking write and sign the sponsored transaction.

\n","isPage":false,"text":"\nFirst, follow this guide to deploy a contract.\nThen, one must update the role access of the contract in the Builder to only receive requests from the minter wallet address, which can be done in 2 steps.\nYou can do this in Sequence Builder by providing minter permission to your Sequence Wallet Relayer Address.\nIn order to know what the relayer address you are working with is, one must first either:\n\nHave one generated for you using this dapp by selecting your network, and generating a wallet keypair with the generate local wallet button\nOr, you can print locally the account address produced from an EOA wallet private key using the following code snippet:\n\nimport { Session } from "@0xsequence/auth";\nimport { ethers } from "ethers";\n \n(async () => {\n // Generate a new EOA\n // const wallet = ethers.Wallet.createRandom()\n // const privateKey = wallet.privateKey\n \n // Or, use an existing EOA private key\n const privateKey = "";\n const provider = new ethers.providers.JsonRpcProvider(\n "https://nodes.sequence.app/mainnet"\n );\n \n // Create your server EOA\n const walletEOA = new ethers.Wallet(privateKey, provider);\n \n // Open a Sequence session, this will find or create\n // a Sequence wallet controlled by your server EOA\n const session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: "access_key",\n });\n \n const signer = session.account.getSigner(1);\n console.log(`Your relayer wallet address: ${signer.account.address}`);\n})();\nTo do so, open your project, navigate to the Contracts page, select your Linked contracts and under Write Contract tab expand the grantRole method.\nComplete with the following details:\nbytes32 role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6\naddress account: <Generated Sequence Relayer Wallet Address>\n\nWhere the role string inputted is the result of keccak256("MINTER_ROLE") in solidity or ethers.utils.keccak256(ethers.utils.toUtf8Bytes("MINTER_ROLE")) in javascript\nThis makes it so that only your specific address can mint from the contract, it will error otherwise.\nComplete the role update by clicking write and sign the sponsored transaction.\n","title":"2. Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"47":{"href":"/guides/templates/03-mint-collectibles-serverless#update-metadata","html":"\n

Next, you'll need to update the metadata with your media or assets for your contract, which can be done by following this guide.

\n","isPage":false,"text":"\nNext, you'll need to update the metadata with your media or assets for your contract, which can be done by following this guide.\n","title":"Update metadata","titles":["Mint Collectibles Using a Gasless Serverless Relayer","2. Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder",null]},"48":{"href":"/guides/templates/03-mint-collectibles-serverless#contract-sponsoring","html":"\n

Finally, in order to sponsor the contract follow this guide to sponsor a contract.

\n","isPage":false,"text":"\nFinally, in order to sponsor the contract follow this guide to sponsor a contract.\n","title":"Contract sponsoring","titles":["Mint Collectibles Using a Gasless Serverless Relayer","2. Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder",null]},"49":{"href":"/guides/templates/03-mint-collectibles-serverless#3-use-ethauthproof-to-prevent-eoa-ddos","html":"\n

Now that we have a contract deployed, we can return to the cloudflare worker directory and project, and install ethers and 0xsequence to get access to sequence APIs in order to perform a proof validation that the request is coming from a trusted source, a sequence wallet.

\n
pnpm install 0xsequence @0xsequence/network
\n

Then, we have to add a type of middleware, after we check if it's a POST or GET request. If it's a POST request, verify that the passed in proofString and address are valid, as well as the environment variables.

\n

The code scaffold placed into src/index.ts would look like this, with callContract and getBlockNumber mocked out, using the mentioned verification step of calling verify before any contract call.

\n
import { sequence } from "0xsequence";\nimport { networks, findSupportedNetwork } from "@0xsequence/network";\n \nexport interface Env {\n  PKEY: string; // Private key for EOA wallet\n  CONTRACT_ADDRESS: string; // Deployed ERC1155 or ERC721 contract address\n  PROJECT_ACCESS_KEY: string; // From sequence.build\n  CHAIN_HANDLE: string; // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support\n}\n \n// use the sequence api to verify proof came from a sequence wallet\nconst verify = async (\n  chainId: string,\n  walletAddress: string,\n  ethAuthProofString: string\n): Promise<Boolean> => {\n  const api = new sequence.api.SequenceAPIClient("https://api.sequence.app");\n  const { isValid } = await api.isValidETHAuthProof({\n    chainId,\n    walletAddress,\n    ethAuthProofString,\n  });\n  return isValid;\n};\n \nasync function handleRequest(\n  request: Request,\n  env: Env,\n  ctx: ExecutionContext\n): Promise<Response> {\n  if (env.PKEY === undefined || env.PKEY === "") {\n    return new Response("Make sure PKEY is configured in your environment", {\n      status: 400,\n    });\n  }\n \n  if (env.CONTRACT_ADDRESS === undefined || env.CONTRACT_ADDRESS === "") {\n    return new Response(\n      "Make sure CONTRACT_ADDRESS is configured in your environment",\n      { status: 400 }\n    );\n  }\n \n  if (env.PROJECT_ACCESS_KEY === undefined || env.PROJECT_ACCESS_KEY === "") {\n    return new Response(\n      "Make sure PROJECT_ACCESS_KEY is configured in your environment",\n      { status: 400 }\n    );\n  }\n \n  if (env.CHAIN_HANDLE === undefined || env.CHAIN_HANDLE === "") {\n    return new Response(\n      "Make sure CHAIN_HANDLE is configured in your environment",\n      { status: 400 }\n    );\n  }\n \n  const chainConfig = findSupportedNetwork(env.CHAIN_HANDLE);\n \n  if (chainConfig === undefined) {\n    return new Response("Unsupported network or unknown CHAIN_HANDLE", {\n      status: 400,\n    });\n  }\n \n  // POST request\n  if (request.method === "POST") {\n    // parse the request body as JSON\n    const body = await request.json();\n    const { proof, address, tokenId }: any = body;\n    try {\n      // check that the proof is valid\n      if (await verify(env.CHAIN_HANDLE, address, proof)) {\n        try {\n          // mocked call\n          const res = await callContract(request, env, address, tokenId);\n          return new Response(`${res.hash}`, { status: 200 });\n        } catch (err: any) {\n          console.log(err);\n          return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n            status: 400,\n          });\n        }\n      } else {\n        return new Response(`Unauthorized`, { status: 401 });\n      }\n    } catch (err: any) {\n      return new Response(`Unauthorized ${JSON.stringify(err)}`, {\n        status: 401,\n      });\n    }\n  }\n  // GET request\n  else {\n    try {\n      // mocked call\n      const res = await getBlockNumber(env.CHAIN_HANDLE, request);\n      return new Response(`Block Number: ${res}`);\n    } catch (err: any) {\n      return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n        status: 500,\n      });\n    }\n  }\n}\n \nconst getBlockNumber = async (\n  chainId: string,\n  request: Request\n): Promise<number> => {\n  return chainId;\n};\n \nconst callContract = async (\n  request: Request,\n  env: Env,\n  address: string,\n  tokenId: number\n): Promise<ethers.providers.TransactionResponse> => {\n  return { hash: "0x" } as any;\n};\n \nexport default {\n  async fetch(request: Request, env: Env, ctx: ExecutionContext) {\n    // Process the request and create a response\n    const response = await handleRequest(request, env, ctx);\n \n    // Set CORS headers\n    response.headers.set("Access-Control-Allow-Origin", "*");\n    response.headers.set(\n      "Access-Control-Allow-Methods",\n      "GET, POST, PUT, DELETE, OPTIONS"\n    );\n    response.headers.set("Access-Control-Allow-Headers", "Content-Type");\n \n    // return response\n    return response;\n  },\n};
\n","isPage":false,"text":"\nNow that we have a contract deployed, we can return to the cloudflare worker directory and project, and install ethers and 0xsequence to get access to sequence APIs in order to perform a proof validation that the request is coming from a trusted source, a sequence wallet.\npnpm install 0xsequence @0xsequence/network\nThen, we have to add a type of middleware, after we check if it's a POST or GET request. If it's a POST request, verify that the passed in proofString and address are valid, as well as the environment variables.\nThe code scaffold placed into src/index.ts would look like this, with callContract and getBlockNumber mocked out, using the mentioned verification step of calling verify before any contract call.\nimport { sequence } from "0xsequence";\nimport { networks, findSupportedNetwork } from "@0xsequence/network";\n \nexport interface Env {\n PKEY: string; // Private key for EOA wallet\n CONTRACT_ADDRESS: string; // Deployed ERC1155 or ERC721 contract address\n PROJECT_ACCESS_KEY: string; // From sequence.build\n CHAIN_HANDLE: string; // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support\n}\n \n// use the sequence api to verify proof came from a sequence wallet\nconst verify = async (\n chainId: string,\n walletAddress: string,\n ethAuthProofString: string\n): Promise<Boolean> => {\n const api = new sequence.api.SequenceAPIClient("https://api.sequence.app");\n const { isValid } = await api.isValidETHAuthProof({\n chainId,\n walletAddress,\n ethAuthProofString,\n });\n return isValid;\n};\n \nasync function handleRequest(\n request: Request,\n env: Env,\n ctx: ExecutionContext\n): Promise<Response> {\n if (env.PKEY === undefined || env.PKEY === "") {\n return new Response("Make sure PKEY is configured in your environment", {\n status: 400,\n });\n }\n \n if (env.CONTRACT_ADDRESS === undefined || env.CONTRACT_ADDRESS === "") {\n return new Response(\n "Make sure CONTRACT_ADDRESS is configured in your environment",\n { status: 400 }\n );\n }\n \n if (env.PROJECT_ACCESS_KEY === undefined || env.PROJECT_ACCESS_KEY === "") {\n return new Response(\n "Make sure PROJECT_ACCESS_KEY is configured in your environment",\n { status: 400 }\n );\n }\n \n if (env.CHAIN_HANDLE === undefined || env.CHAIN_HANDLE === "") {\n return new Response(\n "Make sure CHAIN_HANDLE is configured in your environment",\n { status: 400 }\n );\n }\n \n const chainConfig = findSupportedNetwork(env.CHAIN_HANDLE);\n \n if (chainConfig === undefined) {\n return new Response("Unsupported network or unknown CHAIN_HANDLE", {\n status: 400,\n });\n }\n \n // POST request\n if (request.method === "POST") {\n // parse the request body as JSON\n const body = await request.json();\n const { proof, address, tokenId }: any = body;\n try {\n // check that the proof is valid\n if (await verify(env.CHAIN_HANDLE, address, proof)) {\n try {\n // mocked call\n const res = await callContract(request, env, address, tokenId);\n return new Response(`${res.hash}`, { status: 200 });\n } catch (err: any) {\n console.log(err);\n return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n status: 400,\n });\n }\n } else {\n return new Response(`Unauthorized`, { status: 401 });\n }\n } catch (err: any) {\n return new Response(`Unauthorized ${JSON.stringify(err)}`, {\n status: 401,\n });\n }\n }\n // GET request\n else {\n try {\n // mocked call\n const res = await getBlockNumber(env.CHAIN_HANDLE, request);\n return new Response(`Block Number: ${res}`);\n } catch (err: any) {\n return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n status: 500,\n });\n }\n }\n}\n \nconst getBlockNumber = async (\n chainId: string,\n request: Request\n): Promise<number> => {\n return chainId;\n};\n \nconst callContract = async (\n request: Request,\n env: Env,\n address: string,\n tokenId: number\n): Promise<ethers.providers.TransactionResponse> => {\n return { hash: "0x" } as any;\n};\n \nexport default {\n async fetch(request: Request, env: Env, ctx: ExecutionContext) {\n // Process the request and create a response\n const response = await handleRequest(request, env, ctx);\n \n // Set CORS headers\n response.headers.set("Access-Control-Allow-Origin", "*");\n response.headers.set(\n "Access-Control-Allow-Methods",\n "GET, POST, PUT, DELETE, OPTIONS"\n );\n response.headers.set("Access-Control-Allow-Headers", "Content-Type");\n \n // return response\n return response;\n },\n};\n","title":"3. Use EthAuthProof to prevent EOA DDoS","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"50":{"href":"/guides/templates/03-mint-collectibles-serverless#add-cloudflare-environment-variables","html":"\n

Then, pass in the environment variables for your build by updating the [vars] section in your wrangler.toml.

\n
[vars]\nPKEY = "" # Private key for EOA wallet\nCONTRACT_ADDRESS = "" # // Deployed ERC1155 or ERC721 contract address\nPROJECT_ACCESS_KEY = "" # From sequence.build\nCHAIN_HANDLE = "" # // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support
\n","isPage":false,"text":"\nThen, pass in the environment variables for your build by updating the [vars] section in your wrangler.toml.\n[vars]\nPKEY = "" # Private key for EOA wallet\nCONTRACT_ADDRESS = "" # // Deployed ERC1155 or ERC721 contract address\nPROJECT_ACCESS_KEY = "" # From sequence.build\nCHAIN_HANDLE = "" # // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support\n","title":"Add cloudflare environment variables","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"51":{"href":"/guides/templates/03-mint-collectibles-serverless#implement-window-object-in-wrangler-template","html":"\n

It should be noted, if you try to deploy this you'll get a missing window object required by the web3 modules.

\n

To prevent this, add the following line to your wrangler.toml file to make the environment compatible.

\n
...\nnode_compat = true # add this line\n...
\n","isPage":false,"text":"\nIt should be noted, if you try to deploy this you'll get a missing window object required by the web3 modules.\nTo prevent this, add the following line to your wrangler.toml file to make the environment compatible.\n...\nnode_compat = true # add this line\n...\n","title":"Implement window object in wrangler template","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"52":{"href":"/guides/templates/03-mint-collectibles-serverless#testing-the-deploy","html":"\n

You can now redeploy using wrangler deploy

\n

And perform a curl request to test your endpoint like such:

\n
curl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'\n\n... invalid proof string ...\n\n# and if you replace with actual proof (from a wallet client login) and address on polygon, it should return\nsuccess
\n

You can acquire your wallet address proof by using this dapp and follow the below steps.

\n","isPage":false,"text":"\nYou can now redeploy using wrangler deploy\nAnd perform a curl request to test your endpoint like such:\ncurl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'\n\n... invalid proof string ...\n\n# and if you replace with actual proof (from a wallet client login) and address on polygon, it should return\nsuccess\nYou can acquire your wallet address proof by using this dapp and follow the below steps.\n","title":"Testing the deploy","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"53":{"href":"/guides/templates/03-mint-collectibles-serverless#using-the-ethauthproof-viewer-dapp","html":"\n

When you arrive on the page, the first thing you should do is select a network.

\n

Then you have an option to either connect and generate the Proof, or, generate a local wallet

\n

\"ETHAuthProof

\n

Press the connect button and then copy to clipboard.

\n

\"ETHAuthProof

\n

It should be noted, it is best not to share this ETHAuthProof with anyone as this means someone can prove ownership of your wallet and interact with specific APIs.

\n

Finally, replace the url with your app from this step, the <some_proof> with the generated value copied from the viewer dapp, and <some_address> with your wallet address and it should return just the mocked 0x string.

\n
curl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'
\n","isPage":false,"text":"\nWhen you arrive on the page, the first thing you should do is select a network.\nThen you have an option to either connect and generate the Proof, or, generate a local wallet\n\nPress the connect button and then copy to clipboard.\n\nIt should be noted, it is best not to share this ETHAuthProof with anyone as this means someone can prove ownership of your wallet and interact with specific APIs.\nFinally, replace the url with your app from this step, the <some_proof> with the generated value copied from the viewer dapp, and <some_address> with your wallet address and it should return just the mocked 0x string.\ncurl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'\n","title":"Using the ETHAuthProof Viewer dapp","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"54":{"href":"/guides/templates/03-mint-collectibles-serverless#4-mint-a-collectible-to-wallet","html":"\n

Finally, to deploy and mint a collectible from the sponsored contract address, we install the following packages

\n
pnpm install @0xsequence/auth ethers@5.7.2
\n

and implement the callContract and getBlockNumber methods previously mocked out as follows:

\n
import { ethers } from 'ethers'\nimport { Session, SessionSettings } from '@0xsequence/auth'\n \n...\n \nconst getBlockNumber = async (chainId: string, request: Request): Promise<number> => {\n\tconst nodeUrl = `https://nodes.sequence.app/${chainId}`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n\treturn await provider.getBlockNumber()\n}\n \nconst callContract = async (request: Request, env: Env, address: string, tokenId: number): Promise<ethers.providers.TransactionResponse> => {\n \n\tconst nodeUrl = `https://nodes.sequence.app/${env.CHAIN_HANDLE}`\n\tconst relayerUrl = `https://{env.CHAIN_HANDLE}-relayer.sequence.app`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n    const contractAddress = env.CONTRACT_ADDRESS\n \n    // create EOA from private key\n\tconst walletEOA = new ethers.Wallet(env.PKEY, provider);\n \n\t// instantiate settings\n\tconst settings: Partial<SessionSettings> = {\n\t\tnetworks: [{\n\t\t\t...networks[findSupportedNetwork(env.CHAIN_HANDLE)!.chainId],\n\t\t\trpcUrl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl,\n\t\t\tprovider: provider,\n\t\t\trelayer: {\n\t\t\t\turl: relayerUrl,\n\t\t\t\tprovider: {\n\t\t\t\t\turl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t}\n \n    // create a single signer sequence wallet session\n\tconst session = await Session.singleSigner({\n\t\tsettings: settings,\n\t\tsigner: walletEOA,\n\t\tprojectAccessKey: env.PROJECT_ACCESS_KEY\n\t})\n \n\t// get signer\n\tconst signer = session.account.getSigner(findSupportedNetwork(env.CHAIN_HANDLE)!.chainId)\n \n\t// create interface from partial abi\n\tconst collectibleInterface = new ethers.utils.Interface([\n\t\t'function mint(address to, uint256 tokenId, uint256 amount, bytes data)'\n\t])\n \n\t// create calldata\n\tconst data = collectibleInterface.encodeFunctionData(\n\t\t'mint', [address, tokenId, 1, "0x00"]\n\t)\n \n\t// create transaction object\n\tconst txn = { to: contractAddress, data }\n \n\ttry {\n\t\treturn await signer.sendTransaction(txn)\n\t} catch (err) {\n\t\tthrow err\n\t}\n}
\n

Once these steps are complete, you can redeploy and test with the steps outlined in this prior step, and this time the POST request should return a transaction hash for the completed mint and the GET request would return a block number.

\n

If you want to browse the full code, see an example implementation here

","isPage":false,"text":"\nFinally, to deploy and mint a collectible from the sponsored contract address, we install the following packages\npnpm install @0xsequence/auth ethers@5.7.2\nand implement the callContract and getBlockNumber methods previously mocked out as follows:\nimport { ethers } from 'ethers'\nimport { Session, SessionSettings } from '@0xsequence/auth'\n \n...\n \nconst getBlockNumber = async (chainId: string, request: Request): Promise<number> => {\n\tconst nodeUrl = `https://nodes.sequence.app/${chainId}`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n\treturn await provider.getBlockNumber()\n}\n \nconst callContract = async (request: Request, env: Env, address: string, tokenId: number): Promise<ethers.providers.TransactionResponse> => {\n \n\tconst nodeUrl = `https://nodes.sequence.app/${env.CHAIN_HANDLE}`\n\tconst relayerUrl = `https://{env.CHAIN_HANDLE}-relayer.sequence.app`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n const contractAddress = env.CONTRACT_ADDRESS\n \n // create EOA from private key\n\tconst walletEOA = new ethers.Wallet(env.PKEY, provider);\n \n\t// instantiate settings\n\tconst settings: Partial<SessionSettings> = {\n\t\tnetworks: [{\n\t\t\t...networks[findSupportedNetwork(env.CHAIN_HANDLE)!.chainId],\n\t\t\trpcUrl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl,\n\t\t\tprovider: provider,\n\t\t\trelayer: {\n\t\t\t\turl: relayerUrl,\n\t\t\t\tprovider: {\n\t\t\t\t\turl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t}\n \n // create a single signer sequence wallet session\n\tconst session = await Session.singleSigner({\n\t\tsettings: settings,\n\t\tsigner: walletEOA,\n\t\tprojectAccessKey: env.PROJECT_ACCESS_KEY\n\t})\n \n\t// get signer\n\tconst signer = session.account.getSigner(findSupportedNetwork(env.CHAIN_HANDLE)!.chainId)\n \n\t// create interface from partial abi\n\tconst collectibleInterface = new ethers.utils.Interface([\n\t\t'function mint(address to, uint256 tokenId, uint256 amount, bytes data)'\n\t])\n \n\t// create calldata\n\tconst data = collectibleInterface.encodeFunctionData(\n\t\t'mint', [address, tokenId, 1, "0x00"]\n\t)\n \n\t// create transaction object\n\tconst txn = { to: contractAddress, data }\n \n\ttry {\n\t\treturn await signer.sendTransaction(txn)\n\t} catch (err) {\n\t\tthrow err\n\t}\n}\nOnce these steps are complete, you can redeploy and test with the steps outlined in this prior step, and this time the POST request should return a transaction hash for the completed mint and the GET request would return a block number.\nIf you want to browse the full code, see an example implementation here","title":"4. Mint a collectible to wallet","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"55":{"href":"/guides/templates/template-embedded-wallet#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"56":{"href":"/guides/templates/template-embedded-wallet#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out seamless UX of our embedded wallet at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"57":{"href":"/guides/templates/template-embedded-wallet#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our embedded wallet.\n","title":"Template","titles":["Quickstart"]},"58":{"href":"/guides/templates/template-embedded-wallet#getting-started","html":"\n","isPage":false,"text":"\n","title":"Getting Started","titles":["Quickstart"]},"59":{"href":"/guides/templates/template-embedded-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 TODO add link 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 TODO add link Unity SDK documentation\n","title":"SDK Installation","titles":["Quickstart","Getting Started"]},"60":{"href":"/guides/templates/template-embedded-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"]},"61":{"href":"/guides/templates/template-embedded-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"]},"62":{"href":"/guides/templates/template-marketplace-api#custom-marketplace","html":"\n

In this guide we will go through the process of creating a custom marketplace from a few simple tools from the Sequence stack.

\n

The tools will enable you to perform:

\n\n

All of this in custom javascript code

\n","isPage":true,"text":"\nIn this guide we will go through the process of creating a custom marketplace from a few simple tools from the Sequence stack.\nThe tools will enable you to perform:\n\nMinting: Minting of tokens to your wallet from the Sequence Builder\nBlockchain Queries: Querying of token balances using the Indexer\nRequest Creation: Creation of sell listing requests on the Sequence Market Protocol\nOrder Accepting: Accepting of top orders from the Marketplace\n\nAll of this in custom javascript code\n","title":"Custom Marketplace","titles":[]},"63":{"href":"/guides/templates/template-marketplace-api#minting","html":"\n

The first step is to create a collectible from the sequence Builder with a few mints, which can be accomplished with this guide.

\n","isPage":false,"text":"\nThe first step is to create a collectible from the sequence Builder with a few mints, which can be accomplished with this guide.\n","title":"Minting","titles":["Custom Marketplace"]},"64":{"href":"/guides/templates/template-marketplace-api#blockchain-queries","html":"\n

Once you have one or a few collectibles minted, you can query the data from the contract address from your deployment, which can be found here:

\n

\"copy

\n

You can query data using the indexer, using this code where an account address and contract address are inputted into the indexer api

\n
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from "@0xsequence/indexer";\n \nconst indexer = new SequenceIndexer(\n  "https://arbitrum-sepolia-indexer.sequence.app",\n  "<access-key>"\n);\n \n// try any contract and account address you'd like :), as an example\nconst contractAddress = "0x1693ffc74edbb50d6138517fe5cd64fd1c917709";\nconst accountAddress = "0xc2be9cf6d9ee4fd211f88620760e829792659b16";\n \n// query Sequence Indexer for all nft balances of the account on Polygon\nconst nftBalances = await indexer.getTokenBalances({\n  contractAddress: contractAddress,\n  accountAddress: accountAddress,\n  includeMetadata: true,\n});\n \nconsole.log("collection of items:", nftBalances);
\n

Where the response of the indexer call, yields the follow data:

\n

Response

\n\n","isPage":false,"text":"\nOnce you have one or a few collectibles minted, you can query the data from the contract address from your deployment, which can be found here:\n\nYou can query data using the indexer, using this code where an account address and contract address are inputted into the indexer api\n// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from "@0xsequence/indexer";\n \nconst indexer = new SequenceIndexer(\n "https://arbitrum-sepolia-indexer.sequence.app",\n "<access-key>"\n);\n \n// try any contract and account address you'd like :), as an example\nconst contractAddress = "0x1693ffc74edbb50d6138517fe5cd64fd1c917709";\nconst accountAddress = "0xc2be9cf6d9ee4fd211f88620760e829792659b16";\n \n// query Sequence Indexer for all nft balances of the account on Polygon\nconst nftBalances = await indexer.getTokenBalances({\n contractAddress: contractAddress,\n accountAddress: accountAddress,\n includeMetadata: true,\n});\n \nconsole.log("collection of items:", nftBalances);\nWhere the response of the indexer call, yields the follow data:\nResponse\n\ncontractType (string) - the type of contract type (i.e. ERC20, ERC721, or ERC1155)\ncontractAddress (string) - the contract address of the token\naccountAddress (string) - the deploying account address\ntokenID (string) - the tokenID of the token (always 0 if ERC20)\nbalance (string) - the balance of the token\nblockHash (string) - the transaction merkle hash of the block when the token was deployed\nblockNumber (number) - the blocknumber the token was deployed\nchainId (number) - the chain id of the token\ncontractType\n\nchainId (number) - the chain id of the token\naddress (string) - the address of the token\nname (string) - contract level name of the token\ntype (string) - the type of contract type (i.e. ERC20, ERC721, or ERC1155)\nsymbol (string) - the symbol of the token\ndecimals (number) - the number of decimals the token has\nlogoURI (string) - the logo of the token displayed in sequence.app\ndeployed (boolean) - whether the token is deployed\nbytecodeHash (string) - hash of the bytecode of a smart contract deployed on the blockchain\nextensions\n\nlink (string) - the adjoining website to link to the project\ndescription (string) - the metadata description of the token\nogImage (string) - the banner image for the token, rendered in sequence.app\noriginChainId (number) - the originating chain id the token represents\noriginAddress (string) - the originating contract address the token represents\nverified (boolean) - whether the token is verified and trusted\nverifiedBy (string) - the verifing source as to why this is not spam\n\n\n\n\nupdatedAt (date) - the last time the indexer was updated\ntokenMetadata\n\ntokenId (string) - the tokenID of the token (always 0 if ERC20)\ncontractAddress (string) - the contract address of the token\nname (string) - token level name\ndescription (string) - the description of the token\nimage (string) - the image as a url of the token\ndecimals (string) - the number of decimals for the token\nproperties (object) - an object containing the properties of the token metadata\nexternal_url (string) - an external url for where to find the token or more details\nupdatedAt (date) - the last time the token metadata was updated\n\n\n\n","title":"Blockchain Queries","titles":["Custom Marketplace"]},"65":{"href":"/guides/templates/template-marketplace-api#request-creation","html":"\n","isPage":false,"text":"\n","title":"Request Creation","titles":["Custom Marketplace"]},"66":{"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]},"67":{"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]},"68":{"href":"/sdk/sequence-kit/01-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":[]},"69":{"href":"/sdk/sequence-kit/01-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 embedded 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"]},"70":{"href":"/sdk/sequence-kit/01-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":[]},"71":{"href":"/sdk/sequence-kit/02-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":[]},"72":{"href":"/sdk/sequence-kit/02-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"]},"73":{"href":"/sdk/sequence-kit/02-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":[]},"74":{"href":"/sdk/sequence-kit/02-getting-started#setting-up-the-embedded-wallet-wrapper","html":"
\n

To install the optional embedded 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 embedded 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":[]},"75":{"href":"/sdk/sequence-kit/02-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":[]},"76":{"href":"/sdk/sequence-kit/02-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":[]},"77":{"href":"/sdk/sequence-kit/02-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":[]},"78":{"href":"/sdk/sequence-kit/03-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":[]},"79":{"href":"/sdk/sequence-kit/03-configuration#available-options","html":"
\n","isPage":false,"text":"\n","title":"Available Options","titles":[]},"80":{"href":"/sdk/sequence-kit/03-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"]},"81":{"href":"/sdk/sequence-kit/03-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"]},"82":{"href":"/sdk/sequence-kit/03-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"]},"83":{"href":"/sdk/sequence-kit/03-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)"]},"84":{"href":"/sdk/sequence-kit/03-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)"]},"85":{"href":"/sdk/sequence-kit/03-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)"]},"86":{"href":"/sdk/sequence-kit/03-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)"]},"87":{"href":"/sdk/sequence-kit/03-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)"]},"88":{"href":"/sdk/sequence-kit/03-configuration#displayedassets","html":"\n
TypeDefault
[{ contractAddress: string, chainId: number }, ...]undefined
\n

If provided, this will determine which assets are to be displayed in the embedded 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 embedded 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"]},"89":{"href":"/sdk/sequence-kit/04-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":[]},"90":{"href":"/sdk/sequence-kit/04-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":[]},"91":{"href":"/sdk/sequence-kit/04-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"]},"92":{"href":"/sdk/sequence-kit/04-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"]},"93":{"href":"/sdk/sequence-kit/04-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"]},"94":{"href":"/sdk/sequence-kit/04-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"]},"95":{"href":"/sdk/sequence-kit/05-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":[]},"96":{"href":"/sdk/sequence-kit/05-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"]},"97":{"href":"/sdk/sequence-kit/05-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":[]},"98":{"href":"/sdk/sequence-kit/05-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":[]},"99":{"href":"/sdk/typescript/01-overview#wallet","html":"\n

Sequence Wallet gives you a friendly, non-custodial wallet for your users with multi-chain support and seamless integration.

\n
\n

Most wallets for Ethereum have a single private key that has full control over a wallet, i.e. an Externally Owned Account (EOAs).\nHowever, a Sequence wallet is a Smart Contract that is deployed on the blockchain and which can be controlled by multiple private keys.\nThese keys are meant to be controlled by the wallet owner and provide added security since more than one of these keys would need to be\ncompromised for the wallet to be compromised.

","isPage":true,"text":"\nSequence Wallet gives you a friendly, non-custodial wallet for your users with multi-chain support and seamless integration.\n\nMost wallets for Ethereum have a single private key that has full control over a wallet, i.e. an Externally Owned Account (EOAs).\nHowever, a Sequence wallet is a Smart Contract that is deployed on the blockchain and which can be controlled by multiple private keys.\nThese keys are meant to be controlled by the wallet owner and provide added security since more than one of these keys would need to be\ncompromised for the wallet to be compromised.","title":"Wallet","titles":[]},"100":{"href":"/sdk/typescript/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"101":{"href":"/sdk/typescript/02-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"]},"102":{"href":"/sdk/typescript/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template using SequenceKit\n","title":"Template","titles":["Quickstart"]},"103":{"href":"/sdk/typescript/02-quickstart#install-for-existing-project","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

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":"\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.\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 for existing project","titles":["Quickstart"]},"104":{"href":"/sdk/typescript/02-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 for existing project",null]},"105":{"href":"/sdk/typescript/04-platforms#platforms","html":"\n","isPage":true,"text":"\n","title":"Platforms","titles":[]},"106":{"href":"/sdk/typescript/04-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"]},"107":{"href":"/sdk/typescript/04-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"]},"108":{"href":"/sdk/typescript/04-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"]},"109":{"href":"/sdk/typescript/05-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":[]},"110":{"href":"/sdk/typescript/06-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":[]},"111":{"href":"/sdk/typescript/06-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"]},"112":{"href":"/sdk/typescript/06-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"]},"113":{"href":"/sdk/typescript/06-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"]},"114":{"href":"/sdk/typescript/06-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"]},"115":{"href":"/sdk/unity/01-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":[]},"116":{"href":"/sdk/unity/01-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"]},"117":{"href":"/sdk/unity/02-installation#installation","html":"\n","isPage":true,"text":"\n","title":"Installation","titles":[]},"118":{"href":"/sdk/unity/02-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"]},"119":{"href":"/sdk/unity/02-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"]},"120":{"href":"/sdk/unity/02-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"]},"121":{"href":"/sdk/unity/03-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":[]},"122":{"href":"/sdk/unity/04-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":[]},"123":{"href":"/sdk/unity/04-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"]},"124":{"href":"/sdk/unity/04-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"]},"125":{"href":"/sdk/unity/04-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"]},"126":{"href":"/sdk/unity/04-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"]},"127":{"href":"/sdk/unity/04-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"]},"128":{"href":"/sdk/unity/04-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"]},"129":{"href":"/sdk/unity/04-authentication#webgl","html":"\n

Coming soon.

\n","isPage":false,"text":"\nComing soon.\n","title":"WebGL","titles":["Authentication","2. Social Sign in"]},"130":{"href":"/sdk/unity/04-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"]},"131":{"href":"/sdk/unity/05-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":[]},"132":{"href":"/sdk/unity/05-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"]},"133":{"href":"/sdk/unity/05-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"]},"134":{"href":"/sdk/unity/05-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"]},"135":{"href":"/sdk/unity/05-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"]},"136":{"href":"/sdk/unity/05-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"]},"137":{"href":"/sdk/unity/05-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"]},"138":{"href":"/sdk/unity/05-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"]},"139":{"href":"/sdk/unity/05-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"]},"140":{"href":"/sdk/unity/05-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"]},"141":{"href":"/sdk/unity/06-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);
\n

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);\nChainIndexer 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":[]},"142":{"href":"/sdk/unity/07-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":[]},"143":{"href":"/sdk/unity/08-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":[]},"144":{"href":"/sdk/unity/09-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":[]},"145":{"href":"/sdk/unity/09-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"]},"146":{"href":"/sdk/unity/09-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"]},"147":{"href":"/sdk/unity/09-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"]},"148":{"href":"/sdk/unity/09-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"]},"149":{"href":"/solutions/indexer/02-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\nOur Indexer service is now 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":[]},"150":{"href":"/solutions/indexer/02-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 endpointsSequence Indexer offers the same API across a variety of EVM networks. Make sure\nto check the Indexer endpoints and use the corresponding host for your dapp/game.\nFor example, on Ethereum mainnet the Sequence Indexer endpoint is https://mainnet-indexer.sequence.app\nand 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"]},"151":{"href":"/solutions/indexer/02-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

This code requires an API Access Key from Sequence Builder

\n

then in your app (using your API_Access_Key),

\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\nthen in your app (using your API_Access_Key),\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"]},"152":{"href":"/solutions/indexer/02-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/indexer#supported-networks--endpoints 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)
\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/indexer#supported-networks--endpoints 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)\n\n","title":"Go Installation","titles":["Indexer Installation","Installation"]},"153":{"href":"/solutions/indexer/02-installation#unity-or-unreal-installation","html":"\n

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

\n
","isPage":false,"text":"\nThe Sequence Indexer is integrated directly inside of the respective Sequence Web3 Unity and Sequence Web3 Unreal SDKs.\n","title":"Unity or Unreal Installation","titles":["Indexer Installation","Installation"]},"154":{"href":"/solutions/technical-references/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":[]},"155":{"href":"/solutions/technical-references/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"]},"156":{"href":"/sdk/typescript/03-guides/01-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":[]},"157":{"href":"/sdk/typescript/03-guides/01-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"]},"158":{"href":"/sdk/typescript/03-guides/01-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"]},"159":{"href":"/sdk/typescript/03-guides/01-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]},"160":{"href":"/sdk/typescript/03-guides/01-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]},"161":{"href":"/sdk/typescript/03-guides/01-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]},"162":{"href":"/sdk/typescript/03-guides/01-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]},"163":{"href":"/sdk/typescript/03-guides/01-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]},"164":{"href":"/sdk/typescript/03-guides/01-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]},"165":{"href":"/sdk/typescript/03-guides/01-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]},"166":{"href":"/sdk/typescript/03-guides/01-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]},"167":{"href":"/sdk/typescript/03-guides/01-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]},"168":{"href":"/sdk/typescript/03-guides/01-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]},"169":{"href":"/sdk/typescript/03-guides/01-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]},"170":{"href":"/sdk/typescript/03-guides/01-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]},"171":{"href":"/sdk/typescript/03-guides/01-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]},"172":{"href":"/sdk/typescript/03-guides/01-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]},"173":{"href":"/sdk/typescript/03-guides/01-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]},"174":{"href":"/sdk/typescript/03-guides/01-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]},"175":{"href":"/sdk/typescript/03-guides/01-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]},"176":{"href":"/sdk/typescript/03-guides/01-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]},"177":{"href":"/sdk/typescript/03-guides/01-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"]},"178":{"href":"/sdk/typescript/03-guides/01-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"]},"179":{"href":"/sdk/typescript/03-guides/01-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"]},"180":{"href":"/sdk/typescript/03-guides/02-auth-address#authenticate-users-with-message-signature","html":"\n","isPage":true,"text":"\n","title":"Authenticate Users with Message Signature","titles":[]},"181":{"href":"/sdk/typescript/03-guides/02-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"]},"182":{"href":"/sdk/typescript/03-guides/02-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"]},"183":{"href":"/sdk/typescript/03-guides/02-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"]},"184":{"href":"/sdk/typescript/03-guides/03-sign-message#todo---replace-with-code-groups-from-vocs","html":"","isPage":true,"text":"","title":"TODO - Replace with Code Groups from Vocs","titles":[]},"185":{"href":"/sdk/typescript/03-guides/04-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":[]},"186":{"href":"/sdk/typescript/03-guides/04-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":[]},"187":{"href":"/sdk/typescript/03-guides/04-session-keys#using-session-keys-with-sequence","html":"
\n","isPage":false,"text":"\n","title":"Using Session keys with Sequence","titles":[]},"188":{"href":"/sdk/typescript/03-guides/04-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]},"189":{"href":"/sdk/typescript/03-guides/04-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]},"190":{"href":"/sdk/typescript/03-guides/04-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]},"191":{"href":"/sdk/typescript/03-guides/04-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]},"192":{"href":"/sdk/typescript/03-guides/04-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]},"193":{"href":"/sdk/typescript/03-guides/04-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]},"194":{"href":"/sdk/typescript/03-guides/05-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":[]},"195":{"href":"/sdk/typescript/03-guides/06-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":[]},"196":{"href":"/sdk/typescript/03-guides/07-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":[]},"197":{"href":"/sdk/typescript/03-guides/08-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":[]},"198":{"href":"/sdk/typescript/03-guides/09-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":[]},"199":{"href":"/sdk/typescript/03-guides/10-building-backends#building-backends-with-sequence","html":"\n","isPage":true,"text":"\n","title":"Building Backends with Sequence","titles":[]},"200":{"href":"/sdk/typescript/03-guides/10-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]},"201":{"href":"/sdk/typescript/03-guides/10-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]},"202":{"href":"/sdk/typescript/03-guides/10-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]},"203":{"href":"/sdk/typescript/03-guides/10-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]},"204":{"href":"/sdk/typescript/connectors/01-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":[]},"205":{"href":"/sdk/typescript/connectors/02-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":[]},"206":{"href":"/sdk/typescript/connectors/02-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 embedded 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"]},"207":{"href":"/sdk/typescript/connectors/02-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":[]},"208":{"href":"/sdk/typescript/connectors/03-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":[]},"209":{"href":"/sdk/typescript/connectors/03-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"]},"210":{"href":"/sdk/typescript/connectors/03-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"]},"211":{"href":"/sdk/typescript/connectors/03-wagmi#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using Wagmi"]},"212":{"href":"/sdk/typescript/connectors/03-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"]},"213":{"href":"/sdk/typescript/connectors/03-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"]},"214":{"href":"/sdk/typescript/connectors/03-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"]},"215":{"href":"/sdk/typescript/connectors/03-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"]},"216":{"href":"/sdk/typescript/connectors/03-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"]},"217":{"href":"/sdk/typescript/connectors/03-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"]},"218":{"href":"/sdk/typescript/connectors/04-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":[]},"219":{"href":"/sdk/typescript/connectors/04-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"]},"220":{"href":"/sdk/typescript/connectors/04-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"]},"221":{"href":"/sdk/typescript/connectors/04-rainbow-kit#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using RainbowKit"]},"222":{"href":"/sdk/typescript/connectors/04-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"]},"223":{"href":"/sdk/typescript/connectors/04-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"]},"224":{"href":"/sdk/typescript/connectors/04-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"]},"225":{"href":"/sdk/typescript/connectors/04-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"]},"226":{"href":"/sdk/typescript/connectors/04-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"]},"227":{"href":"/sdk/typescript/connectors/04-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"]},"228":{"href":"/sdk/typescript/connectors/05-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":[]},"229":{"href":"/sdk/typescript/connectors/05-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"]},"230":{"href":"/sdk/typescript/connectors/05-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"]},"231":{"href":"/sdk/typescript/connectors/05-web3-onboard#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using Web3-Onboard"]},"232":{"href":"/sdk/typescript/connectors/05-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"]},"233":{"href":"/sdk/typescript/connectors/05-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"]},"234":{"href":"/sdk/typescript/connectors/05-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"]},"235":{"href":"/sdk/typescript/connectors/06-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":[]},"236":{"href":"/sdk/typescript/connectors/06-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"]},"237":{"href":"/sdk/typescript/connectors/06-web3-react-v6#usage","html":"\n","isPage":false,"text":"\n","title":"Usage","titles":["Using Web3-React V6"]},"238":{"href":"/sdk/typescript/connectors/06-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"]},"239":{"href":"/sdk/typescript/connectors/06-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"]},"240":{"href":"/sdk/typescript/connectors/06-web3-react-v6#options","html":"\n","isPage":false,"text":"\n","title":"Options","titles":["Using Web3-React V6"]},"241":{"href":"/sdk/typescript/connectors/06-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"]},"242":{"href":"/sdk/typescript/connectors/06-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"]},"243":{"href":"/sdk/typescript/connectors/06-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"]},"244":{"href":"/sdk/typescript/connectors/07-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":[]},"245":{"href":"/sdk/typescript/connectors/07-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"]},"246":{"href":"/sdk/typescript/connectors/07-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"]},"247":{"href":"/sdk/typescript/connectors/08-FAQ#nextjs","html":"\n","isPage":true,"text":"\n","title":"NextJs","titles":[null]},"248":{"href":"/sdk/typescript/connectors/08-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"]},"249":{"href":"/sdk/typescript/connectors/08-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"]},"250":{"href":"/sdk/typescript/connectors/08-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"]},"251":{"href":"/sdk/unity/Advanced/01-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":[]},"252":{"href":"/sdk/unity/Advanced/01-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"]},"253":{"href":"/sdk/unity/Advanced/02-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":[]},"254":{"href":"/sdk/unity/Advanced/02-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"]},"255":{"href":"/sdk/unity/Advanced/02-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"]},"256":{"href":"/sdk/unity/Advanced/02-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"]},"257":{"href":"/sdk/unity/Advanced/02-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"]},"258":{"href":"/sdk/unity/Advanced/02-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"]},"259":{"href":"/sdk/unity/Advanced/02-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"]},"260":{"href":"/sdk/unity/Advanced/02-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"]},"261":{"href":"/sdk/unity/Advanced/02-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"]},"262":{"href":"/sdk/unity/Advanced/02-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"]},"263":{"href":"/sdk/unity/Advanced/03-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":[]},"264":{"href":"/sdk/unity/Advanced/03-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"]},"265":{"href":"/sdk/unity/Advanced/03-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"]},"266":{"href":"/sdk/unity/Advanced/03-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"]},"267":{"href":"/sdk/unity/Advanced/03-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"]},"268":{"href":"/sdk/unity/Advanced/03-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"]},"269":{"href":"/sdk/unity/Advanced/03-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"]},"270":{"href":"/sdk/unity/Advanced/03-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"]},"271":{"href":"/sdk/unity/Advanced/03-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"]},"272":{"href":"/sdk/unity/Advanced/03-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"]},"273":{"href":"/sdk/unity/Advanced/03-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"]},"274":{"href":"/sdk/unity/Advanced/03-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"]},"275":{"href":"/sdk/unity/Advanced/03-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"]},"276":{"href":"/sdk/unity/Advanced/03-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"]},"277":{"href":"/sdk/unity/Advanced/03-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"]},"278":{"href":"/sdk/unity/Advanced/03-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"]},"279":{"href":"/sdk/unity/Advanced/03-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"]},"280":{"href":"/sdk/unity/Advanced/03-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"]},"281":{"href":"/sdk/unity/Advanced/03-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"]},"282":{"href":"/sdk/unity/Advanced/04-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":[]},"283":{"href":"/sdk/unity/Advanced/05-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":[]},"284":{"href":"/sdk/unity/Advanced/05-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"]},"285":{"href":"/sdk/unity/Advanced/05-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"]},"286":{"href":"/sdk/unity/Advanced/05-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"]},"287":{"href":"/sdk/unity/Advanced/05-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"]},"288":{"href":"/sdk/unity/Advanced/06-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":[]},"289":{"href":"/sdk/unity/Advanced/06-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":[]},"290":{"href":"/solutions/collectibles/metadata/800-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":[]},"291":{"href":"/solutions/collectibles/metadata/800-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"]},"292":{"href":"/solutions/collectibles/metadata/800-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"]},"293":{"href":"/solutions/collectibles/metadata/800-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"]},"294":{"href":"/solutions/collectibles/metadata/800-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"]},"295":{"href":"/solutions/collectibles/metadata/800-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"]},"296":{"href":"/solutions/collectibles/metadata/800-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"]},"297":{"href":"/solutions/collectibles/metadata/800-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"]},"298":{"href":"/solutions/collectibles/metadata/800-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"]},"299":{"href":"/solutions/collectibles/metadata/800-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"]},"300":{"href":"/solutions/collectibles/metadata/800-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"]},"301":{"href":"/solutions/collectibles/metadata/800-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"]},"302":{"href":"/solutions/collectibles/metadata/800-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"]},"303":{"href":"/solutions/collectibles/metadata/800-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"]},"304":{"href":"/solutions/marketplaces/orderbook/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"305":{"href":"/solutions/marketplaces/orderbook/02-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"]},"306":{"href":"/solutions/marketplaces/orderbook/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our Orderbook API.\n","title":"Template","titles":["Quickstart"]},"307":{"href":"/solutions/marketplaces/orderbook/02-quickstart#try-an-api-call","html":"\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}'
","isPage":false,"text":"\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}'","title":"Try an API Call","titles":["Quickstart"]},"308":{"href":"/solutions/payments/onramps/01-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":[]},"309":{"href":"/solutions/technical-references/wallet-contracts/01-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":[]},"310":{"href":"/solutions/technical-references/wallet-contracts/01-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?"]},"311":{"href":"/solutions/technical-references/wallet-contracts/01-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"]},"312":{"href":"/solutions/technical-references/wallet-contracts/01-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"]},"313":{"href":"/solutions/technical-references/wallet-contracts/01-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?"]},"314":{"href":"/solutions/technical-references/wallet-contracts/01-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"]},"315":{"href":"/solutions/technical-references/wallet-contracts/01-why#examples","html":"\n","isPage":false,"text":"\n\nSequence\nGnosis Safe\nArgent\n","title":"Examples","titles":["Why smart contracts wallets?"]},"316":{"href":"/solutions/technical-references/wallet-contracts/05-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":[]},"317":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"318":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"319":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"320":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"321":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"322":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"323":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"324":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"325":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"326":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"327":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"328":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"329":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"330":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"331":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"332":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"333":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"334":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"335":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"336":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"337":{"href":"/solutions/technical-references/wallet-contracts/06-main-module-upgradeable#mainmoduleupgradeable--configuration-migration","html":"","isPage":true,"text":"","title":"MainModuleUpgradeable & configuration migration","titles":[]},"338":{"href":"/solutions/technical-references/wallet-contracts/07-transaction-encoding#transaction-encoding","html":"","isPage":true,"text":"","title":"Transaction encoding","titles":[]},"339":{"href":"/solutions/technical-references/wallet-contracts/08-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":[]},"340":{"href":"/solutions/technical-references/wallet-contracts/08-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"]},"341":{"href":"/solutions/technical-references/wallet-contracts/08-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"]},"342":{"href":"/solutions/technical-references/wallet-contracts/08-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"]},"343":{"href":"/solutions/technical-references/wallet-contracts/09-nested-transaction-batching#nested-transaction-batching","html":"","isPage":true,"text":"","title":"Nested Transaction Batching","titles":[]},"344":{"href":"/solutions/technical-references/wallet-contracts/10-guest-module#guestmodule-and-on-demand-deployment","html":"","isPage":true,"text":"","title":"GuestModule and on-demand deployment","titles":[]},"345":{"href":"/solutions/technical-references/wallet-contracts/11-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":[]},"346":{"href":"/solutions/technical-references/wallet-contracts/12-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":[]},"347":{"href":"/solutions/technical-references/wallet-contracts/12-contract-audits#quantstamp","html":"\n\n","isPage":false,"text":"\n\nJuly 2nd, 2020\nFeb 24th, 2021\n\n","title":"Quantstamp","titles":["Contract Audits"]},"348":{"href":"/solutions/technical-references/wallet-contracts/12-contract-audits#consensys-diligence","html":"\n\n","isPage":false,"text":"\n\nMay 2020\n\n","title":"Consensys Diligence","titles":["Contract Audits"]},"349":{"href":"/solutions/technical-references/wallet-contracts/12-contract-audits#zellic","html":"\n","isPage":false,"text":"\n\nMarch 2023\n","title":"Zellic","titles":["Contract Audits"]},"350":{"href":"/solutions/wallets/embedded-wallet/01-overview#sequence-embedded-wallet","html":"\n

Sequence Embedded Wallet (or Wallet-as-a-Service) enables the creation, management and usage of fully functional EVM compatible wallets. These 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.

\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.

\n","isPage":true,"text":"\nSequence Embedded Wallet (or Wallet-as-a-Service) enables the creation, management and usage of fully functional EVM compatible wallets. These 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.\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.\n","title":"Sequence Embedded Wallet","titles":[]},"351":{"href":"/solutions/wallets/embedded-wallet/01-overview#architecture-overview","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":"Architecture overview","titles":["Sequence Embedded Wallet"]},"352":{"href":"/solutions/wallets/embedded-wallet/01-overview#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 (coming soon), 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 (coming soon), so you can rest assured that it hasn't been tampered with.\n","title":"Signer 1: Sequence Auth","titles":["Sequence Embedded Wallet","Architecture overview"]},"353":{"href":"/solutions/wallets/embedded-wallet/01-overview#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":["Sequence Embedded Wallet","Architecture overview"]},"354":{"href":"/solutions/wallets/embedded-wallet/01-overview#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
","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","title":"Threat model","titles":["Sequence Embedded Wallet"]},"355":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"356":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out seamless UX of our embedded wallet at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"357":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our embedded wallet.\n","title":"Template","titles":["Quickstart"]},"358":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#getting-started","html":"\n","isPage":false,"text":"\n","title":"Getting Started","titles":["Quickstart"]},"359":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#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 TODO add link 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 TODO add link Unity SDK documentation\n","title":"SDK Installation","titles":["Quickstart","Getting Started"]},"360":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#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"]},"361":{"href":"/solutions/wallets/embedded-wallet/02-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  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\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 {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\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"]},"362":{"href":"/solutions/wallets/embedded-wallet/03-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":[]},"363":{"href":"/solutions/wallets/embedded-wallet/03-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  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\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 {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\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"]},"364":{"href":"/solutions/wallets/embedded-wallet/03-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 \n// Define the user's email address\nconst email = "user@example.com";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \n// This will send an email to the user with an OTP\nconst { instance } = await waas.email.initiateAuth({ email });\n \n// Obtain the OTP from the user\nconst answer = "123456";\n \nconst sessionHash = await sequence.getSessionHash();\nconst { idToken } = await waas.email.finalizeAuth({\n  instance,\n  answer,\n  email,\n  sessionHash,\n});\n \n// Log in using the idToken, as usual\nawait waas.signIn({ idToken }, "Apple Vision Pro - Chrome");
\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 \n// Define the user's email address\nconst email = "user@example.com";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \n// This will send an email to the user with an OTP\nconst { instance } = await waas.email.initiateAuth({ email });\n \n// Obtain the OTP from the user\nconst answer = "123456";\n \nconst sessionHash = await sequence.getSessionHash();\nconst { idToken } = await waas.email.finalizeAuth({\n instance,\n answer,\n email,\n sessionHash,\n});\n \n// Log in using the idToken, as usual\nawait waas.signIn({ idToken }, "Apple Vision Pro - Chrome");\n","title":"Email Sign In / Sign Up","titles":["Session Management","Sign in / Sign Up"]},"365":{"href":"/solutions/wallets/embedded-wallet/03-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  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\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 {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\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"]},"366":{"href":"/solutions/wallets/embedded-wallet/03-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  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\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 {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\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"]},"367":{"href":"/solutions/wallets/embedded-wallet/03-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  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\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 {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\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"]},"368":{"href":"/solutions/wallets/embedded-wallet/05-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":[]},"369":{"href":"/solutions/wallets/embedded-wallet/05-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]},"370":{"href":"/solutions/wallets/embedded-wallet/05-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]},"371":{"href":"/solutions/wallets/embedded-wallet/05-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"]},"372":{"href":"/solutions/wallets/embedded-wallet/05-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"]},"373":{"href":"/solutions/wallets/embedded-wallet/05-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"]},"374":{"href":"/solutions/wallets/embedded-wallet/05-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"]},"375":{"href":"/solutions/wallets/embedded-wallet/05-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"]},"376":{"href":"/solutions/wallets/embedded-wallet/06-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":[]},"377":{"href":"/solutions/wallets/embedded-wallet/06-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: "mumbai",\n  },\n  defaults.TEST\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 [Transaction Receipt Response] 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: "mumbai",\n },\n defaults.TEST\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 [Transaction Receipt Response] 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"]},"378":{"href":"/solutions/wallets/embedded-wallet/06-transaction-receipts#failed-transaction-response","html":"\n

An Embedded 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 TODO: link to wallet API [Transaction Receipt Response] 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: "mumbai",\n  },\n  defaults.TEST\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 Embedded 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 TODO: link to wallet API [Transaction Receipt Response] 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: "mumbai",\n },\n defaults.TEST\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"]},"379":{"href":"/solutions/wallets/universal-wallet/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"380":{"href":"/solutions/wallets/universal-wallet/02-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"]},"381":{"href":"/solutions/wallets/universal-wallet/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template using SequenceKit\n","title":"Template","titles":["Quickstart"]},"382":{"href":"/solutions/wallets/universal-wallet/02-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"]},"383":{"href":"/solutions/wallets/universal-wallet/02-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]},"384":{"href":"/solutions/wallets/universal-wallet/04-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":[]},"385":{"href":"/solutions/wallets/universal-wallet/04-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 embedded 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"]},"386":{"href":"/solutions/wallets/universal-wallet/04-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":[]},"387":{"href":"/solutions/wallets/universal-wallet/05-platforms#platforms","html":"\n","isPage":true,"text":"\n","title":"Platforms","titles":[]},"388":{"href":"/solutions/wallets/universal-wallet/05-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"]},"389":{"href":"/solutions/wallets/universal-wallet/05-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"]},"390":{"href":"/solutions/wallets/universal-wallet/05-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"]},"391":{"href":"/solutions/wallets/universal-wallet/06-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":[]},"392":{"href":"/solutions/wallets/universal-wallet/07-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":[]},"393":{"href":"/solutions/wallets/universal-wallet/07-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"]},"394":{"href":"/solutions/wallets/universal-wallet/07-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"]},"395":{"href":"/solutions/wallets/universal-wallet/07-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"]},"396":{"href":"/solutions/wallets/universal-wallet/07-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"]},"397":{"href":"/solutions/wallets/universal-wallet/examples/02-auth-address#authenticate-users-with-message-signature","html":"\n","isPage":true,"text":"\n","title":"Authenticate Users with Message Signature","titles":[]},"398":{"href":"/solutions/wallets/universal-wallet/examples/02-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"]},"399":{"href":"/solutions/wallets/universal-wallet/examples/02-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"]},"400":{"href":"/solutions/wallets/universal-wallet/examples/02-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"]},"401":{"href":"/solutions/wallets/universal-wallet/examples/04-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":[]},"402":{"href":"/solutions/wallets/universal-wallet/examples/04-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":[]},"403":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#using-session-keys-with-sequence","html":"
\n","isPage":false,"text":"\n","title":"Using Session keys with Sequence","titles":[]},"404":{"href":"/solutions/wallets/universal-wallet/examples/04-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]},"405":{"href":"/solutions/wallets/universal-wallet/examples/04-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]},"406":{"href":"/solutions/wallets/universal-wallet/examples/04-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]},"407":{"href":"/solutions/wallets/universal-wallet/examples/04-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]},"408":{"href":"/solutions/wallets/universal-wallet/examples/04-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]},"409":{"href":"/solutions/wallets/universal-wallet/examples/04-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]},"410":{"href":"/solutions/wallets/universal-wallet/examples/05-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":[]},"411":{"href":"/solutions/wallets/universal-wallet/examples/06-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":[]},"412":{"href":"/solutions/wallets/universal-wallet/examples/07-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":[]},"413":{"href":"/solutions/wallets/universal-wallet/examples/08-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":[]},"414":{"href":"/solutions/wallets/universal-wallet/examples/09-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":[]},"415":{"href":"/solutions/wallets/universal-wallet/examples/10-building-backends#building-backends-with-sequence","html":"\n","isPage":true,"text":"\n","title":"Building Backends with Sequence","titles":[]},"416":{"href":"/solutions/wallets/universal-wallet/examples/10-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]},"417":{"href":"/solutions/wallets/universal-wallet/examples/10-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]},"418":{"href":"/solutions/wallets/universal-wallet/examples/10-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]},"419":{"href":"/solutions/wallets/universal-wallet/examples/10-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]}},"dirtCount":0,"index":[["zellic",{"0":{"349":1}}],["zero",{"0":{"332":1,"333":1},"2":{"328":4,"332":1,"333":1,"334":2}}],["911",{"2":{"300":1}}],["9",{"0":{"300":1}}],["qmw5gvygwb98gsn8vjtrwu4pln6jryexnxzknwpphvwtdm",{"2":{"300":1}}],["qmdjzqexj2wnny7pnnn4kauzckjh4va5xhoxmmis919ev3",{"2":{"293":1}}],["qr",{"2":{"179":2}}],["quantstamp",{"0":{"347":1},"2":{"346":1}}],["quantityraw",{"2":{"94":1}}],["quicker",{"2":{"148":1}}],["quickly",{"2":{"57":1,"102":1,"306":1,"357":1,"381":1}}],["quickstart",{"0":{"55":1,"100":1,"304":1,"355":1,"379":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"101":1,"102":1,"103":1,"104":1,"305":1,"306":1,"307":1,"356":1,"357":1,"358":1,"359":1,"360":1,"361":1,"380":1,"381":1,"382":1,"383":1}}],["quot",{"2":{"6":4,"33":16,"35":8,"41":8,"42":4,"44":2,"46":14,"49":40,"50":8,"52":12,"53":12,"54":2,"64":12,"103":13,"104":4,"118":8,"119":14,"120":4,"122":2,"128":58,"132":8,"133":10,"139":12,"142":2,"143":2,"146":2,"147":2,"152":8,"155":8,"157":38,"168":2,"169":2,"170":12,"171":2,"172":6,"173":4,"174":2,"179":2,"182":2,"210":6,"250":8,"251":2,"252":2,"265":4,"266":4,"269":4,"271":4,"273":4,"275":6,"284":8,"286":4,"292":12,"293":12,"296":2,"297":2,"302":4,"303":2,"307":32,"320":6,"340":4,"342":2,"346":6,"361":4,"363":14,"364":10,"365":26,"366":86,"367":6,"372":2,"373":6,"374":6,"375":6,"377":74,"378":76,"382":13,"383":4,"399":2}}],["queried",{"2":{"335":1,"336":1}}],["queries",{"0":{"64":1},"2":{"32":1,"62":1,"151":1,"152":1,"283":1}}],["querycontractmessagesender",{"2":{"286":1}}],["querycontract",{"2":{"286":2}}],["queryclientprovider",{"2":{"73":3,"74":5,"90":2,"97":2}}],["queryclient",{"2":{"73":4,"74":5,"90":1,"97":1}}],["querying",{"0":{"286":1},"2":{"33":1,"62":1,"283":1,"286":1,"288":1}}],["query",{"0":{"10":1,"12":1},"2":{"5":1,"30":3,"64":3,"72":3,"73":1,"74":1,"149":1,"151":1,"152":1,"286":3}}],["questions",{"2":{"183":1,"204":1,"400":1}}],["question",{"2":{"2":1}}],["🌄",{"2":{"150":1}}],["815189234z",{"2":{"366":1}}],["815189174z",{"2":{"366":1}}],["819722082z",{"2":{"366":1}}],["8545",{"2":{"320":1}}],["8",{"0":{"299":1},"2":{"128":2}}],["6492",{"2":{"183":1,"400":1}}],["6f1",{"2":{"116":1}}],["6",{"0":{"193":1,"297":1,"409":1},"2":{"109":1,"123":1,"308":1,"391":1}}],["66597",{"2":{"94":1}}],["^5",{"2":{"103":1,"382":1}}],["^1",{"2":{"103":1,"382":1}}],["❤️",{"2":{"98":1}}],["🖼️",{"2":{"69":1,"206":1,"385":1}}],["👛",{"2":{"69":1,"206":1,"385":1}}],["🔐🪪",{"2":{"69":1,"206":1,"385":1}}],["⛓️",{"2":{"69":1,"206":1,"385":1}}],["🪙",{"2":{"69":1,"206":1,"385":1}}],["🦊",{"2":{"69":1,"206":1,"385":1}}],["🧰",{"2":{"68":1,"205":1,"384":1}}],["yet",{"2":{"148":1,"333":1,"336":1}}],["yes",{"2":{"119":1}}],["y",{"2":{"115":1}}],["yarn",{"2":{"72":1,"90":1,"103":1,"151":1,"155":1,"209":1,"215":1,"219":1,"226":1,"229":1,"382":1}}],["yields",{"2":{"64":1}}],["you",{"2":{"4":1,"6":4,"30":1,"31":1,"32":1,"34":2,"35":5,"36":4,"42":4,"43":3,"44":3,"45":1,"46":4,"47":1,"51":2,"52":3,"53":3,"54":2,"59":1,"60":2,"61":2,"62":1,"64":4,"67":1,"70":1,"71":1,"72":1,"75":1,"77":1,"78":1,"95":2,"96":3,"97":2,"99":1,"103":3,"109":2,"116":1,"118":5,"119":6,"120":8,"121":4,"122":2,"125":1,"126":1,"128":4,"130":5,"131":6,"132":3,"133":3,"134":5,"135":3,"136":5,"137":3,"138":5,"139":13,"140":3,"141":1,"142":4,"143":8,"144":4,"146":1,"147":5,"148":4,"149":1,"150":3,"151":3,"152":2,"154":2,"156":2,"157":9,"179":1,"182":4,"183":4,"193":1,"194":1,"195":2,"196":1,"197":1,"198":1,"202":1,"203":4,"204":6,"207":1,"209":1,"215":1,"226":1,"251":2,"255":2,"256":1,"260":3,"261":3,"262":2,"263":4,"265":2,"282":1,"283":4,"284":7,"285":2,"286":3,"287":2,"288":4,"289":2,"291":1,"292":4,"295":1,"298":1,"299":4,"300":4,"301":1,"302":1,"303":5,"308":2,"350":1,"352":3,"353":2,"359":1,"360":2,"361":2,"362":3,"364":1,"365":2,"370":1,"375":1,"382":2,"386":1,"391":2,"399":4,"400":4,"409":1,"410":1,"411":2,"412":1,"413":1,"414":1,"418":1,"419":4}}],["yourself",{"2":{"352":1,"362":1}}],["yoursite",{"2":{"157":2,"169":1}}],["your",{"0":{"98":1,"157":1,"177":1,"205":1,"292":1,"294":1,"297":1,"384":1},"1":{"206":1,"385":1},"2":{"2":1,"5":1,"6":3,"7":1,"8":2,"13":1,"30":3,"32":1,"33":4,"34":2,"35":11,"36":3,"41":3,"42":2,"43":1,"44":5,"46":7,"47":2,"49":4,"50":2,"51":1,"52":4,"53":5,"62":1,"64":1,"68":2,"69":3,"70":1,"71":1,"73":3,"90":1,"96":2,"97":2,"98":2,"99":1,"103":4,"107":1,"115":1,"118":3,"119":2,"120":3,"121":3,"122":2,"128":1,"130":1,"133":2,"134":1,"136":1,"138":1,"139":1,"140":1,"143":4,"144":2,"146":2,"147":3,"148":1,"149":2,"150":2,"151":2,"152":1,"154":2,"155":2,"156":2,"157":8,"169":1,"179":1,"182":4,"183":5,"203":3,"204":2,"205":2,"206":3,"207":1,"251":1,"263":3,"264":1,"282":1,"288":2,"289":1,"291":1,"292":2,"293":2,"294":2,"295":1,"296":3,"297":2,"298":1,"299":3,"301":2,"302":1,"303":1,"340":1,"341":1,"352":1,"353":1,"362":1,"363":1,"370":1,"382":4,"384":2,"385":3,"386":1,"389":1,"399":4,"400":5,"419":3}}],["\tmessage",{"2":{"341":1}}],["\tdomain",{"2":{"341":1}}],["\tprimarytype",{"2":{"341":1}}],["\ttypes",{"2":{"341":1}}],["\ttry",{"2":{"54":1}}],["\tverifiedonly",{"2":{"152":1}}],["\t\tcount",{"2":{"341":1}}],["\t\tchainid",{"2":{"341":1}}],["\t\twallet",{"2":{"341":1}}],["\t\tverifyingcontract",{"2":{"341":1}}],["\t\tversion",{"2":{"341":1}}],["\t\tname",{"2":{"341":2}}],["\t\tnetworks",{"2":{"54":1}}],["\t\tperson",{"2":{"341":1}}],["\t\tposition",{"2":{"78":1}}],["\t\tprojectaccesskey",{"2":{"54":1}}],["\t\tdefaulttheme",{"2":{"78":1}}],["\t\tthrow",{"2":{"54":1}}],["\t\treturn",{"2":{"54":1}}],["\t\tsigner",{"2":{"54":1}}],["\t\tsettings",{"2":{"54":1}}],["\t\t",{"2":{"54":3,"78":1,"341":1}}],["\t\t\t\t",{"2":{"54":1}}],["\t\t\t\t\turl",{"2":{"54":1}}],["\t\t\t\tprovider",{"2":{"54":1}}],["\t\t\t\turl",{"2":{"54":1}}],["\t\t\trelayer",{"2":{"54":1}}],["\t\t\trpcurl",{"2":{"54":1}}],["\t\t\tprovider",{"2":{"54":1}}],["\t\t\t",{"2":{"54":2,"341":3}}],["\t",{"2":{"54":11,"78":1,"152":1,"341":3}}],["\treturn",{"2":{"54":1}}],["\tconst",{"2":{"54":12}}],["7908",{"2":{"378":1}}],["712",{"0":{"341":1},"2":{"341":1}}],["7f1",{"2":{"128":2}}],["7",{"0":{"298":1},"2":{"54":1,"72":3,"103":1,"104":1,"382":1,"383":1}}],["721",{"0":{"196":1,"412":1},"2":{"32":1,"196":2,"412":2}}],["5931",{"2":{"378":1}}],["50",{"2":{"366":3}}],["500",{"2":{"49":1}}],["5",{"0":{"192":1,"296":1,"408":1},"2":{"54":1,"72":3,"104":1,"131":1,"214":1,"224":1,"307":1,"383":1}}],["09t18",{"2":{"366":2}}],["03",{"2":{"366":3}}],["02t18",{"2":{"366":4}}],["0a1",{"2":{"128":1}}],["0b3",{"2":{"128":1}}],["0",{"0":{"215":1,"226":1},"2":{"52":1,"53":1,"64":2,"103":3,"115":3,"118":1,"128":2,"139":2,"147":1,"209":2,"215":3,"226":3,"307":1,"320":1,"333":1,"336":1,"342":1,"353":1,"367":1,"377":2,"378":1,"382":3}}],["0x839ee023b21f4ffe2294025de0ac30ba7278d6fd",{"2":{"378":2}}],["0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334",{"2":{"33":1}}],["0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",{"2":{"377":1}}],["0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7",{"2":{"307":1}}],["0x153824576d03629b264683b430bbf9acea1d0975",{"2":{"378":1}}],["0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881",{"2":{"377":1}}],["0x1626ba7e",{"2":{"342":2}}],["0x1693ffc74edbb50d6138517fe5cd64fd1c917709",{"2":{"64":1,"307":1}}],["0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",{"2":{"377":2,"378":1}}],["0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",{"2":{"377":1}}],["0xf9d09d634fb818b05149329c1dccfaea53639d96",{"2":{"345":1}}],["0x27cabc9700ee6db2797b6ac1e1ece81c72a2cd8d",{"2":{"373":1}}],["0x2791bca1f2de4661ed88a30c99a7a9449aa84174",{"2":{"35":1,"93":1}}],["0x6b175474e89094c44da98b954eedeac495271d0f",{"2":{"373":1}}],["0x63a21cca14ed7454b9cf6466af422b5c597c6b57",{"2":{"363":1}}],["0x631998e91476da5b870d741192fc5cbc55f5a52e",{"2":{"33":1,"94":1}}],["0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",{"2":{"366":2}}],["0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",{"2":{"377":1}}],["0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",{"2":{"366":2}}],["0x596af90cecdbf9a768886e771178fd5561dd27ab",{"2":{"320":1}}],["0xe6b9b21c077f382333220a072e4c44280b873907",{"2":{"345":1}}],["0xd72c236be524ec24f72329317e2785e687105b69",{"2":{"377":1}}],["0xd6043fe6f06d90ec2cb36ca5cd1b193a8515f350",{"2":{"363":1}}],["0xd130b43062d875a4b7af3f8fc036bc6e9d3e1b3e",{"2":{"345":1}}],["0xd01f11855bccb95f88d7a48492f66410d4637313",{"2":{"345":1}}],["0x7efe6ce415956c5f80c6530cc6cc81b4808f6118",{"2":{"345":1}}],["0x061150e5574716dbb1a2cdf54b3dce9f94395f65",{"2":{"375":1}}],["0x02390f3e6e5fd1c6786cb78fd3027c117a9955a7",{"2":{"345":1}}],["0x0",{"2":{"342":1}}],["0x0000000000000000000000000000000000000000000000000000000000000000",{"2":{"377":1}}],["0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",{"2":{"377":1}}],["0x00",{"2":{"54":1,"301":1,"378":1}}],["0xcccccccccccccccccccccccccccccccccccccccc",{"2":{"341":1}}],["0xc2be9cf6d9ee4fd211f88620760e829792659b16",{"2":{"64":1}}],["0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",{"2":{"341":1}}],["0xb537a160472183f2150d42eb1c3dd6684a55f74c",{"2":{"307":1}}],["0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7",{"2":{"303":1}}],["0x9766bf76b2e3e7bcb8c61410a3fc873f1e89b43f",{"2":{"132":2}}],["0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",{"2":{"46":1}}],["0x",{"2":{"49":1,"53":1,"197":3,"198":1,"374":1,"378":1,"413":3,"414":1}}],["0xsequence",{"0":{"157":1},"2":{"33":1,"35":2,"41":1,"46":1,"49":5,"54":2,"59":1,"61":1,"64":1,"66":2,"72":10,"73":2,"74":4,"75":1,"76":1,"90":4,"91":1,"95":1,"97":1,"103":8,"104":3,"118":1,"151":5,"152":2,"156":1,"157":3,"182":1,"183":4,"188":1,"200":1,"201":2,"208":1,"209":5,"210":1,"215":4,"218":1,"219":5,"220":1,"226":4,"228":1,"229":2,"236":2,"238":1,"244":1,"246":1,"250":1,"340":1,"341":2,"359":1,"361":1,"363":1,"364":1,"365":1,"366":1,"367":1,"377":1,"378":1,"382":7,"383":3,"399":1,"400":4,"404":1,"416":1,"417":2}}],["||",{"2":{"49":4}}],["x19ethereum",{"2":{"340":1}}],["xmlns",{"2":{"128":4}}],["xml",{"2":{"128":6}}],["x",{"0":{"215":1,"226":1},"2":{"52":1,"53":1,"115":1,"151":1,"215":1,"217":1,"226":1,"303":1,"353":2}}],["xyz",{"2":{"49":1,"50":1,"141":1,"151":1,"152":1}}],["x27",{"2":{"2":1,"6":1,"8":1,"33":1,"35":18,"42":1,"43":1,"44":2,"47":1,"49":2,"51":1,"52":2,"53":2,"54":8,"60":1,"61":6,"64":1,"66":1,"70":1,"73":18,"74":22,"75":5,"76":2,"78":5,"80":4,"86":9,"87":9,"90":2,"91":2,"93":6,"94":6,"96":6,"97":17,"112":1,"115":2,"116":1,"118":1,"119":2,"120":2,"121":1,"125":1,"126":1,"128":8,"130":6,"131":1,"133":1,"134":4,"135":1,"136":4,"138":4,"139":7,"142":1,"143":3,"144":1,"146":1,"147":3,"148":1,"150":2,"151":8,"152":1,"156":3,"157":5,"159":2,"161":1,"164":1,"179":2,"181":1,"182":5,"183":16,"186":2,"188":4,"189":2,"190":1,"191":4,"192":2,"193":4,"195":10,"196":10,"197":16,"198":17,"201":1,"203":3,"204":2,"207":1,"220":10,"230":4,"233":1,"238":4,"239":4,"249":4,"250":3,"251":1,"263":1,"265":1,"284":6,"286":3,"288":1,"292":1,"294":3,"301":1,"302":1,"307":4,"313":2,"316":1,"318":1,"320":4,"321":2,"322":1,"327":1,"328":5,"329":1,"332":1,"333":2,"334":2,"335":1,"336":1,"340":2,"341":28,"342":1,"345":12,"352":3,"353":3,"354":2,"360":1,"361":2,"362":1,"363":1,"364":1,"365":8,"370":2,"372":1,"386":1,"394":1,"398":1,"399":5,"400":16,"402":2,"404":4,"405":2,"406":1,"407":4,"408":2,"409":4,"411":10,"412":10,"413":16,"414":17,"417":1,"419":3}}],["~0",{"2":{"42":1}}],["2123",{"2":{"366":2}}],["22",{"2":{"366":3}}],["230",{"2":{"365":1}}],["24th",{"2":{"347":1}}],["2nd",{"2":{"347":1}}],["2fa",{"2":{"123":2}}],["2",{"0":{"40":1,"46":1,"124":1,"189":1,"255":1,"293":1,"353":1,"405":1},"1":{"47":1,"48":1,"125":1,"126":1,"127":1,"128":1,"129":1},"2":{"46":1,"54":1,"72":3,"118":1,"128":2,"253":1,"292":1,"307":1,"351":2,"353":2}}],["2020",{"2":{"347":1,"348":1}}],["2023",{"2":{"128":4,"349":1,"366":4}}],["2022",{"2":{"128":3}}],["2021",{"2":{"116":1,"128":1,"347":1}}],["200000000000000000000",{"2":{"373":1}}],["200",{"2":{"49":1,"175":1,"373":1}}],["20",{"0":{"195":1,"411":1},"2":{"35":1,"42":2,"43":1,"195":3,"196":1,"197":1,"411":3,"412":1,"413":1}}],["`failedtransactionresponse`",{"2":{"378":1}}],["`wallet",{"2":{"365":1}}],["`authorize",{"2":{"190":1,"406":1}}],["`invalid",{"2":{"183":1,"400":1}}],["`proof",{"2":{"183":1,"400":1}}],["`senttransactionresponse`",{"2":{"378":1}}],["`sequenceconfig`",{"2":{"128":2}}],["`something",{"2":{"49":2}}],["`https",{"2":{"54":3}}],["`block",{"2":{"49":1}}],["`unauthorized",{"2":{"49":1}}],["`unauthorized`",{"2":{"49":1}}],["`unexpected",{"2":{"35":2,"41":1}}],["`$",{"2":{"49":1,"61":2,"361":2,"363":2,"364":2,"365":2,"366":2,"367":2,"377":2,"378":2}}],["`your",{"2":{"46":1}}],["`",{"2":{"35":2,"41":1,"46":1,"49":5,"54":2,"61":2,"183":1,"190":1,"361":2,"363":2,"364":2,"365":3,"366":2,"367":2,"377":2,"378":2,"400":1,"406":1}}],["$",{"2":{"35":2,"41":1,"46":1,"49":4,"54":2,"183":2,"365":1,"400":2}}],["42",{"2":{"366":4}}],["42161",{"2":{"35":1,"41":1,"373":1,"377":1}}],["401",{"2":{"49":2}}],["400",{"2":{"49":6}}],["4",{"0":{"54":1,"191":1,"295":1,"407":1},"2":{"43":1,"44":1,"307":1,"341":1}}],["486",{"2":{"6":8}}],["=0",{"2":{"217":1}}],["===",{"2":{"35":1,"49":10,"193":1,"409":1}}],["=",{"0":{"215":1,"226":1},"2":{"35":20,"41":9,"42":6,"46":8,"49":14,"50":4,"51":1,"54":17,"61":1,"64":4,"73":8,"74":10,"75":6,"76":5,"78":1,"90":2,"91":6,"92":1,"93":2,"96":4,"97":3,"134":2,"136":2,"138":2,"141":1,"143":2,"151":2,"152":5,"155":3,"157":11,"158":1,"181":2,"182":2,"183":6,"188":3,"189":3,"190":2,"191":3,"192":2,"193":1,"194":3,"195":12,"196":13,"197":13,"198":13,"209":1,"210":2,"215":1,"220":1,"226":1,"230":3,"238":2,"239":5,"249":3,"250":3,"254":2,"255":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":2,"263":1,"265":2,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":2,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":2,"283":1,"284":10,"286":6,"287":2,"288":7,"320":4,"328":1,"333":1,"334":1,"340":3,"341":4,"342":1,"345":1,"361":1,"363":3,"364":6,"365":14,"366":2,"367":2,"371":1,"372":2,"373":2,"374":1,"375":2,"377":2,"378":2,"398":2,"399":2,"400":6,"404":3,"405":3,"406":2,"407":3,"408":2,"409":1,"410":3,"411":12,"412":13,"413":13,"414":13}}],["ripped",{"2":{"119":1}}],["risks",{"2":{"114":1,"396":1}}],["right",{"2":{"81":3,"115":1,"147":1}}],["range",{"2":{"269":1}}],["randomly",{"2":{"44":1,"45":1}}],["randomnoncespace2",{"2":{"42":2}}],["randomnoncespace1",{"2":{"42":2}}],["randombytes",{"2":{"42":2,"189":1,"405":1}}],["random",{"2":{"42":1,"254":1,"327":1}}],["rainbow",{"2":{"218":1,"220":1,"312":1}}],["rainbowkit",{"0":{"218":1},"1":{"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1},"2":{"204":1,"212":1,"218":3,"219":3,"220":3,"222":1,"225":1,"227":1}}],["ration",{"2":{"169":1}}],["ratio",{"2":{"157":2}}],["rather",{"2":{"131":1,"283":1}}],["raw",{"2":{"132":2}}],["rawtransactions",{"2":{"134":1,"136":1,"138":1}}],["rawtransaction",{"0":{"132":1},"2":{"132":1,"134":2,"136":2,"138":2,"140":2}}],["ramp",{"2":{"109":5,"157":2,"173":1,"308":5,"391":5}}],["ramps",{"0":{"109":1,"308":1,"391":1}}],["rotation",{"2":{"314":1}}],["root",{"2":{"121":1,"365":1}}],["router=",{"2":{"365":1}}],["routerprovider",{"2":{"365":2}}],["router",{"2":{"216":6,"217":2,"225":6,"227":2,"365":7}}],["route",{"2":{"120":1,"283":1}}],["robust",{"2":{"68":1,"205":1,"384":1}}],["role",{"2":{"46":6}}],["runtime",{"2":{"316":1}}],["running",{"2":{"158":1,"250":1}}],["runs",{"2":{"157":2}}],["run",{"2":{"44":1,"116":1,"156":1}}],["rpcurl",{"2":{"54":2,"155":2,"183":3,"400":3}}],["rpc",{"2":{"33":3,"150":2,"154":2,"155":2,"263":2,"307":1,"350":1}}],["revertreason",{"2":{"377":2}}],["revert",{"2":{"330":1}}],["revertonerror",{"0":{"330":1},"2":{"328":2,"330":1,"333":1,"334":1}}],["reverted",{"2":{"35":1,"377":1}}],["rejected",{"2":{"319":1,"327":1}}],["rewrite",{"2":{"288":2}}],["retrieving",{"0":{"335":1,"336":1},"1":{"336":1}}],["retrieve",{"2":{"157":1,"193":1,"194":1,"409":1,"410":1}}],["returns",{"2":{"43":2,"134":1,"136":1,"138":1,"257":1,"322":1,"336":1,"342":1,"366":1,"371":1,"372":4,"373":2}}],["returning",{"2":{"35":2,"375":1}}],["return",{"0":{"324":1},"2":{"6":1,"35":2,"41":1,"49":17,"52":1,"53":1,"54":2,"73":1,"74":2,"75":1,"76":1,"90":1,"91":1,"96":2,"97":1,"132":1,"163":1,"249":2,"250":2,"276":1,"281":1,"286":1,"335":1,"342":5,"365":3,"375":1,"376":1,"377":1}}],["returned",{"2":{"6":2,"33":1,"124":1,"167":1,"182":1,"340":1,"341":1,"378":1,"399":1}}],["reflect",{"2":{"179":1}}],["refreshedat",{"2":{"366":2}}],["refreshes",{"2":{"147":1}}],["refresh",{"0":{"165":1},"2":{"165":2,"303":3}}],["referencing",{"2":{"319":1,"327":1,"332":1}}],["references",{"2":{"151":1,"346":1}}],["reference",{"2":{"122":1,"134":1,"136":1,"138":1,"150":2}}],["referred",{"2":{"137":1}}],["refer",{"2":{"59":1,"73":1,"96":1,"103":1,"359":1}}],["reduce",{"2":{"186":1,"402":1}}],["redirect",{"2":{"160":1}}],["reddit",{"2":{"130":1,"131":1,"142":1,"143":1}}],["redeploy",{"2":{"52":1,"54":1}}],["remember",{"2":{"363":1}}],["removing",{"2":{"139":1}}],["removed",{"2":{"114":1,"396":1}}],["remove",{"2":{"114":1,"396":1}}],["remoteconfigtracker",{"2":{"183":1,"400":1}}],["remotely",{"2":{"156":1}}],["remote",{"0":{"16":1,"22":1},"2":{"183":1,"340":1,"341":1,"400":1}}],["remaining",{"2":{"111":1,"393":1}}],["register",{"2":{"124":2}}],["registry",{"2":{"30":1}}],["region",{"2":{"109":1,"308":1,"391":1}}],["relevant",{"2":{"377":1}}],["release",{"2":{"120":1}}],["reload",{"2":{"303":1}}],["rely",{"2":{"97":1}}],["relayed",{"2":{"41":1}}],["relayerurl",{"2":{"54":2}}],["relayer",{"0":{"8":1,"43":1},"1":{"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1},"2":{"8":6,"13":2,"35":2,"42":1,"43":2,"46":4,"54":1}}],["relaying",{"0":{"34":1},"1":{"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1},"2":{"36":1,"203":1,"419":1}}],["reports",{"2":{"346":1}}],["repo",{"2":{"177":1}}],["repository",{"2":{"44":1,"77":1,"365":1}}],["replay",{"2":{"164":1,"365":1}}],["replaced",{"2":{"144":1}}],["replace",{"0":{"184":1},"2":{"52":1,"53":1,"111":1,"114":1,"119":1,"121":1,"128":1,"144":1,"155":1,"393":1,"396":1}}],["represented",{"2":{"132":2}}],["represents",{"2":{"64":2,"333":1}}],["reason",{"2":{"333":1,"377":1,"378":1}}],["reasons",{"2":{"327":1}}],["reached",{"2":{"340":1,"341":1}}],["reach",{"2":{"148":1,"183":1,"204":1,"400":1}}],["reactdom",{"2":{"365":1}}],["react",{"0":{"77":1,"235":1},"1":{"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1},"2":{"72":3,"73":1,"74":1,"76":1,"204":1,"235":3,"236":1,"238":2,"239":1,"243":1,"365":8}}],["reader",{"2":{"183":1,"400":1}}],["reading",{"0":{"320":1},"2":{"141":1}}],["readable",{"2":{"133":1,"139":1}}],["ready",{"2":{"70":1,"207":1,"298":1,"303":1,"386":1}}],["read",{"0":{"141":1},"2":{"42":1,"120":2,"133":2,"150":1,"157":1,"286":1,"303":1,"320":1}}],["really",{"2":{"203":1,"265":1,"419":1}}],["realm",{"2":{"68":1,"140":1,"205":1,"384":1}}],["real",{"2":{"30":1,"33":1,"350":1}}],["recent",{"2":{"216":1,"225":1,"268":1}}],["receipts",{"0":{"376":1},"1":{"377":1,"378":1},"2":{"261":1,"376":2,"377":1}}],["receipt",{"2":{"140":1,"259":1,"261":1,"281":1,"282":1,"284":5,"287":1,"288":2,"377":5,"378":1}}],["receives",{"2":{"372":1}}],["received",{"2":{"130":1}}],["receive",{"2":{"46":1,"123":1,"140":1,"143":1,"260":2,"261":2,"283":1,"285":1}}],["recovery",{"2":{"314":1,"354":1}}],["recoveredsessionaddress",{"2":{"193":2,"409":2}}],["recognize",{"2":{"120":1,"143":1}}],["recommended",{"0":{"118":1},"1":{"119":1},"2":{"131":1,"133":1,"134":1,"136":1,"138":1,"139":1,"142":1,"143":1,"220":1,"249":1,"250":1,"262":1,"265":1,"275":1,"282":1,"283":1,"288":1}}],["recommendations",{"2":{"114":1,"396":1}}],["recommend",{"2":{"33":1,"122":2,"139":1,"141":1,"143":1,"151":1}}],["recipient4address",{"2":{"198":1,"414":1}}],["recipient3address",{"2":{"198":1,"414":1}}],["recipient2address",{"2":{"195":1,"196":1,"197":1,"198":2,"411":1,"412":1,"413":1,"414":2}}],["recipient2",{"2":{"42":1}}],["recipient1address",{"2":{"195":1,"196":1,"197":1,"198":2,"411":1,"412":1,"413":1,"414":2}}],["recipient1",{"2":{"42":1}}],["recipient",{"2":{"35":1,"195":1,"196":1,"197":1,"373":1,"411":1,"412":1,"413":1}}],["recipientaddress",{"2":{"35":1,"41":1,"194":1,"195":1,"196":1,"197":1,"282":1,"410":1,"411":1,"412":1,"413":1}}],["rest",{"2":{"249":1,"250":1,"255":1,"321":1,"352":1}}],["restofonboardparams",{"2":{"230":1}}],["restwallets",{"2":{"230":1}}],["restarted",{"2":{"128":1}}],["respect",{"2":{"342":1}}],["respectively",{"2":{"375":1}}],["respective",{"2":{"153":1,"204":1}}],["responsibility",{"2":{"327":1}}],["responsive",{"2":{"263":1}}],["response",{"0":{"377":1,"378":1},"2":{"49":19,"64":2,"198":4,"283":1,"377":2,"378":2,"414":4}}],["resource",{"2":{"119":1}}],["resources",{"2":{"118":1,"121":6}}],["res",{"2":{"49":4,"128":2,"363":2}}],["resulting",{"2":{"340":1,"341":1,"342":1}}],["result",{"2":{"43":1,"45":1,"46":1,"131":2,"132":1,"143":3,"286":1,"318":1,"372":2,"378":1}}],["results",{"2":{"33":3,"147":1}}],["resilient",{"2":{"30":1,"154":1}}],["re",{"2":{"30":1,"34":1,"43":1,"70":1,"115":1,"130":2,"131":1,"133":1,"139":3,"142":1,"143":1,"151":1,"156":1,"165":1,"207":1,"386":1}}],["rendering",{"2":{"216":1,"225":1,"248":1,"249":2}}],["rendered",{"2":{"64":1,"168":1,"248":1,"249":1,"250":4,"327":1,"333":1}}],["render",{"2":{"30":2,"248":1,"330":1,"365":1}}],["requiring",{"2":{"157":1,"185":1,"186":1,"288":1,"375":1,"401":1,"402":1}}],["requirefreshsigner",{"2":{"345":1}}],["requirements",{"0":{"116":1},"2":{"124":1}}],["required",{"2":{"51":1,"115":1,"127":1,"156":1,"272":1,"283":1,"351":1,"353":1,"373":1}}],["require",{"2":{"8":1,"113":1,"183":1,"186":1,"248":1,"250":1,"288":1,"332":1,"363":1,"369":1,"370":1,"395":1,"400":1,"402":1}}],["requires",{"2":{"7":1,"103":1,"144":1,"151":1,"194":1,"263":1,"373":1,"382":1,"410":1}}],["requests",{"2":{"13":1,"46":1,"62":1,"150":1,"179":1,"263":1}}],["request",{"0":{"65":1},"2":{"6":1,"7":1,"49":20,"52":1,"54":6,"62":1,"98":1,"140":1,"179":1,"307":1,"377":1,"378":1}}],["+=",{"2":{"130":1,"131":2,"142":1,"143":2}}],["+",{"2":{"8":1,"114":1,"118":1,"120":1,"156":1,"177":1,"208":2,"217":2,"218":3,"227":2,"228":2,"234":1,"244":1,"246":1,"283":1,"300":1,"340":2,"362":2,"368":1,"396":1}}],["vulnerate",{"2":{"354":1}}],["v6",{"0":{"235":1},"1":{"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1},"2":{"235":2,"236":1,"238":1,"243":1}}],["vocs",{"0":{"184":1}}],["void",{"2":{"130":1,"131":3,"142":2,"143":3}}],["v3",{"2":{"183":1,"400":1}}],["ve",{"2":{"119":1,"125":1,"126":1,"130":2,"134":1,"135":1,"136":1,"138":1,"139":1,"147":1,"156":2,"204":1,"251":1,"263":1,"288":1,"299":1,"302":1}}],["verifies",{"2":{"342":1}}],["verifiedby",{"2":{"64":1}}],["verifiedonly",{"2":{"33":2}}],["verified",{"2":{"33":3,"64":2,"131":1,"161":1,"342":1,"354":1}}],["verifiable",{"2":{"186":1,"402":1}}],["verifing",{"2":{"64":1}}],["verification",{"0":{"342":1},"2":{"49":1,"339":1,"369":1,"370":1}}],["verifying",{"2":{"353":1}}],["verifymessage",{"2":{"193":1,"409":1}}],["verify",{"0":{"191":1,"193":1,"407":1,"409":1},"2":{"49":5,"182":2,"183":1,"191":1,"193":1,"203":1,"352":1,"399":2,"400":1,"407":1,"409":1,"419":1}}],["version=",{"2":{"128":2}}],["versioning",{"2":{"115":1}}],["versions",{"0":{"215":1,"226":1,"249":1},"2":{"35":1,"128":3,"217":1,"235":1,"248":1}}],["version",{"0":{"250":1},"2":{"35":2,"103":1,"115":3,"119":1,"120":1,"147":1,"209":2,"215":2,"217":2,"226":2,"248":1,"382":1}}],["versus",{"2":{"35":1}}],["very",{"2":{"33":1,"121":1,"132":1,"143":1,"156":1}}],["vision",{"2":{"364":1}}],["visible",{"2":{"109":1,"308":1,"391":1}}],["virtual",{"2":{"313":1,"342":1}}],["viem",{"2":{"72":4,"215":1,"226":1}}],["viewable",{"2":{"131":1}}],["viewer",{"0":{"53":1},"2":{"53":1}}],["view",{"2":{"45":1,"88":3,"128":2,"150":1,"298":1,"322":1,"342":1,"377":1,"378":1}}],["via",{"0":{"179":1},"2":{"69":1,"95":1,"104":1,"109":3,"111":1,"120":3,"121":1,"124":2,"143":2,"147":1,"156":4,"179":3,"206":1,"209":1,"219":1,"236":1,"258":1,"259":1,"260":1,"261":1,"288":1,"308":3,"353":1,"370":1,"383":1,"385":1,"391":3,"393":1}}],["video",{"2":{"6":2,"204":1}}],["v2",{"2":{"35":2,"183":2,"245":1,"400":2}}],["v18",{"2":{"151":1}}],["v1",{"2":{"35":1}}],["vary",{"2":{"103":1,"382":1}}],["vars",{"2":{"50":2}}],["varies",{"2":{"320":1}}],["variety",{"2":{"8":1,"150":1}}],["variable",{"2":{"139":1}}],["variables",{"0":{"50":1},"2":{"49":1,"50":1,"139":1}}],["variation",{"2":{"134":1,"136":1,"138":1}}],["various",{"2":{"72":1,"81":1,"217":1}}],["valueasstring",{"2":{"139":2,"140":1}}],["value=",{"2":{"128":2}}],["value",{"0":{"332":1},"2":{"53":1,"132":4,"133":1,"161":1,"194":1,"195":2,"197":2,"198":5,"242":1,"285":1,"320":1,"328":2,"332":1,"334":1,"342":3,"373":1,"374":1,"375":1,"377":1,"378":2,"410":1,"411":2,"413":2,"414":5}}],["values",{"0":{"324":1},"2":{"6":1,"80":1,"81":1,"86":1,"87":1,"121":1,"132":1,"139":1,"147":1,"265":1,"266":1,"269":1,"271":1,"273":1,"275":1}}],["validity",{"2":{"328":1}}],["valid`",{"2":{"183":1,"400":1}}],["validating",{"2":{"183":1,"400":1}}],["validations",{"0":{"374":1}}],["validation",{"0":{"321":1,"368":1,"371":1,"372":1,"375":1},"1":{"322":1,"323":1,"324":1,"369":1,"370":1,"371":1,"372":2,"373":3,"374":2,"375":1},"2":{"49":1,"321":1,"363":1,"370":1,"371":2,"372":1,"373":5,"374":3,"375":4}}],["validated",{"2":{"323":1,"327":1,"372":1}}],["validatesession",{"2":{"372":2}}],["validatesequencewalletproof",{"2":{"183":2,"400":2}}],["validates",{"2":{"322":1}}],["validate",{"2":{"183":1,"321":1,"322":1,"342":2,"369":1,"372":1,"400":1}}],["validator",{"2":{"183":3,"400":3}}],["valid",{"2":{"49":2,"157":1,"193":1,"301":1,"327":1,"333":1,"342":4,"366":1,"372":1,"409":1}}],["july",{"2":{"347":1}}],["just",{"2":{"33":1,"36":1,"53":1,"69":1,"119":1,"130":1,"139":2,"156":3,"182":1,"203":1,"206":1,"302":1,"385":1,"399":1,"419":1}}],["joined",{"2":{"340":1,"341":1}}],["java",{"2":{"203":1,"419":1}}],["javascript",{"2":{"46":1,"62":1,"150":1,"183":1,"200":1,"400":1,"416":1}}],["js",{"0":{"104":1,"151":1,"177":2,"248":1,"249":1,"250":1,"383":1},"2":{"64":1,"67":1,"103":1,"104":3,"150":1,"151":1,"156":2,"202":1,"203":1,"204":1,"248":2,"250":1,"382":1,"383":3,"418":1,"419":1}}],["jsonrpcprovider",{"2":{"46":1,"54":2,"155":1,"183":1,"320":1,"400":1}}],["json",{"2":{"6":2,"44":1,"49":5,"52":1,"53":1,"103":2,"120":2,"292":3,"293":2,"294":1,"295":1,"299":1,"300":3,"301":1,"307":1,"382":2}}],["jwt",{"2":{"6":1,"123":1}}],["1699442705",{"2":{"378":1}}],["1699442705965",{"2":{"378":1}}],["1699443005",{"2":{"378":1}}],["191",{"0":{"340":1},"2":{"340":1}}],["11",{"0":{"302":1},"2":{"366":4}}],["1155",{"0":{"197":1,"413":1},"2":{"32":1,"197":2,"297":1,"299":1,"413":2}}],["13+",{"2":{"248":1}}],["13",{"0":{"250":1},"2":{"248":1,"250":1}}],["137",{"2":{"35":3,"41":2,"42":2,"73":1,"74":1,"93":1,"97":1,"230":1,"238":1,"378":2}}],["1271",{"2":{"327":1,"339":1}}],["12",{"0":{"215":1,"226":1,"303":1},"2":{"215":1,"217":1,"226":1}}],["123456",{"2":{"364":1,"372":1}}],["123",{"2":{"164":1,"300":2}}],["1200x400",{"2":{"157":2,"169":1}}],["18",{"2":{"132":2,"133":1}}],["102951017z",{"2":{"366":1}}],["102950917z",{"2":{"366":1}}],["109787921z",{"2":{"366":1}}],["109234880945084120673",{"2":{"366":4}}],["10",{"0":{"301":1},"2":{"366":2,"372":1}}],["10^decimals",{"2":{"132":1}}],["10^18",{"2":{"132":1}}],["100",{"2":{"94":1,"175":1}}],["1000000000000000000",{"2":{"132":1,"194":1,"198":3,"410":1,"414":3}}],["10000000000",{"2":{"93":1}}],["1447300",{"2":{"128":1}}],["14",{"2":{"118":1}}],["1",{"0":{"39":1,"44":1,"123":1,"188":1,"254":1,"292":1,"352":1,"404":1},"1":{"45":1},"2":{"6":13,"35":4,"41":2,"46":1,"54":1,"115":1,"125":1,"126":1,"128":3,"132":4,"139":1,"140":1,"157":2,"162":1,"169":1,"209":1,"214":1,"215":2,"224":1,"226":2,"260":1,"261":1,"282":1,"288":2,"292":1,"301":1,"303":1,"307":1,"341":2,"353":1,"374":2,"375":2}}],["human",{"2":{"133":1,"139":1}}],["html",{"2":{"128":1}}],["http",{"2":{"73":2,"74":2,"128":4,"150":2,"320":1}}],["https",{"2":{"6":8,"33":2,"35":1,"36":1,"41":1,"43":2,"45":1,"46":1,"49":2,"50":1,"52":1,"53":1,"64":1,"66":1,"104":2,"106":1,"107":1,"118":1,"128":2,"141":1,"150":2,"151":2,"152":2,"155":1,"156":1,"157":2,"169":1,"183":2,"201":1,"208":1,"218":1,"228":1,"244":1,"246":1,"250":1,"300":1,"303":2,"307":1,"366":4,"383":2,"388":1,"389":1,"400":2,"417":1}}],["h",{"2":{"52":1,"53":1}}],["home",{"2":{"249":3}}],["hope",{"2":{"147":1,"148":1}}],["hosts",{"2":{"151":1,"152":1}}],["host",{"2":{"150":1,"161":1}}],["hosting",{"2":{"113":1,"291":1,"395":1}}],["hosted",{"2":{"43":1,"352":1,"353":1}}],["horizon",{"2":{"113":3,"395":3}}],["hooks",{"2":{"249":2}}],["hook",{"2":{"75":2,"76":1,"91":1,"249":1,"365":1,"374":1,"375":2}}],["however",{"2":{"95":1,"99":1,"119":1,"120":1,"144":1,"288":1,"370":1}}],["how",{"0":{"145":1,"249":1,"250":1,"290":1},"1":{"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1},"2":{"6":1,"42":1,"43":1,"78":1,"96":2,"109":1,"114":1,"120":1,"122":1,"130":1,"133":2,"135":1,"137":1,"139":1,"149":1,"156":1,"183":1,"252":1,"265":1,"285":1,"303":1,"308":1,"391":1,"396":1,"400":1}}],["he",{"2":{"372":1}}],["hesitate",{"2":{"148":1}}],["header",{"2":{"307":1}}],["headers",{"2":{"49":5}}],["head",{"2":{"293":1,"302":1}}],["heavily",{"2":{"251":1}}],["heard",{"2":{"135":1}}],["hex",{"2":{"340":1,"341":1}}],["hexadecimal",{"2":{"132":1,"143":1,"262":2,"265":2,"266":1,"268":1,"269":1,"270":1,"271":2,"273":1,"275":1}}],["hexlify",{"2":{"42":2,"189":1,"405":1}}],["hello",{"2":{"44":1,"45":1,"340":1}}],["helper",{"2":{"132":1}}],["help",{"2":{"33":1,"113":1,"119":1,"122":1,"147":1,"148":1,"183":1,"186":1,"204":1,"291":1,"395":1,"400":1,"402":1}}],["helpful",{"2":{"33":1,"252":1}}],["here",{"2":{"31":1,"32":1,"42":1,"54":1,"64":1,"78":1,"96":1,"141":1,"143":1,"150":1,"157":1,"183":1,"213":1,"217":4,"223":1,"227":3,"234":1,"243":1,"246":1,"250":2,"365":1,"400":1}}],["hint",{"2":{"161":1}}],["hidden",{"2":{"122":1}}],["highly",{"2":{"248":1,"263":1,"265":1,"283":1}}],["high",{"2":{"30":1}}],["higher",{"2":{"7":1}}],["history",{"2":{"30":1,"32":2,"144":1}}],["happen",{"2":{"353":1,"373":1}}],["hardware",{"2":{"352":1}}],["harmoniously",{"2":{"216":1,"225":1}}],["had",{"2":{"114":1,"396":1}}],["handlegooglelogin",{"2":{"365":3}}],["handlers",{"2":{"157":1}}],["handler",{"2":{"131":1,"142":1,"143":1,"365":3}}],["handlerequest",{"2":{"49":2}}],["handles",{"2":{"131":1,"362":1}}],["handle",{"2":{"49":8,"50":1,"54":6,"130":1,"139":1,"155":2,"365":1}}],["having",{"2":{"34":1,"42":1,"43":1,"122":1,"154":1,"157":1}}],["haven",{"2":{"118":1,"120":1}}],["have",{"2":{"4":1,"33":1,"35":1,"36":3,"46":1,"49":2,"53":1,"61":1,"64":1,"99":1,"118":1,"119":1,"128":1,"132":1,"134":1,"136":1,"138":1,"139":1,"148":2,"154":1,"156":1,"157":1,"182":1,"183":2,"198":1,"255":1,"264":1,"288":1,"289":1,"292":1,"301":1,"333":1,"361":1,"399":1,"400":2,"414":1}}],["hasn",{"2":{"352":1}}],["hasheddata",{"2":{"341":2}}],["hashes",{"2":{"260":1,"327":1}}],["hash",{"2":{"43":1,"49":2,"54":1,"64":2,"260":1,"267":1,"276":1,"279":1,"280":1,"281":1,"321":1,"322":1,"326":1,"327":1,"335":1,"342":6,"365":3,"377":2}}],["has",{"2":{"2":1,"33":1,"64":1,"67":1,"99":1,"112":1,"133":2,"174":1,"179":1,"202":1,"289":1,"319":1,"320":1,"327":1,"364":2,"374":2,"375":1,"394":1,"418":1}}],["3rd",{"2":{"353":1}}],["32",{"2":{"189":1,"366":3,"405":1}}],["36000",{"2":{"162":1}}],["30",{"2":{"43":1}}],["3",{"0":{"41":1,"49":1,"190":1,"294":1,"406":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"6":1,"111":1,"116":1,"128":2,"157":2,"169":1,"307":1,"366":1,"393":1}}],["python",{"2":{"203":1,"419":1}}],["png",{"2":{"157":2,"169":1}}],["pnpm",{"2":{"44":2,"49":1,"54":1,"59":1,"72":1,"90":1,"103":2,"151":1,"155":1,"359":1,"382":1}}],["pc",{"0":{"127":1},"2":{"116":1}}],["philosophy",{"2":{"110":1,"392":1}}],["phone",{"2":{"106":1,"107":1,"156":2,"353":1,"388":1,"389":1}}],["pkey",{"2":{"49":4,"50":1,"54":1}}],["person",{"2":{"341":1}}],["perspective",{"2":{"179":1}}],["perfectly",{"2":{"200":1,"416":1}}],["perfect",{"2":{"147":2}}],["performs",{"2":{"353":1}}],["performed",{"2":{"264":1,"375":1}}],["perform",{"2":{"44":1,"45":1,"49":1,"52":1,"62":1,"147":1,"163":1,"192":1,"373":1,"408":1}}],["permission",{"2":{"46":1}}],["popups",{"2":{"157":1}}],["popup",{"2":{"157":2}}],["popular",{"0":{"312":1},"2":{"33":2,"68":1,"69":1,"205":1,"206":1,"251":1,"384":1,"385":1}}],["potentially",{"2":{"251":1,"264":1}}],["potential",{"2":{"69":1,"206":1,"385":1}}],["powered",{"2":{"128":5}}],["power",{"2":{"69":1,"206":1,"385":1}}],["position",{"0":{"81":1},"2":{"81":1}}],["possible",{"2":{"80":1,"81":1,"157":1,"179":1,"185":2,"286":1,"351":1,"354":1,"401":2}}],["possibilities",{"2":{"68":1,"140":1,"205":1,"384":1}}],["post",{"2":{"43":1,"49":5,"52":1,"53":1,"54":1,"118":1,"130":1,"131":1,"142":1,"143":1,"307":1}}],["points",{"2":{"144":1}}],["point",{"2":{"44":1,"96":1,"132":1,"264":1,"265":1,"299":1}}],["polygonindexer",{"2":{"141":1}}],["polygon",{"2":{"35":2,"41":1,"52":1,"64":1,"73":2,"74":2,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":2,"140":1,"141":1,"142":1,"143":1,"150":2,"152":1,"157":1,"183":1,"210":1,"220":1,"262":1,"263":1,"378":1,"400":1}}],["pixel",{"2":{"366":1}}],["pinata",{"0":{"293":1},"2":{"291":1,"293":2,"294":1,"295":1,"300":1,"301":1}}],["pick",{"2":{"33":1,"116":1,"157":1,"172":1}}],["piece",{"2":{"30":1}}],["plugin",{"2":{"219":3,"220":1}}],["plugins",{"2":{"128":1}}],["plain",{"2":{"182":1,"399":1}}],["player",{"2":{"125":2,"126":2,"128":3}}],["play",{"2":{"118":1,"119":1,"120":1,"190":1,"406":1}}],["playground",{"2":{"80":1}}],["places",{"2":{"144":1}}],["place",{"2":{"90":1,"121":1,"353":1,"354":1}}],["placed",{"2":{"49":1,"250":1}}],["platformspecificsetup",{"2":{"116":1}}],["platforms",{"0":{"105":1,"387":1},"1":{"106":1,"107":1,"108":1,"388":1,"389":1,"390":1},"2":{"123":1,"124":1}}],["platform",{"2":{"44":1,"124":1,"352":1}}],["plan",{"2":{"30":1,"139":1,"149":1}}],["please",{"2":{"7":1,"59":1,"73":1,"103":1,"120":1,"122":1,"128":3,"130":1,"132":1,"133":1,"139":1,"144":1,"147":1,"148":1,"149":1,"177":1,"204":2,"235":1,"359":1,"370":1}}],["pair",{"2":{"310":1}}],["paid",{"2":{"36":1,"41":1,"273":1}}],["path",{"2":{"128":1,"157":3,"365":2}}],["path=",{"2":{"118":1}}],["patch",{"2":{"115":2}}],["pasting",{"2":{"139":1}}],["pasted",{"2":{"179":1}}],["paste",{"2":{"118":1,"128":1,"143":1,"293":1,"300":1}}],["password",{"2":{"364":1}}],["passes",{"2":{"260":1,"261":1}}],["passed",{"2":{"33":1,"49":1,"86":2,"87":2,"164":1,"212":1,"213":1,"222":1,"321":1}}],["passing",{"2":{"78":1,"80":1,"88":1}}],["pass",{"2":{"6":2,"33":1,"50":1,"91":1,"97":1,"140":1,"157":3,"182":1,"260":1,"261":1,"363":1,"399":1}}],["palette",{"2":{"80":1}}],["pageprops",{"2":{"250":2}}],["pages",{"0":{"249":1},"2":{"216":3,"217":1,"225":3,"227":1,"248":2}}],["page",{"2":{"46":1,"53":1,"74":1,"86":1,"87":1,"90":1,"123":1,"174":1,"248":1,"249":2,"265":1}}],["packages",{"0":{"72":1},"2":{"54":1,"72":1,"103":2,"382":2}}],["package",{"0":{"118":1},"1":{"119":1},"2":{"44":1,"72":2,"95":1,"103":4,"118":5,"119":1,"120":6,"147":1,"156":1,"200":1,"209":2,"219":1,"228":1,"236":1,"365":1,"382":4,"416":1}}],["parentheses",{"2":{"139":1}}],["param",{"2":{"342":2}}],["parametersasobjectarray",{"2":{"139":2,"140":1}}],["parameters",{"0":{"211":1,"221":1,"231":1,"319":1,"323":1,"327":1},"1":{"212":1,"213":1,"214":1,"222":1,"223":1,"224":1,"232":1,"233":1},"2":{"139":5,"158":1}}],["parameter",{"2":{"81":1,"130":1,"132":1,"133":1,"139":1,"212":1,"222":1,"263":1,"265":1,"283":1}}],["parallelize",{"2":{"8":1}}],["parallel",{"0":{"42":1},"2":{"8":1,"42":1}}],["parse",{"2":{"49":1}}],["partner",{"2":{"354":3}}],["party",{"2":{"352":1,"353":1}}],["partial",{"2":{"54":2,"330":1,"354":1}}],["particularly",{"2":{"186":1,"248":1,"251":1,"402":1}}],["particular",{"2":{"32":2}}],["part",{"2":{"8":1,"67":1,"202":1,"418":1}}],["payload",{"2":{"194":1,"410":1}}],["paypal",{"2":{"156":1}}],["payable",{"2":{"139":3}}],["paytrie",{"2":{"109":1,"308":1,"391":1}}],["payments",{"2":{"89":1}}],["payment",{"2":{"43":1,"109":1,"173":2,"174":2,"308":1,"391":1}}],["pay",{"2":{"8":1,"35":5,"314":1}}],["purchasing",{"2":{"176":1}}],["purchase",{"2":{"109":2,"175":1,"176":2,"308":2,"391":2}}],["purpose",{"2":{"115":1,"131":1}}],["pull",{"2":{"98":1}}],["publishing",{"2":{"128":1}}],["published",{"2":{"33":1}}],["publishcollection",{"2":{"6":1}}],["publicly",{"2":{"352":1}}],["publicclient",{"2":{"210":1}}],["publically",{"2":{"131":1}}],["public",{"2":{"6":1,"130":1,"131":3,"142":2,"143":3,"154":1,"342":1}}],["putting",{"2":{"139":1}}],["put",{"2":{"6":3,"49":1,"120":1}}],["practice",{"2":{"251":1}}],["pr",{"2":{"144":1,"148":1}}],["prudent",{"2":{"112":1,"394":1}}],["primitive",{"2":{"310":1}}],["primary",{"2":{"186":2,"402":2}}],["price",{"2":{"277":1}}],["pricesort",{"2":{"307":1}}],["prices",{"2":{"144":1}}],["pricing",{"0":{"7":1},"2":{"8":1}}],["priority",{"2":{"278":1}}],["prior",{"2":{"54":1,"128":2}}],["privatekeystring",{"2":{"254":1}}],["privatekey",{"2":{"46":4}}],["private",{"2":{"46":2,"49":1,"50":1,"54":1,"99":2,"110":3,"111":1,"114":1,"186":1,"189":1,"254":2,"392":3,"393":1,"396":1,"402":1,"405":1}}],["privately",{"2":{"6":1}}],["print",{"2":{"45":1,"46":1}}],["prepared",{"2":{"313":1}}],["prepare",{"0":{"292":1}}],["pre",{"2":{"288":1,"289":1}}],["prefixedmessage",{"2":{"340":2}}],["prefilling",{"2":{"175":1}}],["prefabs",{"2":{"122":1,"144":1}}],["prefab",{"2":{"122":2,"144":1}}],["preference",{"2":{"114":1,"396":1}}],["prefer",{"2":{"6":1,"263":1}}],["press",{"2":{"44":1,"53":1,"118":1}}],["preview",{"2":{"300":1}}],["previously",{"2":{"54":1,"179":1,"254":1}}],["previous",{"2":{"6":1,"35":1,"194":1,"410":1}}],["prevent",{"0":{"49":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"43":1,"51":1,"176":1,"365":1}}],["pro",{"2":{"363":1,"364":1,"365":1,"366":2,"367":1}}],["proper",{"2":{"327":1}}],["properties",{"2":{"64":2}}],["proxy",{"2":{"318":1}}],["program",{"2":{"316":1}}],["progressively",{"2":{"156":1}}],["progress",{"2":{"144":1}}],["pros",{"0":{"311":1,"314":1}}],["produce",{"0":{"248":1},"2":{"248":1}}],["produced",{"2":{"46":1}}],["product",{"2":{"144":1}}],["prone",{"2":{"139":1}}],["proceed",{"2":{"123":1}}],["process",{"2":{"35":1,"49":1,"61":2,"62":1,"69":1,"118":1,"139":3,"147":1,"157":1,"186":1,"206":1,"301":1,"361":2,"363":2,"364":2,"365":2,"366":2,"367":2,"377":2,"378":2,"385":1,"402":1}}],["protected",{"2":{"352":1}}],["protects",{"2":{"351":1,"354":1}}],["protect",{"2":{"114":1,"396":1}}],["protection",{"2":{"113":1,"164":1,"354":1,"370":1,"395":1}}],["protocol",{"2":{"62":1,"156":1,"160":1}}],["protocols",{"2":{"4":1,"179":1}}],["prove",{"2":{"53":1,"182":1,"399":1}}],["providing",{"2":{"46":1,"68":1,"134":1,"136":1,"138":1,"139":1,"205":1,"352":1,"384":1}}],["provides",{"2":{"80":1,"95":1,"115":1,"123":1,"140":1,"251":1,"256":1,"352":1,"354":1}}],["provided",{"2":{"35":1,"41":1,"44":1,"60":1,"88":3,"119":1,"132":1,"134":1,"136":1,"138":1,"168":1,"251":1,"262":1,"263":1,"265":3,"284":2,"288":1,"289":1,"316":1,"322":1,"328":1,"342":4,"360":1,"364":1}}],["providers",{"2":{"46":1,"49":1,"54":3,"72":1,"109":4,"154":1,"155":1,"170":1,"173":2,"174":1,"183":1,"308":4,"320":1,"363":1,"370":1,"391":4,"400":1}}],["provider",{"2":{"35":2,"41":1,"46":2,"54":5,"90":1,"109":1,"155":4,"157":1,"170":2,"174":1,"183":2,"191":1,"250":1,"308":1,"320":2,"363":1,"365":2,"370":2,"391":1,"400":2,"407":1}}],["provide",{"2":{"33":1,"59":1,"69":1,"96":1,"97":1,"99":1,"103":1,"122":1,"139":3,"144":3,"150":1,"186":1,"206":1,"251":1,"265":1,"281":1,"283":2,"284":1,"285":1,"288":1,"300":1,"309":1,"352":1,"359":1,"364":1,"370":1,"385":1,"402":1}}],["proofstring",{"2":{"49":1,"183":1,"400":1}}],["proof",{"2":{"43":1,"49":5,"52":5,"53":4,"157":2,"162":1,"163":1,"182":2,"183":6,"399":2,"400":6}}],["prompted",{"2":{"179":1,"300":1}}],["prompt",{"2":{"118":1,"120":1,"179":1,"182":1,"233":1,"374":1,"399":1}}],["prompts",{"2":{"13":1,"44":1}}],["promise",{"2":{"42":1,"49":4,"54":2}}],["probably",{"2":{"135":1}}],["probability",{"2":{"42":1}}],["problem",{"2":{"42":1}}],["problems",{"2":{"2":1}}],["projectname",{"0":{"84":1}}],["projectaccesskey",{"2":{"35":2,"41":1,"46":1,"61":1,"73":2,"74":2,"97":1,"157":3,"361":1,"363":1,"364":1,"365":1,"366":1,"367":1,"377":1,"378":1}}],["project",{"0":{"60":1,"103":1,"360":1},"1":{"104":1},"2":{"7":1,"13":1,"33":1,"44":7,"45":1,"46":1,"49":5,"50":1,"54":1,"60":1,"61":1,"64":1,"84":1,"103":2,"119":5,"120":2,"121":1,"125":1,"126":1,"128":2,"155":1,"204":1,"296":1,"353":1,"360":1,"361":1,"363":1,"364":1,"365":1,"366":1,"367":1,"377":1,"378":1,"382":2}}],["projectid",{"2":{"6":2,"366":2}}],["projects",{"2":{"2":1,"6":10,"8":1}}],["kind",{"2":{"353":1}}],["kinds",{"2":{"151":1,"152":1,"204":1}}],["kitcheckoutprovider",{"2":{"90":4}}],["kitconfig",{"2":{"74":1,"78":2,"97":2}}],["kitwalletprovider",{"2":{"74":7}}],["kitprovider",{"2":{"73":4,"74":6,"78":3,"90":2,"97":2}}],["kit",{"0":{"71":1,"72":1,"73":1,"95":1,"205":1,"384":1},"1":{"72":1,"96":1,"206":1,"385":1},"2":{"68":1,"69":1,"70":2,"71":1,"72":8,"73":3,"74":4,"75":1,"76":1,"77":1,"78":2,"80":1,"90":6,"91":1,"95":3,"96":2,"97":3,"98":1,"204":1,"205":1,"206":1,"207":2,"384":1,"385":1,"386":2}}],["keep",{"2":{"166":1}}],["keepwalletopened",{"0":{"166":1},"2":{"166":2}}],["keeps",{"2":{"33":1}}],["keccak256",{"2":{"46":2,"342":2}}],["keyboard",{"2":{"118":1}}],["keys",{"0":{"112":1,"186":1,"187":1,"394":1,"402":1,"403":1},"1":{"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1},"2":{"60":1,"99":3,"110":3,"111":6,"112":1,"114":3,"121":2,"128":1,"156":1,"185":2,"186":3,"314":1,"354":1,"360":1,"392":3,"393":6,"394":1,"396":3,"401":2,"402":3}}],["keypair",{"2":{"46":1}}],["keyword",{"2":{"44":1,"139":1}}],["key",{"0":{"69":1,"110":1,"113":1,"114":1,"189":1,"192":1,"206":1,"385":1,"392":1,"395":1,"396":1,"405":1,"408":1},"1":{"111":1,"112":1,"113":1,"114":1,"393":1,"394":1,"395":1,"396":1},"2":{"5":1,"13":1,"30":1,"35":2,"41":1,"46":3,"49":5,"50":2,"54":2,"60":2,"61":2,"64":1,"73":1,"74":1,"97":1,"99":1,"110":3,"111":9,"112":1,"113":6,"114":6,"121":1,"149":1,"151":2,"155":2,"157":1,"183":1,"186":2,"189":1,"190":1,"191":2,"192":1,"193":2,"254":2,"263":1,"310":1,"314":1,"353":1,"360":2,"361":2,"363":2,"364":3,"365":2,"366":2,"367":2,"377":2,"378":2,"392":3,"393":9,"394":1,"395":6,"396":6,"400":1,"402":2,"405":1,"406":1,"407":2,"408":1,"409":2}}],["known",{"2":{"139":1,"284":2,"286":2,"335":1,"336":1,"346":1}}],["knowledge",{"2":{"43":1}}],["know",{"2":{"2":1,"46":1,"103":1,"382":1}}],["circle",{"2":{"365":1}}],["cid",{"2":{"293":1,"294":1}}],["certain",{"2":{"375":1}}],["certainty",{"2":{"182":1,"399":1}}],["center",{"2":{"81":3}}],["c3bgcu3lkfr9bp9jfsslenpaaaaaaaaaa",{"2":{"151":1,"152":1}}],["cs",{"2":{"130":1}}],["custodial",{"2":{"99":1,"114":1,"130":1,"350":1,"396":1}}],["customizable",{"2":{"146":1}}],["customizability",{"0":{"146":1},"1":{"147":1,"148":1}}],["customization",{"0":{"148":1},"2":{"114":1,"396":1}}],["customize",{"2":{"78":1,"96":1,"148":1,"157":1}}],["custom",{"0":{"62":1,"95":1,"96":1,"97":1,"98":1},"1":{"63":1,"64":1,"65":1,"96":1},"2":{"62":2,"95":2,"96":6,"97":5,"98":2,"116":1,"124":2,"128":1,"134":1,"136":1,"138":1,"140":1,"160":1,"250":1,"251":1,"305":1,"370":1,"371":1}}],["curious",{"2":{"130":1,"139":1}}],["current",{"0":{"320":1,"335":1},"1":{"336":1},"2":{"324":1,"335":2,"366":1,"371":1}}],["currently",{"2":{"60":1,"109":1,"111":1,"124":1,"253":1,"308":1,"354":1,"360":1,"391":1,"393":1}}],["currencies",{"2":{"132":1}}],["currencyaddresses",{"2":{"307":1}}],["currency",{"2":{"35":1,"132":2,"174":2,"176":4,"265":1,"282":1}}],["curl",{"2":{"52":2,"53":1,"150":1,"303":1,"307":1}}],["ctx",{"2":{"49":3}}],["cdn",{"0":{"104":1,"383":1},"2":{"104":1,"383":1}}],["cd",{"2":{"44":1,"45":1}}],["claim",{"2":{"164":1}}],["class",{"2":{"61":1,"134":1,"136":1,"138":1,"141":2,"288":1,"361":1}}],["close",{"0":{"367":1},"2":{"75":1,"166":1}}],["closed",{"2":{"60":1,"360":1,"367":2}}],["cloud",{"0":{"293":1},"2":{"44":1,"293":1,"300":1,"301":1}}],["cloudflare",{"0":{"27":1,"44":1,"50":1},"1":{"45":1},"2":{"13":2,"43":3,"44":3,"49":1}}],["clone",{"2":{"44":1}}],["click",{"2":{"118":3,"119":3,"120":1,"121":1,"147":2,"250":1,"295":1,"296":1,"298":1,"300":1,"302":1}}],["clicks",{"2":{"69":1,"182":1,"206":1,"385":1,"399":1}}],["clicking",{"2":{"46":1}}],["clipboard",{"2":{"53":1,"179":2}}],["clientid=",{"2":{"365":1}}],["clients",{"0":{"263":1},"1":{"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1}}],["client=",{"2":{"73":1,"74":2,"90":1,"97":1,"250":1}}],["client",{"2":{"52":1,"139":1,"150":2,"183":1,"186":1,"191":1,"192":1,"193":1,"200":1,"203":2,"249":2,"250":9,"258":2,"259":2,"260":2,"261":2,"263":4,"264":1,"265":2,"266":1,"267":1,"268":1,"269":1,"270":2,"271":1,"272":1,"273":1,"274":2,"275":2,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":2,"284":7,"286":3,"287":1,"288":5,"365":1,"400":1,"402":1,"407":1,"408":1,"409":1,"416":1,"419":2}}],["cli",{"0":{"44":1},"1":{"45":1},"2":{"43":2,"44":1}}],["c",{"0":{"39":1,"40":1,"41":1},"2":{"121":2,"143":1,"285":1}}],["cryptographically",{"2":{"254":1,"352":1}}],["cryptography",{"2":{"114":1,"396":1}}],["crypto",{"0":{"93":1},"2":{"352":1}}],["cryptocurrencies",{"2":{"109":1,"308":1,"391":1}}],["cryptocurrency",{"2":{"89":1,"93":1}}],["cryptocheckout",{"0":{"93":1},"2":{"92":1,"93":2}}],["credential",{"2":{"365":1}}],["credentialresponse",{"2":{"365":2}}],["credentials",{"2":{"60":1,"114":1,"360":1,"396":1}}],["credit",{"2":{"36":1,"109":1,"308":1,"391":1}}],["creator",{"2":{"299":1}}],["creators",{"2":{"137":1}}],["creation",{"0":{"65":1},"2":{"13":1,"62":2,"321":1,"350":1,"352":1,"362":1}}],["creating",{"0":{"6":1,"96":1},"2":{"62":1,"95":1,"96":1,"98":1,"130":1,"131":1,"134":1,"136":1,"138":1,"141":1,"263":1,"283":2}}],["createroot",{"2":{"365":1}}],["createrandom",{"2":{"46":1}}],["createhashrouter",{"2":{"365":2}}],["createtransaction",{"2":{"282":2}}],["createtoken",{"2":{"6":1}}],["createclient",{"2":{"250":1}}],["createconnector",{"2":{"96":2}}],["createconfig",{"2":{"73":2,"74":2,"97":1,"210":1}}],["createcollection",{"2":{"6":1}}],["creates",{"2":{"111":1,"393":1}}],["createdat",{"2":{"366":2}}],["created",{"2":{"6":1,"111":1,"119":1,"121":1,"134":1,"136":1,"138":1,"147":1,"254":1,"255":1,"288":1,"295":1,"299":1,"328":1,"340":1,"350":2,"363":1,"393":1}}],["createasset",{"2":{"6":1}}],["create",{"0":{"37":1},"2":{"6":1,"34":1,"35":5,"41":2,"42":1,"44":4,"46":2,"49":1,"54":5,"61":1,"63":1,"96":3,"97":1,"110":2,"119":1,"121":4,"128":1,"134":2,"136":2,"138":2,"140":1,"147":2,"155":2,"183":1,"189":1,"193":1,"250":1,"254":1,"263":2,"282":1,"284":5,"286":1,"288":2,"293":1,"296":1,"361":1,"392":2,"400":1,"405":1,"409":1}}],["craft",{"2":{"35":1,"41":1}}],["cheap",{"2":{"311":1}}],["checked",{"2":{"377":1}}],["checks",{"2":{"328":1}}],["check",{"2":{"35":2,"41":1,"49":2,"70":1,"130":1,"131":1,"142":1,"143":1,"150":1,"157":1,"207":1,"265":1,"305":1,"371":1,"386":1}}],["checking",{"2":{"33":1,"93":1}}],["checkoutconfig",{"2":{"93":1}}],["checkoutsettings",{"2":{"91":2,"92":2}}],["checkout",{"0":{"28":1,"91":1,"92":1,"93":1},"1":{"93":1,"94":1},"2":{"70":1,"89":1,"90":6,"91":3,"92":1,"207":1,"386":1}}],["child",{"2":{"250":1}}],["children",{"2":{"250":2}}],["choosing",{"2":{"299":1}}],["chooses",{"2":{"179":1}}],["choose",{"2":{"109":1,"114":1,"144":1,"155":1,"179":1,"308":1,"391":1,"396":1}}],["choice",{"2":{"296":1,"363":1}}],["chose",{"2":{"120":1,"179":1,"283":1}}],["chrome",{"0":{"178":1},"2":{"108":1,"156":2,"177":1,"178":1,"363":1,"364":1,"365":1,"366":2,"367":1,"390":1}}],["challenge",{"2":{"123":2}}],["challenging",{"2":{"120":1}}],["change",{"2":{"194":1,"316":1,"321":1,"328":1,"410":1}}],["changed",{"2":{"119":1,"321":1}}],["changes",{"2":{"8":1,"115":2,"120":2,"147":1,"156":1,"235":1,"365":1}}],["chainindexer",{"2":{"141":3}}],["chainid",{"0":{"241":1,"270":1},"2":{"35":1,"41":1,"49":4,"54":4,"64":2,"88":1,"93":1,"191":2,"238":1,"262":2,"270":2,"341":2,"373":1,"374":1,"375":1,"377":1,"378":1,"407":2}}],["chainconfig",{"2":{"49":2}}],["chain",{"2":{"30":4,"33":1,"42":1,"49":10,"50":3,"54":6,"64":3,"73":5,"74":5,"99":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":2,"140":1,"141":1,"142":1,"143":1,"151":2,"152":1,"155":1,"176":1,"195":1,"196":1,"197":1,"241":1,"262":5,"263":2,"265":2,"270":2,"274":2,"297":1,"300":1,"303":1,"411":1,"412":1,"413":1}}],["chains",{"0":{"212":1,"222":1},"2":{"5":1,"30":3,"73":4,"74":4,"97":1,"210":1,"212":1,"220":1,"222":1,"254":1}}],["capabilities",{"2":{"203":1,"419":1}}],["category",{"2":{"128":12}}],["catch",{"2":{"35":1,"49":3,"54":1,"155":1,"183":1,"251":2,"365":1,"374":1,"378":1,"400":1}}],["causes",{"2":{"250":1}}],["cause",{"2":{"115":3,"121":1}}],["caution",{"2":{"35":1,"157":1,"327":1}}],["came",{"2":{"49":1}}],["case",{"2":{"42":1,"88":1,"113":1,"140":1,"149":1,"284":2,"286":2,"321":1,"329":1,"330":1,"336":2,"395":1}}],["cases",{"2":{"8":1,"120":1,"143":1,"182":1,"203":1,"327":1,"399":1,"419":1}}],["carefully",{"2":{"156":1}}],["care",{"2":{"41":1}}],["card",{"2":{"36":1,"109":2,"308":2,"391":2}}],["cancel",{"2":{"375":1}}],["cancelled",{"2":{"373":1}}],["candidate",{"2":{"336":1}}],["canvas",{"2":{"122":4}}],["cannot",{"2":{"35":1,"124":1,"235":1,"283":1,"354":1,"370":1}}],["can",{"2":{"6":3,"8":1,"30":1,"31":1,"32":1,"33":1,"34":2,"35":4,"36":2,"42":5,"43":1,"44":2,"45":1,"46":4,"47":1,"49":1,"52":2,"53":1,"54":1,"59":1,"61":1,"63":1,"64":3,"67":1,"75":1,"77":1,"78":2,"80":1,"88":1,"95":1,"96":3,"97":1,"98":1,"99":1,"103":2,"104":1,"109":3,"110":2,"111":2,"113":1,"114":2,"115":1,"119":3,"120":1,"122":1,"130":1,"131":3,"132":2,"133":3,"134":1,"135":2,"136":1,"137":3,"138":1,"139":2,"142":2,"143":4,"144":2,"147":2,"151":1,"152":1,"154":1,"156":1,"157":6,"158":1,"161":1,"173":1,"176":1,"179":3,"182":2,"183":1,"186":3,"193":1,"195":2,"196":1,"197":1,"198":1,"202":1,"203":2,"204":1,"209":1,"214":1,"218":1,"224":1,"228":1,"239":1,"244":1,"245":1,"248":1,"249":2,"250":6,"251":2,"252":1,"262":1,"263":2,"264":2,"284":2,"286":1,"287":1,"288":1,"291":1,"292":2,"299":1,"303":2,"308":3,"313":2,"316":1,"317":2,"319":1,"321":1,"327":1,"334":1,"335":2,"336":1,"341":1,"342":1,"350":2,"351":1,"352":3,"353":4,"359":1,"361":1,"364":2,"365":2,"367":2,"370":1,"372":1,"373":1,"375":1,"378":1,"382":1,"383":1,"391":3,"392":2,"393":2,"395":1,"396":2,"399":2,"400":1,"402":3,"409":1,"411":2,"412":1,"413":1,"414":1,"418":1,"419":2}}],["caller",{"2":{"327":1}}],["called",{"2":{"103":1,"157":1,"319":1,"322":1,"327":1,"328":1,"329":1,"331":2,"353":1,"365":1,"382":1}}],["callfunction",{"2":{"284":7}}],["calldata",{"2":{"54":1,"197":2,"198":1,"342":1,"413":2,"414":1}}],["callcontractfunction",{"2":{"134":1,"136":1,"138":1,"284":4,"288":1}}],["callcontract",{"2":{"49":3,"54":2}}],["callback",{"0":{"373":1},"2":{"35":2,"373":2}}],["calling",{"0":{"284":1},"2":{"33":1,"49":1,"131":1,"139":3,"142":1,"143":1,"283":1,"284":1,"318":1,"334":1,"335":1,"342":1}}],["calls",{"2":{"33":2,"251":2,"319":1,"327":1}}],["call",{"0":{"307":1},"2":{"6":1,"42":1,"49":3,"64":1,"131":1,"139":5,"142":1,"143":2,"150":1,"155":1,"203":1,"284":1,"303":1,"328":1,"419":1}}],["co",{"2":{"137":1}}],["cognito",{"2":{"123":2,"369":1}}],["colorschememanager",{"2":{"147":4}}],["colors",{"2":{"80":2,"147":1}}],["color",{"0":{"147":1},"2":{"80":1,"147":3}}],["collision",{"2":{"42":1}}],["collectibleinterface",{"2":{"54":2}}],["collectible",{"0":{"54":1,"197":1,"413":1},"2":{"43":2,"54":1,"63":1,"197":2,"413":2}}],["collectibles",{"0":{"9":1,"11":1,"15":1,"21":1,"43":1},"1":{"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1},"2":{"64":1,"69":1,"94":1,"206":1,"385":1}}],["collectionaddress",{"2":{"307":1}}],["collectionid",{"2":{"6":4}}],["collection",{"2":{"6":5,"64":1,"297":1}}],["collections",{"0":{"6":1},"2":{"5":1,"6":10}}],["coinquantity",{"2":{"93":1}}],["coinbase",{"2":{"87":1}}],["coins",{"2":{"69":1,"206":1,"385":1}}],["coingecko",{"2":{"33":1}}],["copied",{"2":{"53":1}}],["copy",{"2":{"53":1,"139":1,"179":1,"293":1,"294":1,"295":1}}],["corrupt",{"2":{"318":1}}],["corruption",{"2":{"318":1}}],["corresponds",{"2":{"322":1,"324":1,"327":1}}],["corresponding",{"2":{"86":1,"87":1,"150":1}}],["correspond",{"2":{"86":1,"87":1,"327":1}}],["correct",{"2":{"35":1,"216":1,"225":1,"327":1,"335":1,"342":1}}],["core",{"2":{"72":1,"73":1,"90":1,"183":1,"239":1,"318":1,"400":1}}],["cors",{"2":{"49":1}}],["codeat",{"0":{"271":1},"2":{"271":1}}],["code",{"0":{"184":1,"369":1},"2":{"36":1,"41":1,"44":1,"46":1,"49":1,"54":1,"62":1,"64":1,"74":1,"123":1,"130":1,"133":1,"135":1,"137":1,"139":3,"143":2,"150":1,"151":1,"157":1,"179":3,"208":1,"218":1,"228":1,"244":1,"249":1,"250":1,"271":1,"318":1,"352":1,"353":1,"369":1,"370":1,"372":4,"377":1,"378":2}}],["count",{"2":{"341":1}}],["counterfactual",{"2":{"328":1}}],["counter",{"2":{"321":1,"336":1}}],["could",{"2":{"35":2,"114":1,"285":1,"292":1,"354":1,"396":1}}],["course",{"2":{"30":1,"156":1}}],["convenient",{"2":{"186":1,"402":1}}],["convenience",{"2":{"134":1,"136":1,"138":1,"148":1,"288":1,"289":2}}],["convention",{"2":{"182":1,"399":1}}],["converted",{"2":{"285":1}}],["convert",{"2":{"133":1,"139":1}}],["congratulations",{"2":{"130":1,"302":1}}],["conflicts",{"2":{"96":1}}],["confirm",{"2":{"186":1,"402":1}}],["confirms",{"2":{"179":1}}],["confirmations",{"2":{"186":1,"402":1}}],["confirmation",{"0":{"185":1,"401":1},"2":{"43":1,"179":1,"185":1,"192":1,"401":1,"408":1}}],["configs",{"2":{"342":1}}],["configjsonrpcprovider",{"2":{"183":1,"400":1}}],["config=",{"2":{"73":1,"74":3,"78":1,"90":1,"97":2}}],["config",{"2":{"61":1,"73":2,"74":3,"90":1,"97":1,"119":1,"121":2,"361":1,"363":1,"364":1,"365":1,"366":1,"367":1,"377":1,"378":1}}],["configuring",{"0":{"92":1},"1":{"93":1,"94":1},"2":{"119":1}}],["configure",{"2":{"73":1,"78":1,"82":1,"92":1,"109":1,"308":1,"353":1,"391":1}}],["configured",{"2":{"49":4,"125":1,"126":1,"322":1}}],["configurations",{"2":{"73":1,"97":1,"335":1}}],["configuration",{"0":{"78":1,"82":1,"93":1,"94":1,"321":1,"328":1,"334":1,"335":1,"336":1,"337":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1,"322":1,"323":1,"324":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":2},"2":{"60":1,"70":1,"73":1,"78":1,"93":1,"94":1,"97":2,"125":1,"126":1,"207":1,"321":2,"322":1,"323":1,"324":1,"325":1,"326":1,"327":3,"328":4,"330":1,"335":2,"351":1,"360":1,"386":1}}],["connectweb3react",{"2":{"239":1}}],["connectoptions",{"2":{"158":2}}],["connector",{"0":{"96":1,"249":1,"250":1},"2":{"86":2,"87":2,"96":12,"97":3,"208":1,"209":5,"210":2,"215":3,"216":2,"218":1,"219":1,"220":1,"226":3,"235":2,"236":2,"238":2,"239":1}}],["connectorsforwallets",{"2":{"220":2}}],["connectors",{"0":{"95":1,"97":1,"98":1,"204":1},"1":{"96":1},"2":{"72":4,"73":3,"74":3,"86":2,"87":2,"95":4,"96":5,"97":5,"98":2,"204":4,"210":4,"220":2,"238":1,"239":2,"248":1,"250":3}}],["connectdetails",{"2":{"157":3,"158":1,"167":1,"182":2,"183":1,"399":2,"400":1}}],["connected",{"2":{"130":1,"157":1,"179":1,"182":1,"270":1,"274":1,"399":1}}],["connecttowaas",{"2":{"130":1}}],["connecting",{"0":{"130":1,"157":1,"177":1,"178":1,"179":1},"2":{"73":1,"130":1,"166":2,"167":1,"169":1,"179":1}}],["connection",{"2":{"71":1,"75":1,"155":1,"179":3,"213":2,"223":1,"239":1,"242":1,"264":1}}],["connections",{"2":{"69":1,"206":1,"385":1}}],["connect",{"0":{"75":1,"156":1,"158":1,"188":1,"213":1,"223":1,"404":1},"1":{"157":1,"158":1,"159":2,"160":2,"161":2,"162":2,"163":2,"164":2,"165":2,"166":2,"167":2,"168":2,"169":2,"170":2,"171":2,"172":2,"173":2,"174":2,"175":2,"176":2,"177":1,"178":1,"179":1},"2":{"44":1,"53":2,"69":1,"73":1,"74":1,"75":1,"87":1,"97":1,"109":1,"156":3,"157":7,"158":2,"159":2,"162":1,"163":1,"164":1,"165":3,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"179":1,"182":5,"183":1,"188":1,"206":1,"208":1,"210":1,"213":1,"214":1,"218":1,"220":1,"223":2,"224":1,"228":1,"232":1,"233":1,"241":1,"244":1,"245":2,"308":1,"385":1,"391":1,"399":5,"400":1,"404":1}}],["consensys",{"0":{"348":1},"2":{"346":1}}],["consent",{"2":{"119":1,"350":1}}],["considered",{"2":{"370":1}}],["consider",{"2":{"251":1}}],["considerations",{"2":{"216":1,"225":1,"333":1}}],["consulted",{"2":{"250":1}}],["cons",{"2":{"93":1}}],["console",{"2":{"35":3,"41":2,"46":1,"49":1,"64":1,"93":1,"155":2,"157":2,"181":1,"183":2,"191":2,"193":2,"194":1,"195":2,"196":2,"197":2,"198":2,"320":1,"363":1,"365":2,"366":1,"371":1,"374":1,"375":1,"377":1,"378":1,"398":1,"400":2,"407":2,"409":2,"410":1,"411":2,"412":2,"413":2,"414":2}}],["constraints",{"2":{"353":1}}],["constructions",{"2":{"350":1}}],["constructor",{"2":{"288":1}}],["construct",{"2":{"282":1,"286":1,"340":1,"341":1}}],["constants",{"0":{"332":1,"333":1},"2":{"328":4,"334":2}}],["const",{"2":{"35":14,"41":7,"42":6,"46":7,"49":11,"54":3,"61":1,"64":4,"73":6,"74":7,"75":4,"76":3,"78":1,"90":1,"91":4,"92":1,"96":2,"97":3,"151":2,"155":3,"157":11,"158":1,"181":2,"182":2,"183":5,"188":3,"189":3,"190":2,"191":3,"192":2,"193":1,"194":3,"195":12,"196":13,"197":13,"198":13,"210":2,"220":1,"230":3,"238":2,"239":3,"249":2,"250":2,"320":4,"328":1,"334":1,"340":4,"341":6,"345":1,"361":1,"363":3,"364":6,"365":9,"366":2,"367":2,"371":1,"372":2,"373":1,"375":1,"377":2,"378":2,"398":2,"399":2,"400":5,"404":3,"405":3,"406":2,"407":3,"408":2,"409":1,"410":3,"411":12,"412":13,"413":13,"414":13}}],["continue",{"2":{"375":1}}],["context",{"0":{"345":1},"2":{"152":1,"253":1,"263":1,"328":1}}],["content",{"2":{"49":1,"52":1,"53":1,"249":1,"250":2,"293":1,"307":1}}],["contain",{"2":{"128":1}}],["contains",{"2":{"77":1,"318":1,"322":1,"353":1}}],["containing",{"2":{"64":1,"111":1,"250":1,"393":1}}],["contact",{"2":{"7":1,"60":1,"360":1,"370":1}}],["contribute",{"2":{"98":1}}],["controlling",{"2":{"114":1,"396":1}}],["controlled",{"2":{"35":2,"41":1,"46":1,"99":2,"110":1,"392":1}}],["control",{"2":{"33":1,"49":3,"96":1,"99":1,"110":1,"112":1,"113":1,"114":1,"120":1,"182":1,"392":1,"394":1,"395":1,"396":1,"399":1}}],["contractbytecodeasstring",{"2":{"287":1}}],["contractdeploymentresult",{"2":{"287":1}}],["contractdeploymentreturn",{"2":{"143":1}}],["contractdeployer",{"2":{"287":2}}],["contractcall",{"2":{"284":3,"288":1}}],["contractabi",{"2":{"284":2,"286":2}}],["contractabiasstring",{"2":{"139":2,"140":1}}],["contractaddress",{"2":{"35":1,"54":2,"64":5,"88":1,"93":1,"94":1,"139":2,"140":1,"271":1,"283":1,"284":2,"286":2,"287":1,"288":1}}],["contracttype",{"2":{"64":2}}],["contracts",{"0":{"283":1,"286":1,"287":1,"309":1},"1":{"284":1,"285":1,"286":1,"287":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1},"2":{"8":2,"33":2,"46":2,"140":1,"143":1,"285":1,"296":1,"313":2,"346":1,"352":1}}],["contract",{"0":{"9":1,"10":1,"11":1,"12":1,"15":1,"21":1,"46":1,"48":1,"143":1,"284":1,"297":1,"298":1,"299":1,"313":1,"346":1},"1":{"47":1,"48":1,"314":1,"347":1,"348":1,"349":1},"2":{"6":4,"8":1,"13":2,"30":1,"32":3,"33":1,"34":1,"35":3,"36":4,"43":1,"46":4,"47":1,"48":2,"49":7,"50":2,"54":2,"64":10,"93":2,"99":1,"130":1,"133":2,"134":2,"135":1,"136":2,"137":2,"138":2,"139":4,"140":2,"143":5,"196":1,"197":1,"271":1,"283":8,"284":8,"286":9,"287":1,"288":5,"289":1,"291":1,"296":1,"297":2,"298":1,"299":3,"300":1,"303":1,"309":2,"313":1,"316":2,"320":1,"321":1,"327":1,"328":1,"339":1,"351":1,"353":1,"412":1,"413":1}}],["comes",{"2":{"110":1,"392":1}}],["combination",{"2":{"250":1}}],["combine",{"2":{"204":1}}],["combined",{"2":{"103":1,"111":1,"327":1,"342":1,"382":1,"393":1}}],["combat",{"2":{"33":1}}],["commons",{"2":{"183":2,"400":2}}],["common",{"2":{"182":1,"399":1}}],["communicating",{"2":{"353":1}}],["communication",{"2":{"13":1,"107":1,"353":1,"389":1}}],["communicate",{"2":{"156":1}}],["commands",{"2":{"116":2,"150":1}}],["command",{"2":{"44":1,"45":1,"209":1,"215":1,"226":1,"250":1}}],["com",{"2":{"33":1,"66":1,"104":1,"118":1,"120":1,"128":8,"152":2,"157":2,"169":1,"171":1,"201":1,"208":1,"218":1,"228":1,"244":1,"246":1,"250":1,"364":1,"366":4,"383":1,"417":1}}],["compute",{"2":{"336":1}}],["computer",{"2":{"106":1,"294":1,"388":1}}],["compiled",{"2":{"143":1}}],["compile",{"2":{"143":1}}],["complicated",{"2":{"139":2}}],["complexity",{"2":{"131":1}}],["complex",{"0":{"134":1,"136":1,"138":1},"2":{"131":1,"139":1,"140":1}}],["completeness",{"2":{"264":1}}],["completes",{"2":{"123":1}}],["completely",{"2":{"119":1}}],["completed",{"2":{"54":1}}],["complete",{"2":{"33":1,"43":2,"44":1,"46":2,"54":1,"66":1,"74":1,"157":1,"201":1,"365":1,"371":1,"417":1}}],["compared",{"2":{"110":1,"335":1,"336":1,"392":1}}],["compat",{"2":{"51":1}}],["compatible",{"2":{"5":1,"8":2,"30":5,"51":1,"156":1,"157":1,"204":1,"245":2,"350":2}}],["component",{"2":{"122":1,"250":12,"365":1}}],["components",{"0":{"252":1},"2":{"73":1,"74":1,"145":1,"249":1,"250":6,"252":1}}],["composed",{"2":{"103":1,"310":1,"382":1}}],["comprised",{"2":{"145":1}}],["compromised",{"2":{"99":2,"110":1,"111":2,"113":1,"114":3,"354":3,"392":1,"393":2,"395":1,"396":3}}],["comprehensive",{"2":{"69":1,"206":1,"385":1}}],["coming",{"0":{"28":1,"148":1},"2":{"49":1,"129":1,"144":1,"186":1,"319":1,"327":1,"352":1,"402":1}}],["ubiquitous",{"2":{"288":1}}],["u",{"2":{"152":1}}],["utf",{"2":{"128":2}}],["utility",{"2":{"97":1,"191":1,"407":1}}],["utilized",{"2":{"203":1,"419":1}}],["utilize",{"2":{"73":1,"75":1}}],["utilizing",{"2":{"6":1}}],["utils",{"2":{"35":1,"41":1,"42":4,"46":2,"54":1,"189":2,"191":1,"193":1,"195":2,"196":2,"197":2,"198":3,"320":2,"341":1,"405":2,"407":1,"409":1,"411":2,"412":2,"413":2,"414":3}}],["uint8",{"2":{"285":1,"341":1}}],["uint",{"2":{"285":1}}],["uint256",{"2":{"35":1,"41":1,"54":2,"139":1,"195":2,"196":2,"197":4,"198":4,"283":1,"301":2,"411":2,"412":2,"413":4,"414":4}}],["ui",{"0":{"144":1,"146":1},"1":{"145":1,"146":1,"147":2,"148":2},"2":{"120":1,"122":2,"144":6,"145":1,"146":2,"147":1,"148":1}}],["umd",{"2":{"104":3,"383":3}}],["ultimate",{"2":{"68":1,"205":1,"384":1}}],["ux",{"2":{"56":1,"356":1}}],["unusable",{"2":{"327":1,"330":1,"333":1}}],["unsanitized",{"2":{"327":1}}],["unsafe",{"2":{"251":1}}],["unsupported",{"2":{"49":1}}],["unreal",{"0":{"153":1},"2":{"153":1,"160":1}}],["unparalleled",{"2":{"137":1}}],["unpkg",{"2":{"104":1,"383":1}}],["unfamiliar",{"2":{"130":1,"131":1,"142":1,"143":1}}],["unexpected",{"2":{"121":1}}],["unnoticed",{"2":{"120":1}}],["unauthorized",{"2":{"112":1,"394":1}}],["unlimited",{"2":{"333":2}}],["unless",{"2":{"116":1,"139":1,"265":1}}],["unleash",{"2":{"69":1,"206":1,"385":1}}],["unlock",{"2":{"68":1,"111":2,"205":1,"384":1,"393":2}}],["until",{"2":{"61":1,"249":1,"361":1,"371":1}}],["uniswap",{"2":{"179":1}}],["universal",{"2":{"69":1,"101":1,"206":1,"380":1,"385":1}}],["unityactivity",{"2":{"128":2}}],["unitythemeselector",{"2":{"128":2}}],["unityplayer",{"2":{"128":2}}],["unityplayeractivity",{"2":{"128":2}}],["unitypackage",{"2":{"120":2}}],["unity3d",{"2":{"128":3}}],["unity",{"0":{"153":1},"2":{"59":3,"103":3,"115":3,"116":1,"118":2,"119":3,"120":3,"128":4,"130":1,"131":1,"141":2,"142":1,"143":3,"146":1,"147":2,"153":1,"160":1,"251":3,"359":3}}],["unique",{"2":{"32":1,"96":1,"121":1,"292":1,"320":1}}],["unknown",{"2":{"49":1,"327":1}}],["underwent",{"2":{"346":1}}],["underlying",{"2":{"313":1,"316":1,"318":1}}],["understand",{"2":{"252":1,"285":1}}],["understands",{"2":{"148":1}}],["understanding",{"0":{"285":1},"2":{"139":1}}],["under",{"2":{"46":1,"119":1,"121":1,"122":3,"128":1,"133":1,"144":2,"300":1,"301":1}}],["undefined",{"2":{"35":1,"41":1,"49":5,"88":1,"365":1}}],["unbuffered",{"2":{"42":1}}],["unwanted",{"2":{"35":1}}],["unverified",{"2":{"33":1}}],["usual",{"2":{"364":2}}],["usually",{"2":{"139":1,"301":1}}],["us",{"2":{"139":1,"148":1,"183":1,"352":1,"400":1}}],["using",{"0":{"26":1,"36":1,"43":1,"53":1,"97":1,"187":1,"208":1,"215":1,"216":1,"218":1,"225":1,"226":1,"228":1,"235":1,"244":1,"249":1,"250":1,"403":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"245":1,"246":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1},"2":{"33":1,"35":1,"42":1,"46":2,"49":1,"52":2,"60":1,"61":1,"62":1,"64":2,"75":1,"76":1,"78":1,"92":1,"95":1,"97":1,"102":1,"107":1,"110":1,"111":1,"114":1,"116":1,"119":1,"120":1,"122":1,"133":2,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"144":2,"151":3,"154":1,"155":1,"156":2,"157":1,"179":2,"182":1,"183":1,"185":1,"191":1,"204":2,"208":1,"209":1,"214":1,"215":1,"216":3,"217":1,"218":1,"224":1,"225":3,"226":1,"228":1,"244":1,"248":2,"250":4,"254":1,"262":1,"263":3,"314":1,"319":1,"321":1,"327":1,"328":1,"350":1,"353":1,"360":1,"361":1,"363":1,"364":2,"365":1,"367":1,"370":1,"375":1,"377":1,"381":1,"389":1,"392":1,"393":1,"396":1,"399":1,"400":1,"401":1,"407":1}}],["usable",{"2":{"8":1,"363":1}}],["usage",{"0":{"7":1,"210":1,"220":1,"230":1,"237":1,"245":1},"1":{"238":1,"239":1},"2":{"204":1,"350":1}}],["usdc",{"2":{"8":1,"35":4,"174":1,"314":1}}],["useismounted",{"2":{"249":2}}],["useeffect",{"2":{"249":1,"365":3}}],["useweb3react",{"2":{"239":2}}],["usecheckoutmodal",{"2":{"91":3}}],["usefulness",{"2":{"137":1}}],["useful",{"2":{"80":1,"119":2,"132":1,"143":1,"176":1,"186":1,"402":1}}],["useopenwalletmodal",{"2":{"76":3}}],["useopenconnectmodal",{"2":{"75":3}}],["useaccount",{"2":{"75":3}}],["userid",{"2":{"366":2}}],["useraddress",{"2":{"188":1,"191":1,"404":1,"407":1}}],["user",{"2":{"43":1,"61":1,"75":2,"110":2,"111":4,"113":2,"114":4,"123":3,"124":1,"130":1,"156":1,"157":5,"159":1,"167":1,"170":2,"171":3,"172":1,"179":9,"181":1,"182":6,"183":1,"186":4,"190":1,"192":1,"350":1,"352":3,"353":4,"354":2,"361":1,"362":3,"364":6,"365":1,"366":1,"370":2,"372":2,"373":1,"392":2,"393":4,"395":2,"396":4,"398":1,"399":6,"400":1,"402":4,"406":1,"408":1}}],["users",{"0":{"180":1,"397":1},"1":{"181":1,"182":1,"183":1,"398":1,"399":1,"400":1},"2":{"8":2,"34":1,"68":1,"69":2,"99":1,"107":1,"109":3,"110":1,"112":1,"113":1,"114":3,"120":1,"124":1,"144":1,"156":8,"157":3,"169":1,"173":2,"174":1,"176":3,"182":2,"185":1,"186":2,"205":1,"206":2,"245":1,"251":1,"264":1,"308":3,"354":1,"368":1,"369":1,"370":1,"384":1,"385":2,"389":1,"391":3,"392":1,"394":1,"395":1,"396":3,"399":2,"401":1,"402":2}}],["usedisconnect",{"2":{"75":1}}],["used",{"0":{"248":1},"2":{"35":1,"41":1,"44":1,"61":1,"80":1,"82":1,"114":1,"119":1,"134":1,"136":1,"138":1,"162":1,"208":1,"235":1,"244":1,"249":1,"251":1,"255":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"274":1,"275":1,"277":1,"278":1,"279":1,"280":1,"329":1,"330":1,"361":1,"364":2,"365":5,"396":1}}],["usestate",{"2":{"365":4}}],["usesessionhash",{"2":{"365":5}}],["uses",{"2":{"30":1,"114":1,"121":1,"124":1,"216":3,"225":3,"316":1,"396":1}}],["use",{"0":{"49":1,"249":1,"250":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"4":1,"6":4,"30":1,"34":1,"35":3,"42":1,"43":1,"44":1,"46":1,"49":1,"77":1,"91":1,"96":2,"97":1,"111":1,"120":1,"122":2,"128":1,"131":1,"132":1,"133":2,"134":1,"135":1,"136":1,"137":1,"138":1,"139":2,"140":1,"142":1,"143":3,"144":1,"147":1,"150":1,"154":1,"157":2,"167":1,"175":1,"182":1,"192":1,"200":1,"203":1,"204":1,"215":1,"216":1,"225":1,"226":1,"245":1,"249":1,"250":4,"255":1,"262":1,"263":2,"264":1,"282":1,"284":5,"286":4,"287":1,"288":2,"289":1,"294":1,"301":1,"311":1,"329":1,"365":1,"371":1,"374":1,"393":1,"399":1,"408":1,"416":1,"419":1}}],["uri",{"0":{"300":1}}],["uris",{"2":{"6":1}}],["url",{"0":{"295":1},"2":{"6":2,"45":2,"53":1,"54":2,"64":3,"83":1,"116":1,"118":2,"121":1,"124":2,"125":2,"126":2,"128":3,"155":2,"169":1,"263":2,"295":1,"299":1,"300":2,"307":1}}],["upgradeability",{"2":{"314":1}}],["upgraded",{"2":{"313":1}}],["upon",{"2":{"193":1,"213":1,"233":1,"409":1}}],["upi",{"2":{"109":1,"308":1,"391":1}}],["updating",{"0":{"303":1},"2":{"50":1,"119":1,"120":1,"317":1,"321":1,"333":1}}],["updateimagehash",{"0":{"326":1},"1":{"327":1,"329":1,"330":1,"331":1,"332":1,"333":1},"2":{"326":1,"328":2,"333":1,"334":2}}],["updateimplementation",{"2":{"318":3,"328":1,"333":1}}],["updateconfiguration",{"0":{"318":1},"1":{"319":1}}],["updates",{"0":{"334":1},"2":{"144":1,"326":1}}],["updated",{"2":{"64":2,"179":1,"325":1,"328":1,"333":3,"334":2,"335":1,"336":2}}],["updatedat",{"2":{"64":2}}],["update",{"0":{"46":1,"47":1,"299":1,"316":1,"328":1},"1":{"47":1,"48":1,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":2,"330":2,"331":2,"332":2,"333":2,"334":2,"335":2,"336":2},"2":{"5":1,"6":1,"43":1,"46":2,"47":1,"119":1,"293":1,"303":1,"318":1,"328":3,"330":1,"365":1}}],["uptime",{"2":{"30":1}}],["uploaded",{"2":{"295":1,"301":1}}],["uploading",{"2":{"13":1}}],["upload",{"0":{"294":1},"2":{"6":6,"293":1,"294":2}}],["up",{"0":{"73":1,"74":1,"293":1,"296":1,"363":1,"364":1},"1":{"364":1,"365":1},"2":{"5":1,"30":1,"33":1,"116":1,"124":1,"128":1,"149":1,"233":1,"296":1,"301":1,"363":1,"365":1}}],["ecdsa",{"2":{"310":1}}],["ecosystem",{"2":{"98":1}}],["equal",{"2":{"260":1,"261":1}}],["equally",{"2":{"198":1,"414":1}}],["equivalent",{"2":{"66":1,"201":1,"417":1}}],["ephemeral",{"2":{"185":1,"186":1,"189":1,"401":1,"402":1,"405":1}}],["eip1271",{"2":{"183":1,"203":1,"400":1,"419":1}}],["eip",{"2":{"183":1,"327":1,"400":1}}],["eip712",{"2":{"163":1,"182":4,"399":4}}],["either",{"2":{"46":1,"53":1,"97":1,"110":1,"130":1,"139":1,"140":1,"198":1,"260":1,"261":1,"317":1,"353":1,"375":1,"376":1,"392":1,"414":1}}],["element",{"2":{"125":1,"126":1,"365":2}}],["elements",{"2":{"122":1}}],["elsewhere",{"2":{"248":1}}],["else",{"2":{"49":2,"191":1,"193":1,"352":1,"378":1,"407":1,"409":1}}],["estimate",{"2":{"272":1}}],["estimategas",{"0":{"272":1},"2":{"272":1}}],["established",{"2":{"370":1}}],["establish",{"2":{"123":1}}],["establishing",{"2":{"122":1}}],["essentially",{"2":{"141":1,"143":1,"300":1}}],["essentials",{"2":{"118":1,"120":1}}],["edit",{"2":{"120":1,"125":1,"126":1,"128":1,"147":1}}],["editor",{"2":{"118":1,"124":1}}],["efforts",{"2":{"144":1}}],["effortlessly",{"2":{"68":1,"69":1,"205":1,"206":1,"384":1,"385":1}}],["effectively",{"2":{"112":1,"394":1}}],["emitted",{"2":{"377":1}}],["empower",{"2":{"120":1}}],["emailed",{"2":{"123":1}}],["email",{"0":{"123":1,"364":1,"369":1},"2":{"85":1,"111":2,"114":2,"123":1,"130":1,"167":1,"171":3,"172":1,"352":1,"353":1,"363":1,"364":13,"369":1,"370":1,"371":2,"372":1,"393":2,"396":2}}],["embedded",{"0":{"19":1,"25":1,"74":1,"76":1,"350":1},"1":{"351":1,"352":1,"353":1,"354":1},"2":{"56":1,"57":1,"59":2,"60":3,"61":1,"69":2,"71":1,"72":1,"74":1,"76":1,"88":1,"103":2,"115":2,"122":2,"206":2,"292":1,"350":2,"351":1,"356":1,"357":1,"359":2,"360":3,"361":1,"362":1,"364":1,"368":1,"378":1,"385":2}}],["ealiest",{"2":{"266":1,"269":1,"271":1,"273":1,"275":1}}],["earliest",{"2":{"265":2}}],["earlier",{"2":{"119":1,"300":1}}],["each",{"2":{"42":1,"110":2,"140":2,"186":1,"260":1,"261":1,"292":1,"293":3,"350":2,"351":1,"392":2,"402":1}}],["easier",{"2":{"148":1}}],["easily",{"2":{"8":1,"30":2,"89":1,"120":1,"133":2,"135":1,"137":1,"182":1,"203":1,"244":1,"254":1,"255":1,"291":1,"399":1,"419":1}}],["easy",{"2":{"4":1,"30":2,"122":1,"140":1,"198":1,"311":1,"414":1}}],["err",{"2":{"49":7,"54":2,"152":1,"183":2,"400":2}}],["errors",{"2":{"248":1}}],["error",{"0":{"248":1},"2":{"35":2,"46":1,"139":1,"155":1,"365":6,"378":3}}],["erc1271",{"2":{"342":1}}],["erc1155data",{"2":{"198":2,"414":2}}],["erc1155contractaddress",{"2":{"197":2,"198":1,"413":2,"414":1}}],["erc1155interface",{"2":{"197":5,"198":2,"413":5,"414":2}}],["erc1155tokenaddress",{"2":{"137":1,"140":1,"197":1,"413":1}}],["erc1155s",{"2":{"119":1}}],["erc1155",{"0":{"46":1,"138":1},"1":{"47":1,"48":1},"2":{"6":1,"30":3,"32":1,"33":1,"43":1,"49":1,"50":1,"64":2,"137":5,"138":9,"288":1,"289":1}}],["erc21",{"2":{"136":1}}],["erc20contract",{"2":{"284":6,"286":4}}],["erc20data",{"2":{"198":2,"414":2}}],["erc20tokenaddress",{"2":{"133":1,"140":2}}],["erc20interface",{"2":{"42":2,"195":5,"198":2,"411":5,"414":2}}],["erc20",{"0":{"134":1},"2":{"30":3,"32":2,"33":1,"64":4,"133":5,"134":9,"139":1,"140":1,"283":1,"284":2,"286":2,"288":8,"289":1,"314":1}}],["erc",{"0":{"195":1,"196":1,"197":1,"340":1,"341":1,"411":1,"412":1,"413":1},"2":{"35":1,"195":3,"196":3,"197":3,"297":1,"299":1,"339":1,"340":1,"341":1,"411":3,"412":3,"413":3}}],["erc721data",{"2":{"198":2,"414":2}}],["erc721contractaddress",{"2":{"196":2,"198":1,"412":2,"414":1}}],["erc721tokenaddress",{"2":{"35":1,"41":1,"135":1,"140":1,"196":1,"412":1}}],["erc721interface",{"2":{"35":2,"41":2,"196":5,"198":2,"412":5,"414":2}}],["erc721",{"0":{"136":1},"2":{"6":1,"30":3,"33":1,"49":1,"50":1,"64":2,"135":3,"136":8,"288":1,"289":1}}],["eoawallet",{"2":{"254":2}}],["eoas",{"2":{"99":1,"309":1,"310":1,"313":1}}],["eoa",{"0":{"49":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"35":7,"41":2,"43":1,"46":5,"49":1,"50":1,"54":1,"67":1,"202":1,"254":1,"255":1,"418":1}}],["evm",{"2":{"30":1,"132":1,"133":1,"139":2,"150":1,"157":1,"251":2,"254":1,"285":1,"350":1}}],["ever",{"2":{"283":1}}],["everywhere",{"2":{"156":1}}],["every",{"2":{"30":2,"185":1,"316":1,"320":1,"401":1}}],["everything",{"2":{"6":1,"33":1,"251":1}}],["event",{"2":{"130":1,"142":1,"157":1}}],["events",{"2":{"30":1,"130":1,"131":2,"142":1,"143":3,"374":1}}],["even",{"2":{"8":1,"30":1,"110":1,"114":1,"119":1,"198":1,"285":1,"319":1,"327":1,"392":1,"396":1,"414":1}}],["enclave",{"2":{"352":1}}],["encrypted",{"2":{"352":1}}],["encourage",{"2":{"146":1,"289":1}}],["encodetypeddatadigest",{"2":{"341":2}}],["encode",{"2":{"139":1,"195":2,"196":2,"197":2,"320":1,"341":1,"342":1,"411":2,"412":2,"413":2}}],["encoded",{"2":{"139":1,"340":2,"341":1,"342":1}}],["encodefunctiondata",{"2":{"35":1,"41":1,"42":2,"54":1,"195":3,"196":3,"197":3,"198":3,"328":2,"334":1,"411":3,"412":3,"413":3,"414":3}}],["encoding",{"0":{"338":1,"339":1},"1":{"340":1,"341":1,"342":1},"2":{"139":2,"283":1}}],["encoding=",{"2":{"128":2}}],["entirely",{"2":{"146":1}}],["entire",{"2":{"139":1,"250":1,"283":1,"294":1}}],["entered",{"2":{"123":1}}],["enter",{"2":{"44":1,"45":1,"118":1,"123":1,"125":1,"126":1,"301":1}}],["enabling",{"2":{"69":1,"206":1,"250":1,"352":1,"385":1}}],["enables",{"2":{"89":1,"154":1,"350":1}}],["enable",{"2":{"62":1,"124":1,"128":1}}],["enjoy",{"2":{"69":1,"98":1,"206":1,"385":1}}],["env",{"2":{"49":20,"54":11,"61":2,"361":2,"363":2,"364":2,"365":2,"366":2,"367":2,"377":2,"378":2}}],["environment",{"0":{"44":1,"50":1},"1":{"45":1},"2":{"43":1,"44":1,"49":5,"50":1,"51":1}}],["enforce",{"2":{"35":3,"353":1}}],["ensures",{"2":{"41":1}}],["ensure",{"2":{"8":1,"114":2,"118":1,"155":1,"182":1,"327":1,"396":2,"399":1}}],["endingblocknumber",{"2":{"269":1}}],["endpoint",{"2":{"6":2,"52":1,"150":2,"154":1,"155":2,"303":2}}],["endpointssequence",{"2":{"150":1}}],["endpoints",{"0":{"31":1},"2":{"5":1,"8":1,"150":3,"152":1,"154":1}}],["end",{"2":{"6":2}}],["ethtransaction",{"2":{"258":1,"259":1,"260":2,"261":2,"282":1,"284":4,"288":2}}],["ethwallet",{"2":{"254":4,"255":1,"260":2,"261":2}}],["ethauth",{"2":{"162":1,"163":1,"164":1,"182":1,"183":7,"399":1,"400":7}}],["ethauthproofstring",{"2":{"49":2}}],["ethauthproof",{"0":{"49":1,"53":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"43":1,"53":1}}],["eth",{"2":{"132":3,"157":1,"282":1}}],["ethkit",{"0":{"67":1,"202":1,"418":1},"2":{"67":2,"202":2,"418":2}}],["ether",{"2":{"341":1}}],["etherscan",{"2":{"139":1}}],["ethers",{"0":{"177":1,"332":1,"333":1},"2":{"35":4,"41":2,"42":6,"46":7,"49":2,"54":8,"67":1,"72":3,"103":4,"104":2,"151":3,"155":7,"156":1,"183":3,"188":2,"189":3,"193":1,"195":2,"196":2,"197":2,"198":3,"202":1,"209":2,"215":3,"219":2,"226":3,"229":2,"236":1,"320":4,"328":4,"334":2,"382":4,"383":2,"400":3,"404":2,"405":3,"409":1,"411":2,"412":2,"413":2,"414":3,"418":1}}],["ethereum",{"0":{"178":1,"340":1},"2":{"5":1,"8":2,"30":4,"35":1,"41":1,"67":1,"99":1,"107":1,"150":1,"156":3,"157":1,"202":1,"203":1,"204":1,"251":1,"264":1,"309":1,"310":1,"340":1,"350":1,"389":1,"418":1,"419":1}}],["etc",{"2":{"8":1,"213":1,"214":1,"224":1,"292":1,"352":1,"353":1,"363":1}}],["e",{"2":{"6":1,"35":1,"41":1,"64":2,"93":1,"99":1,"128":1,"134":1,"136":1,"138":1,"144":1,"186":1,"214":1,"224":1,"283":1,"314":1,"352":1,"402":1}}],["examine",{"2":{"139":1}}],["examples",{"0":{"217":1,"227":1,"312":1,"315":1},"2":{"150":1,"151":1,"152":1,"157":1}}],["example",{"0":{"77":1,"234":1,"243":1,"246":1},"2":{"4":1,"6":3,"32":1,"33":1,"36":1,"41":2,"42":1,"54":1,"64":1,"77":1,"93":1,"94":1,"96":2,"111":1,"131":1,"132":2,"134":1,"136":1,"138":1,"139":1,"140":1,"142":1,"150":1,"157":1,"159":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"179":1,"182":1,"183":1,"194":1,"203":1,"204":1,"208":1,"216":2,"217":1,"218":1,"225":2,"228":1,"234":1,"244":1,"246":1,"249":3,"250":4,"284":3,"285":1,"286":3,"288":3,"353":1,"364":1,"393":1,"399":1,"400":1,"410":1,"419":1}}],["exist",{"2":{"128":2,"363":1}}],["existing",{"0":{"103":1},"1":{"104":1},"2":{"8":1,"46":1,"96":1,"124":1}}],["excellent",{"2":{"156":1}}],["exception",{"2":{"264":1,"285":1}}],["exceptions",{"2":{"251":3}}],["except",{"2":{"124":1,"364":1}}],["exclude",{"2":{"139":1}}],["excluding",{"2":{"116":1}}],["extra",{"2":{"203":2,"251":1,"419":2}}],["extremely",{"2":{"122":1,"140":1}}],["extend",{"2":{"120":1,"329":1}}],["extension",{"0":{"108":1,"178":1,"390":1},"2":{"108":1,"156":2,"177":1,"178":1,"390":1}}],["extensions",{"2":{"64":1,"157":1}}],["externally",{"0":{"310":1},"1":{"311":1,"312":1},"2":{"99":1,"309":1,"310":1,"331":1}}],["external",{"2":{"64":2,"318":1,"326":1,"352":1}}],["executing",{"2":{"333":2,"376":1}}],["executioncontext",{"2":{"49":2}}],["executed",{"2":{"34":1,"42":2,"195":1,"196":1,"197":1,"377":1,"378":2,"411":1,"412":1,"413":1}}],["expires",{"2":{"378":1}}],["expiresat",{"2":{"366":2}}],["expiry",{"0":{"162":1},"2":{"162":2}}],["explicitly",{"2":{"250":1}}],["explanation",{"2":{"216":2,"225":2}}],["explorer",{"2":{"139":1}}],["explore",{"2":{"69":1,"206":1,"385":1}}],["expose",{"2":{"141":1}}],["exposes",{"2":{"131":1}}],["exported=",{"2":{"128":1}}],["export",{"2":{"49":2,"96":1,"238":1,"249":1,"250":1,"345":1,"365":3}}],["expanding",{"2":{"98":1}}],["expand",{"2":{"46":1,"125":1,"126":1,"300":1,"301":1}}],["experimental",{"2":{"248":1,"250":1}}],["experiment",{"2":{"147":1}}],["experience",{"2":{"43":1,"68":1,"69":1,"78":1,"114":1,"156":1,"182":1,"186":1,"205":1,"206":1,"251":1,"384":1,"385":1,"396":1,"399":1,"402":1}}],["experiences",{"2":{"2":1,"352":1}}],["expects",{"2":{"285":1}}],["expect",{"2":{"143":1,"144":1}}],["expected",{"2":{"35":1,"262":1}}],["gnosis",{"2":{"315":1}}],["guarantee",{"2":{"352":1,"370":1}}],["guarantees",{"2":{"350":1}}],["guard",{"0":{"113":1,"353":1,"395":1},"2":{"111":2,"113":2,"114":1,"353":4,"354":2,"377":1,"393":2,"395":2,"396":1}}],["guestmodule",{"0":{"344":1},"2":{"345":1}}],["guess",{"2":{"292":1}}],["guides",{"2":{"141":1}}],["guide",{"2":{"43":1,"44":1,"46":1,"47":1,"48":1,"62":1,"63":1,"70":1,"71":1,"95":1,"96":1,"207":1,"291":1,"386":1}}],["give",{"0":{"155":1},"2":{"147":2,"378":1}}],["given",{"2":{"121":1,"258":2,"259":2,"260":2,"261":2,"262":1,"265":2,"271":1,"272":1,"275":2,"276":1,"320":1,"324":1,"328":1,"330":1}}],["gives",{"2":{"99":1}}],["git",{"2":{"44":1,"118":3}}],["github",{"2":{"33":1,"66":1,"77":1,"118":1,"152":2,"201":1,"208":1,"218":1,"228":1,"244":1,"246":1,"249":1,"250":2,"417":1}}],["got",{"2":{"300":1}}],["goerli",{"2":{"214":1,"224":1}}],["goes",{"2":{"139":1}}],["good",{"2":{"96":1}}],["googlelogin",{"2":{"365":3}}],["googleoauthprovider",{"2":{"365":3}}],["google",{"0":{"365":1},"2":{"69":1,"86":1,"97":2,"114":1,"124":1,"157":1,"170":2,"172":1,"206":1,"353":1,"363":1,"365":8,"366":4,"370":1,"385":1,"396":1}}],["golang",{"2":{"66":1,"201":1,"417":1}}],["go",{"0":{"66":1,"152":1,"201":1,"417":1},"2":{"62":1,"66":6,"67":2,"120":1,"150":2,"152":3,"183":3,"201":6,"202":2,"203":1,"283":1,"368":1,"400":3,"417":6,"418":2,"419":1}}],["gt",{"2":{"35":6,"41":2,"45":2,"46":2,"49":7,"52":2,"53":4,"54":5,"64":1,"73":9,"74":21,"75":6,"76":4,"78":3,"90":10,"91":4,"93":1,"96":2,"97":8,"103":1,"104":4,"116":3,"118":2,"120":1,"121":4,"122":1,"125":2,"126":2,"128":42,"144":1,"147":3,"155":2,"157":1,"183":2,"209":1,"239":2,"249":4,"250":6,"269":2,"285":6,"286":5,"294":1,"303":3,"342":1,"365":16,"373":1,"374":1,"375":1,"382":1,"383":4,"400":2}}],["g",{"2":{"35":1,"93":1,"134":1,"136":1,"138":1,"144":1,"186":1,"214":1,"224":1,"283":1,"314":1,"352":1,"402":1}}],["general",{"2":{"120":1,"131":1,"143":1,"251":2}}],["generated",{"2":{"44":1,"45":1,"46":2,"53":1,"111":2,"114":2,"186":1,"254":1,"292":1,"364":2,"376":1,"393":2,"396":2,"402":1}}],["generate",{"0":{"189":1,"405":1},"2":{"42":2,"46":2,"53":2,"114":1,"254":1,"396":1}}],["generating",{"2":{"13":1,"46":1}}],["getelementbyid",{"2":{"365":1}}],["getimagehash",{"2":{"335":1}}],["getfunction",{"2":{"328":2,"334":1}}],["getsessionhash",{"2":{"363":1,"364":1,"365":2}}],["getstorageat",{"2":{"320":1}}],["getsigner",{"2":{"35":2,"41":1,"42":2,"46":1,"54":1,"188":1,"194":1,"195":2,"196":2,"197":2,"198":2,"404":1,"410":1,"411":2,"412":2,"413":2,"414":2}}],["getchainid",{"2":{"191":1,"407":1}}],["getcomponentinchildren",{"2":{"122":1}}],["getcollection",{"2":{"6":1}}],["getprovider",{"2":{"191":1,"407":1}}],["getaddress",{"0":{"257":1},"2":{"181":1,"188":1,"189":1,"196":1,"197":1,"257":1,"265":2,"275":2,"284":2,"288":1,"398":1,"404":1,"405":1,"412":1,"413":1}}],["getwallet",{"2":{"157":5,"181":1,"182":1,"398":1,"399":1}}],["getblock",{"2":{"155":1}}],["getblocknumber",{"2":{"49":3,"54":3}}],["getlatestblock",{"2":{"155":2}}],["getkitconnectwallets",{"2":{"97":2}}],["getdefaultconnectors",{"2":{"73":2,"74":2,"97":1}}],["gettoporders",{"2":{"307":1}}],["gettokenbalances",{"2":{"64":1,"151":1,"152":1}}],["getting",{"0":{"32":1,"58":1,"71":1,"358":1},"1":{"59":1,"60":1,"61":1,"72":1,"359":1,"360":1,"361":1},"2":{"70":1,"207":1,"386":1}}],["get",{"0":{"295":1},"2":{"2":1,"6":1,"30":1,"33":1,"35":2,"41":2,"43":1,"49":4,"51":1,"54":2,"57":1,"72":1,"102":1,"106":1,"107":1,"119":1,"139":1,"149":1,"152":1,"155":1,"181":1,"262":1,"265":4,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"273":1,"274":1,"275":1,"277":1,"278":1,"279":1,"280":1,"303":1,"306":1,"357":1,"363":2,"381":1,"388":1,"389":1,"398":1}}],["great",{"2":{"130":1,"131":1,"142":1,"143":1}}],["grantrole",{"2":{"46":1}}],["grab",{"2":{"5":1,"30":1,"149":1}}],["groupname",{"2":{"220":1}}],["groups",{"0":{"184":1}}],["group",{"2":{"8":1}}],["gain",{"2":{"354":2}}],["gather",{"2":{"292":1,"294":1}}],["gateway",{"0":{"154":1},"1":{"155":1},"2":{"154":1,"263":1}}],["gate",{"2":{"147":1}}],["gameobject",{"2":{"122":1,"147":1}}],["game",{"0":{"9":1,"11":1,"17":1,"18":1,"23":1,"24":1},"2":{"30":1,"32":1,"43":1,"119":5,"150":2,"190":1,"204":1,"297":1,"406":1}}],["games",{"2":{"2":1,"30":1,"115":1,"137":1,"149":1}}],["gasused",{"2":{"378":1}}],["gaslimit",{"0":{"333":1},"2":{"282":1,"284":1,"328":2,"333":2,"334":1,"378":1}}],["gaslimitestimator",{"2":{"282":1}}],["gasless",{"0":{"43":1},"1":{"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1}}],["gastipcap",{"2":{"278":1}}],["gasprice",{"2":{"277":1,"282":1,"284":1}}],["gas",{"0":{"36":1,"39":1,"40":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1},"2":{"8":7,"13":1,"35":3,"41":2,"43":1,"132":3,"140":1,"265":1,"272":2,"273":1,"277":1,"278":1,"282":1,"333":1}}],["dropsession",{"2":{"367":1}}],["drag",{"2":{"120":1,"122":1}}],["due",{"2":{"147":1,"235":1,"249":1,"370":1}}],["during",{"2":{"121":1,"321":1}}],["d",{"2":{"52":1,"53":1,"64":1,"139":1,"150":1,"151":1,"152":1,"183":1,"203":2,"204":1,"378":1,"400":1,"419":2}}],["ddos",{"0":{"49":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"43":1}}],["diligence",{"0":{"348":1},"2":{"346":1}}],["difficult",{"2":{"251":1}}],["difficulty",{"2":{"43":1}}],["differs",{"2":{"216":1,"225":1,"316":1}}],["difference",{"2":{"196":1,"197":1,"412":1,"413":1}}],["different",{"2":{"157":1,"195":1,"196":1,"197":1,"204":1,"309":1,"351":1,"353":1,"411":1,"412":1,"413":1}}],["digit",{"2":{"123":1}}],["dive",{"2":{"70":1,"207":1,"386":1}}],["discuss",{"2":{"370":1}}],["discouraged",{"2":{"248":1}}],["disconnectweb3react",{"2":{"239":1}}],["disconnect",{"2":{"165":1,"179":1}}],["discord",{"2":{"69":1,"124":1,"170":1,"183":1,"206":1,"385":1,"400":1}}],["disabled",{"2":{"122":1}}],["dist",{"2":{"104":1,"383":1}}],["distribution",{"0":{"104":1,"383":1},"2":{"104":1,"383":1}}],["distinct",{"2":{"42":2,"368":1}}],["displaying",{"2":{"71":1}}],["displayedassets",{"0":{"88":1}}],["displayed",{"2":{"64":1,"86":1,"87":1,"88":4,"109":1,"179":1,"242":1,"308":1,"391":1}}],["dispatched",{"2":{"42":1}}],["dispatch",{"2":{"8":1,"34":1,"35":2,"42":1,"194":1,"410":1}}],["dispatching",{"2":{"8":1}}],["directive",{"2":{"250":4}}],["direct",{"2":{"158":1,"328":1,"353":1}}],["directory",{"0":{"249":1,"250":1},"2":{"33":2,"44":1,"49":1,"248":2,"250":2}}],["directly",{"2":{"30":1,"103":1,"109":1,"131":1,"142":1,"143":1,"150":1,"153":1,"186":1,"284":1,"308":1,"336":1,"353":1,"364":1,"365":1,"382":1,"391":1,"402":1}}],["damage",{"2":{"354":1}}],["dangerous",{"2":{"318":1,"333":1}}],["dark",{"2":{"80":1,"157":1}}],["date",{"2":{"64":2}}],["datatypes",{"2":{"285":2}}],["data2",{"2":{"195":2,"196":2,"197":2,"411":2,"412":2,"413":2}}],["data1",{"2":{"195":2,"196":2,"197":2,"411":2,"412":2,"413":2}}],["database",{"2":{"131":2}}],["data",{"0":{"285":1,"340":1,"341":1},"2":{"30":2,"33":2,"35":2,"41":2,"42":2,"54":3,"64":3,"128":4,"132":1,"149":1,"195":4,"196":4,"197":6,"198":4,"284":1,"286":1,"301":1,"307":1,"328":2,"334":1,"340":1,"341":2,"342":1,"352":1,"377":3,"378":2,"411":4,"412":4,"413":6,"414":4}}],["dashboard",{"2":{"44":1,"353":1}}],["dapps",{"2":{"8":1,"107":1,"158":1,"179":1,"204":1,"217":1,"389":1}}],["dapp",{"0":{"37":1,"38":1,"53":1,"157":1,"177":1,"178":1},"2":{"8":1,"30":1,"32":1,"46":1,"52":1,"53":1,"103":1,"107":1,"150":1,"156":3,"157":9,"159":1,"161":1,"163":1,"169":1,"177":2,"179":6,"182":2,"183":1,"203":1,"204":3,"208":2,"218":2,"228":2,"244":2,"246":1,"250":1,"382":1,"389":1,"399":2,"400":1,"419":1}}],["daicontractaddress",{"2":{"195":3,"198":1,"411":3,"414":1}}],["dai",{"2":{"8":1,"35":1,"373":2}}],["debugging",{"2":{"251":1}}],["debit",{"2":{"109":1,"308":1,"391":1}}],["deactivate",{"2":{"239":1}}],["deactivated",{"2":{"239":1}}],["deactivation",{"0":{"239":1}}],["deal",{"2":{"139":1}}],["derive",{"2":{"189":1,"405":1}}],["demand",{"0":{"344":1},"2":{"156":2,"177":1,"350":1}}],["demonstrated",{"2":{"249":1}}],["demonstrates",{"2":{"183":1,"400":1}}],["demonstrating",{"2":{"6":1}}],["demo",{"0":{"56":1,"101":1,"305":1,"356":1,"380":1},"2":{"56":1,"69":1,"73":1,"74":1,"101":1,"119":3,"147":2,"157":2,"177":1,"204":1,"206":1,"208":1,"210":1,"217":4,"218":1,"220":1,"227":3,"228":1,"234":1,"238":1,"243":1,"244":1,"246":2,"250":1,"305":1,"356":1,"365":2,"380":1,"385":1}}],["denoted",{"2":{"139":1}}],["deep",{"2":{"124":2,"128":3}}],["define",{"2":{"353":1,"364":1}}],["defines",{"2":{"318":1,"326":1}}],["defined",{"2":{"214":1,"224":1,"253":1,"263":1,"288":1,"289":1,"320":1,"328":1,"329":1,"331":1}}],["definition",{"2":{"139":1}}],["defi",{"2":{"159":1}}],["defense",{"2":{"119":2,"353":1}}],["defaultabicoder",{"2":{"320":2}}],["defaultpurchaseamount",{"0":{"175":1},"2":{"175":1}}],["defaultfundingcurrency",{"0":{"174":1},"2":{"157":2,"174":1,"176":2}}],["defaulting",{"2":{"132":1}}],["defaultnetwork",{"0":{"214":1,"224":1},"2":{"97":1,"157":1,"210":1,"220":1}}],["defaulttheme",{"0":{"80":1},"2":{"80":1}}],["defaultchainid",{"2":{"73":1,"74":1}}],["defaults",{"2":{"61":1,"114":1,"147":1,"275":1,"361":1,"363":1,"364":1,"365":1,"366":1,"367":1,"377":1,"378":1,"396":1}}],["default",{"2":{"33":1,"34":1,"49":1,"114":1,"122":1,"128":3,"144":1,"162":1,"166":1,"173":1,"174":1,"175":2,"176":2,"214":2,"223":1,"224":2,"232":1,"241":1,"245":1,"249":1,"250":1,"265":2,"288":1,"365":1,"396":1}}],["desc",{"2":{"307":1}}],["described",{"2":{"158":1,"249":1,"250":1}}],["description",{"2":{"64":4,"213":1,"223":1,"292":2,"293":2}}],["desktop",{"2":{"156":1}}],["desired",{"2":{"147":1}}],["design",{"2":{"140":1,"314":1}}],["designed",{"2":{"4":1,"33":1,"156":1}}],["decode",{"2":{"320":2}}],["decodeproof",{"2":{"183":1,"400":1}}],["decoding",{"2":{"283":1}}],["declare",{"2":{"250":1}}],["declared",{"2":{"250":1,"333":1}}],["declaration",{"2":{"250":1}}],["decline",{"2":{"44":1}}],["decentralized",{"2":{"186":1,"402":1}}],["decimalnormalizer",{"2":{"132":2,"133":1,"134":1,"139":2,"140":2,"282":1,"288":2}}],["decimals",{"2":{"64":4,"132":3,"133":4}}],["delegatecall",{"0":{"329":1},"2":{"328":2,"329":2,"334":1}}],["delegate",{"2":{"286":1}}],["delete",{"2":{"49":1}}],["delightful",{"2":{"157":1}}],["delivery",{"2":{"8":1}}],["delayed",{"2":{"139":1}}],["delayedencodedata",{"2":{"139":2,"140":1}}],["delayedencode",{"0":{"139":1},"2":{"139":4,"140":1}}],["depth",{"2":{"213":1,"223":1}}],["deprecated",{"2":{"109":1,"391":1}}],["depends",{"2":{"249":1}}],["depending",{"2":{"216":1,"225":1,"299":1}}],["dependant",{"2":{"147":1}}],["depend",{"2":{"103":1,"248":1,"382":1}}],["dependencies",{"2":{"72":1,"103":1,"382":1}}],["dependency",{"2":{"42":1,"103":1,"382":1}}],["deploycontract",{"2":{"143":4}}],["deploymentresult",{"2":{"287":2}}],["deployment",{"0":{"143":1,"344":1},"2":{"44":1,"64":1,"143":1,"317":1}}],["deploying",{"0":{"287":1},"2":{"13":1,"64":1,"140":1,"143":2}}],["deployedwalletcontext",{"2":{"183":1,"400":1}}],["deployedcontractaddress",{"2":{"143":1}}],["deployed",{"2":{"8":1,"36":2,"49":2,"50":1,"64":5,"99":1,"283":1,"299":1,"336":2}}],["deploy",{"0":{"9":1,"11":1,"15":1,"16":1,"21":1,"22":1,"27":1,"44":1,"45":1,"46":1,"52":1,"297":1},"1":{"45":1,"47":1,"48":1},"2":{"6":2,"13":1,"43":2,"44":1,"45":1,"46":1,"51":1,"52":1,"54":1,"133":1,"135":1,"137":1,"143":2,"154":1,"287":2,"296":1,"297":1}}],["determining",{"2":{"282":1}}],["determined",{"2":{"161":1}}],["determine",{"2":{"88":1,"284":1}}],["determines",{"2":{"80":1,"81":1,"85":1,"86":1,"87":1,"373":1}}],["detect",{"2":{"75":1}}],["detects",{"2":{"30":1}}],["details",{"0":{"10":1,"12":1,"298":1},"2":{"46":1,"64":1,"96":1,"179":1,"213":1,"298":1,"301":1,"353":1}}],["device",{"2":{"110":1,"111":1,"190":1,"367":1,"392":1,"393":1,"406":1}}],["devices",{"2":{"107":1,"112":1,"389":1,"394":1}}],["developing",{"2":{"251":1}}],["developed",{"2":{"156":1,"204":1}}],["developer",{"2":{"109":1,"308":1,"391":1}}],["developers",{"2":{"78":1,"89":1,"156":1}}],["development",{"2":{"44":1,"353":1}}],["dev",{"2":{"2":1,"44":2,"45":1,"52":1,"53":1,"67":1,"202":1,"307":1,"342":1,"418":1}}],["dom",{"2":{"365":1}}],["doing",{"2":{"288":1}}],["doubt",{"2":{"139":1}}],["don",{"2":{"139":1,"147":1,"148":1,"179":1,"198":1,"284":1,"362":1,"370":1,"414":1}}],["done",{"2":{"46":1,"47":1,"60":1,"111":1,"130":2,"141":1,"143":1,"179":1,"360":1,"378":1,"393":1}}],["documented",{"2":{"141":1}}],["document",{"2":{"139":1,"365":1}}],["documentation",{"2":{"4":1,"5":1,"8":1,"30":1,"59":1,"73":1,"103":1,"119":2,"132":1,"133":1,"135":1,"137":1,"264":1,"265":1,"359":1}}],["docs",{"2":{"49":1,"50":1,"122":1,"128":1,"141":1,"151":1,"152":1,"204":1}}],["download",{"2":{"120":1}}],["down",{"2":{"44":1,"86":1,"87":1,"125":1,"126":1,"283":1}}],["downside",{"2":{"33":1}}],["do",{"0":{"249":1,"250":1},"2":{"42":1,"46":2,"53":1,"118":1,"120":2,"121":1,"130":1,"131":2,"142":1,"143":2,"148":1,"182":2,"183":3,"204":1,"249":1,"283":2,"293":1,"313":1,"399":2,"400":3}}],["doesn",{"2":{"8":1,"116":1,"128":2,"316":1,"327":1,"328":1,"332":1,"333":1,"363":1}}],["does",{"0":{"248":1},"2":{"2":1,"124":1,"132":1,"353":1,"369":1}}],["blob",{"2":{"250":1}}],["blockcount",{"2":{"273":2}}],["blockchains",{"2":{"251":1}}],["blockchain",{"0":{"64":1,"131":1,"141":1},"1":{"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1},"2":{"30":2,"32":1,"33":1,"62":1,"64":1,"69":1,"99":1,"110":1,"131":3,"141":1,"149":1,"157":1,"206":1,"350":1,"385":1,"392":1}}],["blockrange",{"0":{"269":1},"2":{"269":2}}],["blockbyhash",{"0":{"267":1},"2":{"267":1}}],["blockbynumber",{"0":{"266":1},"2":{"266":1}}],["blocknative",{"2":{"228":1}}],["blocknumbers",{"2":{"269":1}}],["blocknumber",{"0":{"268":1},"2":{"43":1,"64":2,"265":5,"266":2,"268":2,"269":1,"271":3,"273":2,"275":3}}],["blocking",{"2":{"157":2}}],["blockhash",{"2":{"64":1,"267":1,"280":1}}],["block",{"2":{"54":1,"64":1,"139":1,"155":4,"157":1,"265":3,"266":4,"267":4,"268":1,"269":2,"280":2,"377":1}}],["blocks",{"2":{"33":1,"251":2,"269":1,"273":1}}],["brave",{"2":{"366":1}}],["branded",{"2":{"353":1}}],["brackets",{"2":{"283":1}}],["breaches",{"2":{"342":1}}],["breaking",{"2":{"115":3,"235":1}}],["bring",{"2":{"148":1}}],["browsable",{"2":{"128":2}}],["browse",{"2":{"54":1,"128":1}}],["browsers",{"2":{"106":1,"157":3,"388":1}}],["browser",{"0":{"108":1,"390":1},"2":{"45":1,"64":1,"107":1,"112":1,"156":3,"157":1,"200":1,"248":1,"250":4,"389":1,"394":1,"416":1}}],["bob",{"2":{"341":1}}],["bounds",{"2":{"313":1}}],["bool",{"2":{"285":2,"322":1,"342":1}}],["boolean",{"2":{"49":1,"64":2}}],["bonus",{"0":{"289":1},"2":{"144":1}}],["body",{"2":{"49":3}}],["both",{"2":{"6":1,"64":1,"111":1,"150":1,"333":2,"351":1,"352":1,"393":1}}],["bottom",{"2":{"2":1,"81":3}}],["biginteger",{"2":{"275":1,"285":1}}],["bigintegar",{"2":{"265":2,"272":1,"275":1,"277":1,"278":1,"280":1,"286":6,"288":1}}],["bignumber",{"2":{"42":2}}],["binary",{"2":{"139":1}}],["bin",{"2":{"44":1}}],["b",{"0":{"38":1},"2":{"118":1,"121":2,"128":1}}],["bundling",{"2":{"198":1,"414":1}}],["bundle",{"2":{"195":1,"196":1,"197":1,"330":1,"333":3,"411":1,"412":1,"413":1}}],["bunch",{"2":{"8":1,"156":1}}],["bug",{"2":{"128":1,"250":1}}],["bugfixes",{"2":{"115":1}}],["built",{"2":{"30":1,"66":1,"67":1,"68":1,"115":1,"146":1,"150":1,"156":1,"201":1,"202":1,"205":1,"384":1,"417":1,"418":1}}],["builds",{"2":{"115":1,"116":1}}],["building",{"0":{"34":1,"199":1,"415":1},"1":{"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"200":1,"201":1,"202":1,"203":1,"416":1,"417":1,"418":1,"419":1},"2":{"203":1,"204":1,"419":1}}],["build",{"2":{"4":1,"33":1,"36":1,"43":1,"49":1,"50":2,"106":1,"107":1,"118":2,"120":1,"122":1,"128":1,"185":1,"204":1,"251":1,"292":1,"388":1,"389":1,"401":1}}],["builder",{"0":{"0":1,"26":1,"36":1,"46":1,"290":1,"296":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"47":1,"48":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1},"2":{"5":1,"13":1,"30":3,"33":1,"41":1,"43":2,"46":2,"62":1,"63":1,"80":1,"121":2,"133":3,"135":2,"137":2,"143":1,"149":3,"151":1,"155":1,"263":1,"291":1,"296":1,"297":1}}],["burn",{"0":{"18":1,"24":1},"2":{"140":1}}],["bump",{"2":{"8":1}}],["button",{"2":{"46":1,"53":1,"75":2,"76":2,"91":2,"245":1}}],["but",{"2":{"7":1,"30":1,"33":2,"41":2,"61":1,"66":1,"67":1,"120":1,"131":1,"139":1,"144":1,"147":1,"156":2,"183":1,"201":1,"202":1,"204":1,"264":1,"289":1,"325":1,"331":1,"352":1,"353":1,"354":1,"361":1,"377":1,"400":1,"417":1,"418":1}}],["bar",{"2":{"121":1,"147":1}}],["bannerurl",{"0":{"169":1},"2":{"157":2,"169":1}}],["banner",{"2":{"64":1,"157":2,"169":3}}],["balancequery",{"2":{"286":3}}],["balanceof",{"2":{"286":2,"288":1}}],["balanceat",{"0":{"265":1},"2":{"264":1,"265":2}}],["balance",{"2":{"64":2,"265":5,"286":3,"288":1}}],["balances",{"0":{"13":1},"2":{"30":1,"62":1,"64":1}}],["basis",{"2":{"96":1}}],["basics",{"2":{"292":1}}],["basic",{"2":{"43":1,"73":1,"132":2,"134":1,"136":1,"138":1,"147":1}}],["bash",{"2":{"44":1}}],["based",{"2":{"139":1,"215":1,"225":3,"226":1,"227":2,"248":1,"249":1,"251":1,"368":1}}],["base",{"0":{"300":1},"2":{"6":1,"299":1,"300":1}}],["baseuris",{"2":{"6":1}}],["batching",{"0":{"343":1},"2":{"42":1,"140":1,"195":1,"196":1,"197":1,"411":1,"412":1,"413":1}}],["batch",{"0":{"140":1,"198":1,"414":1},"2":{"42":3,"140":3}}],["batched",{"2":{"8":1,"42":1,"140":1,"260":1,"261":1}}],["background",{"2":{"152":1}}],["backend",{"0":{"203":1,"419":1},"2":{"150":1,"203":3,"248":1,"354":1,"419":3}}],["backends",{"0":{"199":1,"415":1},"1":{"200":1,"201":1,"202":1,"203":1,"416":1,"417":1,"418":1,"419":1},"2":{"8":1,"66":1,"67":1,"149":1,"200":1,"201":1,"202":1,"416":1,"417":1,"418":1}}],["back",{"2":{"111":1,"179":1,"393":1}}],["backup",{"2":{"2":1,"311":1}}],["byte",{"2":{"285":1,"342":1}}],["bytecode",{"2":{"64":1,"143":5,"271":1}}],["bytecodehash",{"2":{"64":1}}],["bytes4",{"2":{"342":4}}],["bytesn",{"2":{"285":1}}],["bytes",{"2":{"54":1,"197":2,"198":1,"285":2,"301":1,"342":3,"413":2,"414":1}}],["bytes32",{"2":{"46":1,"320":1,"322":1,"326":1,"336":1,"342":3}}],["by",{"2":{"6":1,"8":1,"33":2,"34":1,"35":4,"36":1,"41":3,"43":1,"44":1,"46":4,"47":1,"50":1,"51":1,"52":1,"69":1,"78":1,"80":1,"88":1,"97":1,"98":2,"99":2,"110":1,"111":1,"113":1,"114":1,"119":2,"120":1,"121":1,"122":2,"128":6,"132":1,"134":2,"136":2,"137":1,"138":2,"139":1,"140":1,"141":1,"147":1,"154":1,"157":3,"168":1,"173":1,"174":1,"176":1,"179":2,"182":1,"186":1,"204":1,"206":1,"212":1,"222":1,"242":1,"245":1,"249":1,"250":2,"253":1,"263":1,"264":2,"265":1,"267":1,"269":1,"279":1,"280":1,"313":1,"317":2,"319":1,"320":1,"321":1,"327":1,"328":1,"329":1,"330":1,"334":1,"335":1,"342":1,"346":1,"352":3,"353":3,"354":1,"364":2,"365":1,"370":1,"375":1,"377":1,"378":1,"385":1,"392":1,"393":1,"395":1,"396":1,"399":1,"402":1}}],["beyond",{"2":{"329":1}}],["beauty",{"2":{"156":1}}],["beautify",{"2":{"146":1}}],["beautifully",{"2":{"106":1,"107":1,"388":1,"389":1}}],["being",{"2":{"140":1,"248":1,"331":1}}],["bespoke",{"2":{"140":1}}],["best",{"2":{"8":1,"53":1,"157":2,"169":1,"203":1,"251":1,"419":1}}],["beneficial",{"2":{"140":1}}],["benefit",{"2":{"43":1,"98":1}}],["benefits",{"2":{"8":1,"154":1,"156":1}}],["behalf",{"2":{"186":1,"402":1}}],["behaves",{"2":{"179":1}}],["behaviour",{"2":{"121":1,"318":1,"325":1}}],["behind",{"2":{"30":1,"282":1}}],["bells",{"2":{"251":1}}],["believers",{"2":{"137":1}}],["believe",{"2":{"119":1}}],["below",{"2":{"5":1,"6":2,"36":1,"52":1,"73":1,"74":1,"90":1,"149":1,"150":2,"151":1,"152":1,"158":1,"204":2,"217":1,"249":1,"250":1,"327":1,"365":1}}],["become",{"2":{"120":1}}],["becomes",{"2":{"110":1,"392":1}}],["because",{"2":{"119":1,"120":1,"313":1,"316":1,"354":1}}],["begin",{"2":{"365":1}}],["beginning",{"2":{"36":1}}],["began",{"2":{"119":1}}],["better",{"2":{"139":1,"148":2}}],["beta",{"2":{"60":1,"360":1}}],["between",{"2":{"42":1,"122":1,"157":1}}],["been",{"2":{"33":1,"352":1,"364":1,"374":2,"375":1}}],["before",{"2":{"5":1,"36":2,"49":1,"140":1,"249":2,"333":2,"377":1,"378":2}}],["be",{"2":{"4":1,"6":1,"8":1,"33":4,"34":2,"35":7,"41":1,"42":3,"43":2,"44":1,"46":1,"47":1,"51":1,"53":1,"60":1,"61":1,"63":1,"64":1,"80":1,"83":1,"84":1,"85":1,"86":3,"87":3,"88":3,"99":4,"104":1,"109":3,"110":2,"112":1,"113":1,"114":5,"115":1,"119":3,"120":2,"121":1,"130":1,"131":1,"133":1,"134":1,"136":1,"138":1,"139":3,"144":2,"147":1,"157":1,"159":1,"161":2,"164":1,"167":1,"168":1,"170":1,"171":1,"172":1,"173":1,"174":1,"176":2,"179":2,"182":1,"186":1,"193":1,"198":2,"209":1,"212":1,"213":1,"214":1,"218":1,"222":1,"224":1,"228":1,"235":1,"236":1,"238":1,"239":1,"242":1,"244":1,"248":1,"249":2,"250":9,"251":1,"252":1,"255":1,"260":3,"261":3,"262":1,"264":2,"266":1,"269":1,"271":1,"273":1,"275":1,"285":1,"288":1,"300":2,"301":1,"308":3,"313":1,"317":2,"319":2,"321":1,"323":1,"325":1,"327":4,"330":1,"331":1,"333":5,"334":1,"335":2,"336":2,"340":1,"341":1,"342":1,"350":2,"351":1,"353":2,"354":3,"360":1,"361":1,"363":1,"364":3,"367":2,"370":1,"373":1,"375":1,"377":1,"378":4,"383":1,"391":3,"392":2,"394":1,"395":1,"396":5,"399":1,"402":1,"409":1,"414":2}}],["launch",{"2":{"303":1}}],["launcher",{"2":{"128":2}}],["languages",{"0":{"203":1,"419":1}}],["language",{"2":{"150":1,"183":1,"203":1,"400":1,"419":1}}],["later",{"2":{"116":1,"235":1,"284":1,"286":1,"288":1}}],["latestblock",{"2":{"155":2}}],["latest",{"2":{"104":1,"120":1,"152":1,"155":5,"209":2,"265":3,"266":1,"269":1,"271":1,"273":1,"275":3,"383":1}}],["lastest",{"2":{"217":1}}],["last",{"2":{"36":1,"44":1,"64":2}}],["len",{"2":{"340":1}}],["length",{"2":{"260":2,"261":2}}],["lemur",{"2":{"300":1}}],["let",{"2":{"139":1}}],["left",{"2":{"78":1,"81":3}}],["leaked",{"2":{"354":1}}],["lead",{"2":{"318":1}}],["leading",{"2":{"69":1,"206":1,"385":1}}],["least",{"2":{"111":1,"393":1}}],["learn",{"2":{"109":1,"133":1,"135":1,"137":1,"139":1,"308":1,"391":1}}],["learning",{"2":{"77":1}}],["leverages",{"2":{"123":1}}],["leveraging",{"2":{"57":1,"101":1,"306":1,"357":1,"380":1}}],["level",{"2":{"6":4,"35":1,"64":2,"156":1}}],["loss",{"2":{"318":1}}],["lost",{"2":{"111":3,"113":1,"393":3,"395":1}}],["long",{"2":{"157":1,"301":1,"364":1}}],["locking",{"2":{"176":1}}],["lockfundingcurrencytodefault",{"0":{"176":1},"2":{"157":2}}],["located",{"2":{"121":1}}],["locate",{"2":{"121":1,"122":1,"147":1}}],["location",{"2":{"81":1}}],["localhost",{"2":{"320":1}}],["localstorage",{"2":{"189":1,"405":1}}],["locally",{"2":{"46":1}}],["local",{"2":{"44":4,"46":1,"53":1,"186":1,"189":1,"193":1,"340":1,"341":1,"402":1,"405":1,"409":1}}],["loading",{"2":{"193":1,"365":1,"409":1}}],["load",{"2":{"121":2}}],["love",{"2":{"98":1}}],["look",{"2":{"49":1,"70":1,"74":1,"103":1,"139":1,"182":1,"207":1,"284":1,"286":1,"292":1,"293":1,"300":2,"382":1,"386":1,"399":1}}],["logs",{"2":{"365":1,"377":3}}],["logic",{"2":{"313":1}}],["logically",{"2":{"252":1}}],["loginpanel",{"2":{"122":5}}],["logins",{"2":{"69":1,"111":1,"206":1,"364":2,"371":2,"385":1,"393":1}}],["login",{"0":{"111":1,"158":1,"369":1,"370":1,"393":1},"1":{"112":1,"113":1,"114":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"394":1,"395":1,"396":1},"2":{"44":3,"52":1,"110":1,"111":2,"114":1,"124":1,"130":1,"352":3,"354":1,"365":5,"368":1,"371":1,"392":1,"393":2,"396":1}}],["logging",{"2":{"169":1,"369":1,"370":1}}],["logged",{"2":{"44":1}}],["logolight",{"2":{"96":2}}],["logodark",{"2":{"96":2}}],["logourl",{"0":{"83":1}}],["logouri",{"2":{"64":1}}],["logo",{"2":{"64":1,"83":1}}],["log",{"2":{"35":3,"41":2,"46":1,"49":1,"64":1,"93":1,"155":1,"157":2,"181":1,"183":2,"191":2,"193":2,"194":1,"195":2,"196":2,"197":2,"198":2,"320":1,"363":1,"364":1,"365":1,"366":1,"370":1,"371":1,"374":1,"375":1,"377":1,"378":1,"398":1,"400":2,"407":2,"409":2,"410":1,"411":2,"412":2,"413":2,"414":2}}],["lt",{"0":{"215":1,"226":1},"2":{"35":2,"41":1,"45":2,"46":1,"49":4,"52":2,"53":4,"54":3,"64":1,"73":8,"74":19,"75":4,"76":2,"78":3,"90":9,"91":2,"97":8,"103":1,"104":4,"128":38,"155":2,"157":1,"182":4,"183":1,"215":1,"217":1,"226":1,"249":3,"250":5,"269":2,"286":5,"303":3,"365":11,"382":1,"383":4,"399":4,"400":1}}],["little",{"2":{"291":1}}],["live",{"2":{"208":2,"218":2,"228":2,"244":2}}],["lives",{"2":{"119":1}}],["limitation",{"2":{"249":2}}],["limited",{"2":{"186":1,"354":1,"402":1}}],["limit",{"2":{"157":1,"172":1}}],["limits",{"2":{"7":2,"353":1}}],["libs",{"2":{"345":1}}],["libraries",{"2":{"204":2,"217":1,"225":3,"227":2,"248":4,"249":1}}],["library",{"0":{"61":1,"249":1,"250":1,"361":1},"2":{"61":1,"68":1,"115":1,"134":1,"136":1,"138":1,"155":1,"203":1,"205":1,"249":1,"250":2,"251":3,"252":1,"255":1,"285":1,"340":1,"341":1,"361":1,"384":1,"419":1}}],["lib",{"2":{"104":1,"383":1}}],["lightweight",{"2":{"251":1}}],["light",{"2":{"78":1,"80":1,"157":1,"168":1}}],["linux",{"2":{"126":2}}],["linking",{"2":{"124":1,"128":3}}],["linked",{"2":{"46":1}}],["link",{"2":{"36":1,"59":1,"64":2,"124":1,"359":1,"378":1}}],["line",{"2":{"2":1,"51":2,"353":1}}],["likewise",{"2":{"198":1,"414":1}}],["like",{"2":{"33":1,"44":1,"49":1,"52":1,"64":1,"67":1,"69":1,"74":1,"103":1,"110":1,"139":1,"150":1,"151":1,"152":1,"156":2,"157":2,"182":1,"183":1,"202":1,"203":2,"206":1,"225":1,"284":1,"286":1,"292":2,"293":1,"300":1,"350":1,"370":1,"374":1,"382":1,"385":1,"392":1,"399":1,"400":1,"418":1,"419":2}}],["listsessions",{"2":{"366":1,"367":1}}],["listing",{"2":{"62":1}}],["list",{"0":{"366":1},"2":{"31":1,"86":1,"87":1,"88":2,"94":1,"97":1,"150":1,"151":1,"152":1,"173":1,"210":1,"220":1,"269":2,"335":1,"366":1}}],["listen",{"0":{"374":1},"2":{"30":1}}],["ll",{"2":{"2":1,"43":1,"47":1,"51":1,"60":1,"61":1,"121":1,"130":1,"134":3,"136":3,"138":3,"143":2,"144":1,"150":1,"182":1,"265":1,"284":5,"286":3,"292":1,"360":1,"361":1,"399":1}}],["nitro",{"2":{"352":1,"364":1}}],["nil",{"2":{"152":3}}],["npx",{"2":{"250":1}}],["npm",{"2":{"43":1,"72":1,"90":1,"103":2,"151":1,"156":1,"209":2,"215":1,"219":2,"226":1,"229":2,"236":2,"382":2}}],["n",{"2":{"125":1,"126":1,"285":1,"340":1}}],["null",{"2":{"249":1,"377":1,"378":1}}],["nuget",{"2":{"120":1}}],["numbers",{"2":{"132":2}}],["number",{"2":{"49":3,"54":3,"64":7,"88":1,"162":1,"164":1,"186":1,"214":1,"224":1,"241":1,"256":1,"264":1,"266":1,"268":1,"280":1,"284":1,"301":1,"353":1,"402":1}}],["navigating",{"2":{"147":1}}],["navigate",{"2":{"46":1,"121":1,"128":1,"296":1,"299":1,"365":2}}],["nametypedescription",{"2":{"319":1,"323":1,"324":1,"327":1}}],["named",{"2":{"292":1}}],["name=",{"2":{"128":14}}],["name",{"2":{"49":1,"50":1,"64":4,"84":1,"96":2,"103":2,"120":1,"128":1,"139":1,"147":1,"157":3,"159":1,"168":1,"182":1,"213":1,"223":1,"233":1,"283":1,"292":2,"293":2,"295":1,"297":1,"303":1,"341":4,"377":1,"378":1,"382":2,"399":1}}],["names",{"2":{"44":1,"139":2,"302":1}}],["nativereceipt",{"2":{"377":1}}],["native",{"0":{"104":1,"383":1},"2":{"35":1,"141":1,"195":1,"196":1,"197":1,"198":1,"351":1,"411":1,"412":1,"413":1,"414":1}}],["normally",{"2":{"250":1}}],["normalizeasbiginteger",{"2":{"134":1,"140":1,"288":2}}],["normalize",{"2":{"132":2,"133":1,"139":2,"140":1,"282":1}}],["nobody",{"2":{"148":1,"352":1}}],["none",{"2":{"193":1,"265":1,"409":1}}],["non",{"2":{"99":1,"114":1,"115":1,"130":1,"135":1,"139":1,"336":3,"350":1,"396":1}}],["nonce=",{"2":{"365":1}}],["nonceat",{"0":{"275":1},"2":{"275":2}}],["nonce",{"2":{"42":4,"164":1,"275":4,"282":1,"284":1,"363":1}}],["noncespace",{"2":{"42":2}}],["nonces",{"2":{"8":1}}],["no",{"0":{"185":1,"401":1},"2":{"42":1,"44":1,"88":1,"115":1,"122":1,"127":1,"139":1,"144":1,"156":1,"265":1,"328":1,"329":1,"353":1}}],["nodeurl",{"2":{"54":4}}],["nodes",{"2":{"46":1,"54":2,"155":1,"264":1}}],["nodejs",{"0":{"35":1,"36":1,"200":1,"416":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1},"2":{"41":1,"200":1,"416":1}}],["node",{"0":{"151":1,"154":1},"1":{"155":1},"2":{"30":1,"44":1,"51":1,"64":1,"150":1,"151":2,"154":1,"263":1}}],["now",{"2":{"6":1,"30":1,"36":1,"42":1,"49":1,"52":1,"149":1,"294":1,"299":1,"303":1}}],["notable",{"2":{"196":1,"197":1,"412":1,"413":1}}],["nothing",{"2":{"179":1}}],["notice",{"2":{"144":1,"284":1,"342":1}}],["note",{"2":{"61":1,"118":1,"119":1,"120":3,"122":1,"124":1,"128":2,"132":1,"133":1,"137":1,"147":1,"151":1,"157":1,"182":1,"193":1,"194":1,"235":1,"262":1,"264":1,"265":1,"266":1,"269":1,"271":1,"273":1,"275":1,"284":1,"346":1,"361":1,"363":1,"399":1,"409":1,"410":1}}],["noted",{"2":{"51":1,"53":1}}],["notes",{"0":{"33":1}}],["not",{"2":{"2":1,"33":1,"35":4,"36":1,"41":1,"42":1,"43":1,"53":1,"64":1,"121":1,"122":1,"124":1,"132":2,"133":2,"134":1,"136":1,"138":1,"139":1,"154":1,"175":1,"183":1,"191":1,"251":1,"262":1,"264":1,"283":1,"288":1,"313":1,"327":2,"333":1,"336":1,"353":2,"369":1,"373":1,"378":1,"400":1,"407":1}}],["nftbalances",{"2":{"64":2}}],["nfts",{"2":{"30":1,"32":1,"135":1}}],["nft",{"0":{"28":1,"196":1,"412":1},"2":{"5":1,"6":2,"30":3,"64":1,"149":1,"196":2,"299":1,"353":1,"412":2}}],["never",{"2":{"378":1}}],["nested",{"0":{"343":1}}],["nethereum",{"2":{"115":1,"251":1}}],["networkid",{"0":{"274":1},"2":{"274":2}}],["network",{"0":{"232":1},"2":{"8":1,"35":2,"41":2,"46":1,"49":3,"53":1,"61":1,"114":2,"132":1,"139":2,"140":1,"155":2,"194":1,"213":1,"214":2,"223":1,"224":2,"230":1,"232":1,"276":1,"282":1,"296":1,"361":1,"363":1,"364":1,"365":1,"366":1,"367":1,"377":2,"378":5,"396":2,"410":1}}],["networks",{"0":{"31":1},"2":{"8":1,"30":2,"31":1,"49":1,"54":1,"150":2,"152":1}}],["necessary",{"2":{"72":1}}],["nextjs",{"0":{"216":1,"225":1,"247":1,"249":1},"1":{"248":1,"249":1,"250":1},"2":{"216":2,"217":2,"225":2,"227":2,"248":3,"249":1,"250":6}}],["next",{"0":{"70":1,"207":1,"248":1,"249":1,"250":1,"386":1},"2":{"35":1,"44":1,"47":1,"97":1,"119":1,"121":1,"123":1,"248":2,"250":2,"265":1,"293":1}}],["needs",{"2":{"148":1,"179":1,"328":1,"336":1}}],["needing",{"2":{"42":1}}],["needed",{"2":{"35":1,"96":1,"111":1,"120":1,"130":1,"186":1,"393":1,"402":1}}],["need",{"2":{"4":1,"30":1,"35":1,"43":1,"47":1,"60":1,"61":1,"97":1,"99":1,"110":1,"119":1,"121":1,"134":1,"136":1,"138":1,"139":1,"143":1,"147":1,"179":1,"204":1,"251":1,"264":1,"283":1,"288":1,"292":1,"329":1,"331":1,"352":1,"360":1,"361":1,"362":2,"364":1,"370":1,"392":1}}],["newimagehash",{"2":{"328":1,"334":1}}],["newindexer",{"2":{"152":1}}],["newestblock",{"2":{"273":2}}],["newer",{"2":{"119":1,"151":1}}],["newlydeployedcontractaddress",{"2":{"143":1,"287":1}}],["newly",{"2":{"121":1,"147":1,"284":1}}],["newtonsoft",{"2":{"120":2}}],["new",{"0":{"38":1},"2":{"2":1,"35":6,"41":2,"46":3,"49":12,"54":4,"61":2,"64":1,"73":1,"74":1,"114":1,"115":1,"125":1,"126":1,"128":2,"130":1,"132":2,"133":2,"134":4,"135":2,"136":4,"137":4,"138":4,"139":7,"140":12,"141":1,"147":1,"151":1,"155":1,"156":1,"183":4,"188":1,"189":2,"193":1,"195":2,"196":2,"197":2,"198":3,"210":1,"238":1,"250":1,"254":2,"255":1,"263":1,"273":1,"283":1,"284":4,"286":2,"288":2,"295":1,"296":1,"319":1,"320":1,"327":1,"361":2,"363":1,"364":1,"365":1,"366":1,"367":1,"377":1,"378":1,"396":1,"400":4,"404":1,"405":2,"409":1,"411":2,"412":2,"413":2,"414":3}}],["myetherwallet",{"2":{"312":1}}],["mypinata",{"2":{"300":1}}],["mypage",{"2":{"73":3,"74":3}}],["myapp",{"2":{"250":1}}],["mytokenaddress",{"2":{"134":2,"136":2,"138":2}}],["mytoken",{"2":{"134":3,"136":3,"138":3}}],["my",{"0":{"248":1},"2":{"96":2,"97":3,"103":1,"159":1,"230":1,"382":1}}],["mycustomlogolight",{"2":{"96":1}}],["mycustomlogodark",{"2":{"96":1}}],["mycustomconnectoroptions",{"2":{"96":1}}],["mycustomconnector",{"2":{"96":2,"97":1}}],["mycomponent",{"2":{"76":1,"91":1}}],["myreactcomponent",{"2":{"75":1}}],["much",{"2":{"119":1}}],["mutable",{"2":{"119":1}}],["mumbai",{"2":{"61":1,"303":1,"361":1,"363":1,"364":1,"365":1,"366":1,"367":1,"377":1,"378":1}}],["must",{"2":{"46":2,"86":1,"87":1,"121":1,"124":1,"131":1,"144":1,"238":1,"248":1,"249":1,"250":1,"321":1,"342":1,"354":1,"377":1}}],["multisig",{"2":{"351":1}}],["multisigs",{"2":{"351":1}}],["multisignature",{"2":{"110":1,"392":1}}],["multi",{"2":{"30":1,"49":1,"50":1,"99":1,"137":1}}],["multiple",{"2":{"2":1,"35":1,"42":1,"99":1,"110":2,"137":2,"140":1,"147":1,"154":1,"156":1,"179":1,"195":2,"196":2,"197":2,"198":1,"314":1,"392":2,"411":2,"412":2,"413":2,"414":1}}],["mkdir",{"2":{"44":1}}],["mitm",{"2":{"354":1}}],["mimics",{"2":{"325":1}}],["might",{"2":{"303":1,"363":1,"370":1}}],["migrated",{"2":{"35":1}}],["migration",{"0":{"337":1},"2":{"35":4}}],["mistakes",{"2":{"303":1}}],["missed",{"2":{"149":1}}],["missing",{"2":{"51":1}}],["mix",{"2":{"198":1,"414":1}}],["middle",{"2":{"81":2}}],["middleware",{"2":{"49":1}}],["minimum",{"2":{"292":1}}],["minor",{"2":{"115":2}}],["min",{"2":{"104":2,"383":2}}],["minutes",{"2":{"43":1,"372":1}}],["minted",{"2":{"64":1,"302":2}}],["minter",{"0":{"16":1,"22":1,"27":1},"2":{"43":1,"46":4}}],["mints",{"2":{"43":1,"63":1,"299":1}}],["mint",{"0":{"17":1,"23":1,"26":1,"43":1,"54":1},"1":{"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1},"2":{"43":1,"46":1,"54":4,"133":1,"134":2,"135":1,"137":1,"138":2,"139":3,"288":1,"299":1,"300":1,"301":3,"303":1}}],["minting",{"0":{"63":1,"301":1},"2":{"13":1,"62":2,"93":1,"303":1}}],["mined",{"2":{"8":1,"33":1}}],["move",{"0":{"298":1},"2":{"265":1}}],["mounted",{"2":{"249":2}}],["money",{"2":{"154":1}}],["monobehaviour",{"2":{"122":1,"147":1}}],["mono",{"2":{"116":2}}],["mocks",{"2":{"144":1}}],["mocked",{"2":{"49":3,"53":1,"54":1}}],["moonpay",{"2":{"109":1,"157":2,"173":1,"308":1,"391":1}}],["mobile",{"0":{"107":1,"389":1},"2":{"107":2,"156":2,"157":1,"204":1,"389":2}}],["most",{"2":{"99":1,"120":1,"132":2,"157":1,"256":1,"264":1,"268":1,"310":1}}],["more",{"0":{"148":1},"2":{"35":1,"41":1,"42":1,"59":1,"64":1,"69":1,"96":1,"99":1,"103":1,"109":1,"110":2,"118":1,"120":1,"122":1,"128":2,"132":1,"148":1,"157":1,"179":1,"182":1,"206":1,"213":1,"216":1,"223":1,"225":1,"250":1,"308":1,"314":1,"359":1,"385":1,"391":1,"392":2,"399":1}}],["modifier",{"2":{"319":1,"327":1}}],["modification",{"2":{"194":1,"410":1}}],["modify",{"2":{"120":1,"288":1,"299":1,"300":1}}],["modals",{"2":{"81":1}}],["modal",{"0":{"75":1,"76":1,"82":1,"91":1,"92":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1,"93":1,"94":1},"2":{"71":1,"75":2,"80":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"91":1,"92":1}}],["moduleauth",{"2":{"321":1}}],["module",{"2":{"90":1,"229":1,"316":1,"317":1,"321":2,"325":1,"329":1,"352":1}}],["modules",{"0":{"316":1},"1":{"317":1,"318":1,"319":1,"320":1,"321":1,"322":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,"336":1},"2":{"44":1,"51":1,"316":3,"317":1,"321":1,"329":1}}],["modular",{"2":{"30":3,"72":1}}],["mode",{"2":{"120":1,"122":1,"147":1}}],["modern",{"2":{"106":1,"156":1,"388":1}}],["moderately",{"2":{"110":1,"392":1}}],["moderate",{"2":{"7":1}}],["model",{"0":{"354":1},"2":{"8":1,"354":1}}],["march",{"2":{"349":1}}],["marked",{"2":{"333":1}}],["market",{"2":{"62":1}}],["marketplace",{"0":{"4":1,"19":1,"25":1,"62":1},"1":{"63":1,"64":1,"65":1},"2":{"4":4,"62":2,"93":1,"305":1,"307":2}}],["mail",{"2":{"341":1}}],["mainmoduleinterface",{"2":{"328":2,"334":2}}],["mainmoduleupgradable",{"2":{"325":1,"328":3,"333":1,"334":1,"335":1,"336":1,"345":1}}],["mainmoduleupgradeable",{"0":{"325":1,"337":1},"1":{"326":1,"327":1}}],["mainmodule",{"2":{"316":1,"321":2,"325":1,"328":3,"345":1}}],["maintaining",{"2":{"156":1,"186":1,"402":1}}],["main",{"2":{"88":3,"128":3,"252":1,"365":3}}],["mainnet",{"2":{"35":2,"41":2,"46":1,"73":2,"74":2,"150":2,"151":1,"157":1,"183":1,"214":1,"224":1,"400":1}}],["mapped",{"2":{"285":1}}],["mappings",{"0":{"285":1}}],["max",{"2":{"278":1}}],["master",{"2":{"250":1}}],["match",{"2":{"198":1,"414":1}}],["material",{"2":{"140":1}}],["matic",{"2":{"35":1,"132":3,"157":1}}],["magicvalue",{"2":{"342":1}}],["magic",{"2":{"140":1,"342":3}}],["macbook",{"2":{"363":1,"365":1,"366":2,"367":1}}],["machine",{"2":{"118":1,"313":1}}],["macos",{"0":{"126":1},"2":{"116":1,"118":1}}],["mac",{"2":{"116":1,"126":3}}],["made",{"2":{"115":1,"119":1,"143":1,"251":1}}],["major",{"2":{"115":2}}],["making",{"2":{"114":1,"140":1,"144":1,"251":1,"396":1}}],["make",{"2":{"32":1,"35":2,"44":1,"49":4,"51":1,"96":1,"120":1,"122":1,"128":1,"131":1,"133":1,"146":1,"150":1,"151":1,"152":1,"179":1,"264":1,"283":1,"303":1}}],["makes",{"2":{"30":2,"46":1,"352":1}}],["malicious",{"2":{"110":1,"113":1,"114":1,"392":1,"395":1,"396":1}}],["many",{"2":{"133":1,"182":1,"203":1,"204":1,"399":1,"419":1}}],["manifest",{"2":{"128":5}}],["manual",{"0":{"120":1},"2":{"128":1}}],["manually",{"0":{"26":1},"2":{"121":1,"372":1}}],["managing",{"0":{"6":1}}],["manager",{"0":{"118":1,"147":1},"1":{"119":1},"2":{"118":4,"119":1,"120":5,"147":1}}],["management",{"0":{"110":1,"362":1,"392":1},"1":{"111":1,"112":1,"113":1,"114":1,"363":1,"364":1,"365":1,"366":1,"367":1,"393":1,"394":1,"395":1,"396":1},"2":{"13":1,"350":1,"352":1,"362":1}}],["managed",{"2":{"5":1,"6":1,"30":1,"149":1,"375":1}}],["manage",{"0":{"290":1},"1":{"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1},"2":{"5":1,"8":1,"69":1,"206":1,"291":1,"385":1}}],["may",{"2":{"8":1,"30":1,"35":1,"103":1,"119":1,"139":1,"147":2,"150":1,"157":1,"204":2,"236":1,"248":1,"250":1,"251":1,"255":1,"260":1,"261":1,"288":2,"309":1,"318":1,"327":1,"348":1,"374":1,"382":1}}],["me",{"2":{"220":1}}],["measures",{"2":{"156":1}}],["meant",{"2":{"99":1,"147":1,"353":1}}],["means",{"2":{"33":1,"53":1,"107":1,"111":1,"156":1,"319":1,"327":1,"328":1,"353":1,"354":1,"362":1,"389":1,"393":1}}],["menu",{"2":{"125":1,"126":1,"179":1}}],["mentioned",{"2":{"49":1}}],["message",{"0":{"180":1,"190":1,"192":1,"397":1,"406":1,"408":1},"1":{"181":1,"182":1,"183":1,"398":1,"399":1,"400":1},"2":{"119":1,"142":2,"182":4,"186":1,"190":1,"192":3,"193":1,"262":4,"322":1,"340":5,"341":1,"373":1,"378":2,"399":4,"402":1,"406":1,"408":3,"409":1}}],["messages",{"0":{"142":1},"2":{"35":1,"183":1,"185":1,"186":1,"339":1,"340":1,"400":1,"401":1,"402":1}}],["merkle",{"2":{"64":1}}],["media",{"2":{"47":1}}],["metatxhash",{"2":{"377":1}}],["metamask",{"2":{"69":1,"87":1,"96":1,"97":1,"156":2,"177":1,"204":1,"206":1,"208":1,"218":1,"228":1,"312":1,"385":1}}],["meta",{"2":{"8":3,"103":1,"128":2,"203":1,"314":1,"353":1,"382":1,"419":1}}],["metadataoptions",{"2":{"33":3,"152":3}}],["metadatafield",{"2":{"6":1}}],["metadata",{"0":{"5":1,"6":1,"33":1,"46":1,"47":1,"290":1,"292":1,"294":1,"300":1,"303":1},"1":{"6":1,"7":1,"47":1,"48":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1},"2":{"5":4,"6":18,"7":1,"13":2,"30":2,"32":1,"33":3,"43":1,"47":1,"64":3,"291":1,"292":1,"293":1,"294":1,"299":1,"300":1,"303":4}}],["methods",{"0":{"256":1,"264":1},"1":{"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1},"2":{"33":1,"49":1,"54":1,"122":1,"134":1,"136":1,"138":1,"251":1,"256":1,"264":2,"289":2,"299":1,"329":1,"331":1,"376":1}}],["method",{"2":{"6":1,"46":1,"49":1,"122":1,"131":1,"133":1,"134":1,"136":1,"138":1,"139":4,"142":1,"143":1,"144":1,"157":1,"183":1,"248":1,"249":1,"250":1,"262":1,"283":1,"284":2,"286":1,"319":2,"327":2,"328":1,"334":1,"335":2,"336":1,"342":1,"368":1,"369":1,"371":1,"372":4,"400":1}}],["members",{"2":{"2":1}}],["otp",{"2":{"353":1,"364":4}}],["otherrainbowkitwallets",{"2":{"220":1}}],["otherconnectors",{"2":{"210":1}}],["others",{"2":{"98":1}}],["otherwise",{"2":{"46":1,"265":1,"340":1,"341":1,"342":1,"372":2}}],["other",{"0":{"203":1,"419":1},"2":{"8":1,"72":1,"96":1,"97":1,"122":1,"125":1,"126":1,"176":1,"183":1,"203":1,"204":1,"210":1,"212":1,"220":1,"222":1,"238":1,"239":1,"301":1,"316":1,"319":1,"327":1,"353":2,"400":1,"419":1}}],["oauth",{"2":{"353":1,"365":4}}],["omit",{"2":{"262":1}}],["omitted",{"2":{"33":2,"161":1}}],["older",{"0":{"215":1,"226":1},"2":{"215":1,"216":1,"217":2,"225":1,"226":1,"227":1}}],["os",{"2":{"179":2}}],["obvious",{"2":{"139":1}}],["obtained",{"2":{"364":1,"365":1}}],["obtain",{"2":{"122":1,"131":1,"142":1,"143":1,"364":2,"365":2}}],["objects",{"2":{"137":1}}],["objectdark",{"2":{"80":1}}],["object",{"0":{"51":1},"2":{"36":1,"51":1,"54":1,"64":2,"80":2,"82":1,"91":1,"92":1,"118":2,"120":1,"131":1,"134":1,"136":1,"138":1,"139":1,"142":1,"143":1,"147":3,"158":1,"182":2,"262":1,"263":1,"283":2,"284":3,"377":2,"378":1,"399":2}}],["oidc",{"2":{"122":1,"124":1}}],["over",{"2":{"99":1,"113":1,"114":1,"154":1,"293":1,"302":1,"395":1,"396":1}}],["overview",{"0":{"89":1,"351":1},"1":{"352":1,"353":1},"2":{"149":1}}],["override",{"2":{"80":1,"318":1,"322":1,"326":1,"342":1}}],["overwritten",{"2":{"80":1,"120":1}}],["ownable",{"0":{"289":1},"2":{"289":4}}],["owned",{"0":{"310":1},"1":{"311":1,"312":1},"2":{"88":1,"99":1,"113":1,"309":1,"310":1,"395":1}}],["ownership",{"2":{"35":1,"53":1}}],["owner",{"2":{"35":1,"99":1,"350":1}}],["own",{"2":{"69":1,"96":1,"110":1,"115":1,"144":1,"146":1,"148":1,"154":1,"206":1,"251":1,"263":1,"288":1,"303":1,"385":1,"392":1}}],["ogimage",{"2":{"64":1}}],["o",{"2":{"35":2}}],["operated",{"2":{"352":1}}],["operate",{"2":{"351":1}}],["operation",{"2":{"318":1,"330":1,"333":1,"363":1}}],["operations",{"2":{"214":1,"224":1}}],["operational",{"2":{"61":1,"361":1}}],["openwithoptions",{"2":{"157":2}}],["openwalletintent",{"2":{"157":1}}],["openwallet",{"2":{"157":3}}],["opened",{"2":{"144":1,"363":1,"364":1}}],["openidauthentication",{"2":{"116":1}}],["opening",{"0":{"91":1},"2":{"119":1,"140":1,"161":1}}],["openning",{"2":{"35":2}}],["open",{"2":{"35":2,"41":1,"46":2,"67":1,"76":2,"91":1,"118":1,"122":2,"125":1,"126":1,"144":1,"157":2,"166":1,"174":1,"202":1,"204":1,"295":1,"364":2,"365":1,"418":1}}],["opensea",{"2":{"33":1}}],["optionally",{"2":{"104":1,"132":1,"134":1,"136":1,"138":1,"157":1,"383":1}}],["optional",{"0":{"213":1,"214":1,"223":1,"224":1,"232":1,"233":1,"242":1},"2":{"35":2,"41":1,"74":1,"133":1,"164":1,"262":1}}],["options",{"0":{"78":1,"79":1,"158":1,"213":1,"214":1,"240":1},"1":{"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"241":1,"242":1},"2":{"33":1,"35":2,"41":1,"49":1,"70":1,"78":2,"86":2,"87":2,"96":2,"109":2,"110":1,"155":1,"157":2,"172":1,"207":1,"210":1,"213":1,"223":2,"238":2,"308":2,"386":1,"391":2,"392":1}}],["option",{"2":{"33":1,"35":2,"53":1,"156":2,"158":1,"171":1,"176":1,"179":1,"250":1,"288":1}}],["optimal",{"2":{"8":1}}],["outlined",{"2":{"54":1}}],["out",{"2":{"49":1,"54":1,"56":1,"69":1,"70":1,"93":1,"101":1,"119":2,"130":1,"131":1,"142":1,"143":1,"147":1,"148":1,"157":1,"183":1,"204":1,"206":1,"207":1,"305":1,"340":1,"341":1,"356":1,"380":1,"385":1,"386":1,"400":1}}],["outside",{"2":{"13":1,"134":1,"136":1,"138":1,"157":1}}],["our",{"2":{"5":1,"6":1,"30":1,"33":1,"35":1,"56":2,"57":1,"67":1,"68":1,"69":1,"70":1,"101":1,"115":1,"116":1,"119":3,"120":1,"122":2,"124":1,"133":2,"134":1,"135":2,"136":1,"137":2,"138":1,"140":1,"141":1,"147":2,"148":1,"149":1,"154":1,"155":1,"202":1,"204":3,"205":1,"206":1,"207":1,"250":1,"251":1,"263":1,"264":1,"283":1,"284":2,"286":2,"288":1,"305":1,"306":1,"356":2,"357":1,"380":1,"384":1,"385":1,"386":1,"418":1}}],["onvalidationrequired",{"0":{"373":1},"2":{"373":2,"374":2,"375":3}}],["onboard",{"0":{"228":1},"1":{"229":1,"230":1,"231":1,"232":1,"233":1,"234":1},"2":{"156":1,"204":1,"228":3,"229":2,"230":3,"234":1}}],["onboarding",{"2":{"68":1,"69":1,"121":1,"156":1,"205":1,"206":1,"384":1,"385":1}}],["ondeploycontractfailedhandler",{"2":{"143":2}}],["ondeploycontractfailed",{"2":{"143":2}}],["ondeploycontractcompletehandler",{"2":{"143":2}}],["ondeploycontractcomplete",{"2":{"143":2}}],["onsuccess=",{"2":{"365":1}}],["onsessionstatechanged",{"2":{"365":2}}],["onsendtransactionfailedhandler",{"2":{"131":2}}],["onsendtransactionfailed",{"2":{"131":2,"143":1}}],["onsendtransactioncompletehandler",{"2":{"131":2}}],["onsendtransactioncomplete",{"2":{"131":2,"143":1}}],["onsignmessagecompletehandler",{"2":{"142":2}}],["onsignmessagecomplete",{"2":{"142":2}}],["onwaaswalletcreatedhander",{"2":{"131":1,"142":1,"143":1}}],["onwaaswalletcreatedhandler",{"2":{"130":3}}],["onwaaswalletcreated",{"2":{"130":2}}],["onmeta",{"2":{"109":1,"308":1,"391":1}}],["onmigration",{"2":{"35":1}}],["onlyself",{"2":{"318":1,"319":1,"326":1,"327":1}}],["only",{"0":{"250":1},"2":{"46":2,"60":1,"72":1,"88":1,"103":1,"109":1,"110":2,"114":1,"116":2,"120":2,"130":1,"140":1,"170":1,"176":1,"193":1,"194":2,"196":1,"197":1,"248":1,"249":1,"260":1,"261":1,"283":1,"288":1,"308":1,"317":1,"319":1,"321":1,"327":1,"350":1,"353":3,"360":1,"366":1,"378":1,"382":1,"391":1,"392":2,"396":1,"409":1,"410":2,"412":1,"413":1}}],["onclick=",{"2":{"75":1,"76":1,"91":1}}],["onclick",{"2":{"75":2,"76":2,"91":2,"157":1}}],["once",{"2":{"35":1,"44":1,"54":1,"60":1,"64":1,"75":1,"111":1,"123":1,"124":1,"130":1,"157":1,"179":1,"249":1,"255":1,"260":1,"261":1,"298":1,"334":1,"360":1,"364":1,"372":1,"393":1}}],["onchainreader",{"2":{"183":1,"400":1}}],["onchain",{"2":{"13":1}}],["onramp",{"0":{"29":1}}],["on",{"0":{"27":1,"28":1,"29":1,"33":1,"109":1,"293":1,"296":1,"308":1,"344":1,"391":1},"2":{"8":1,"30":2,"33":2,"35":1,"42":1,"43":1,"44":1,"52":1,"53":1,"59":1,"62":1,"64":2,"68":1,"81":1,"96":2,"97":1,"99":1,"103":3,"106":1,"107":2,"109":5,"110":2,"116":1,"118":5,"119":2,"120":1,"121":1,"122":1,"123":2,"124":1,"132":1,"133":1,"139":5,"144":1,"146":1,"147":1,"149":1,"150":2,"156":5,"157":3,"159":1,"176":1,"177":1,"183":4,"186":1,"191":1,"193":1,"195":1,"196":1,"197":1,"200":1,"203":1,"204":1,"205":1,"215":1,"216":3,"225":3,"226":1,"248":4,"249":2,"250":1,"251":2,"265":3,"288":1,"289":1,"292":1,"294":1,"295":2,"296":2,"297":1,"298":1,"299":2,"300":1,"308":5,"310":1,"316":1,"320":1,"321":1,"329":1,"331":1,"333":1,"342":1,"350":1,"352":1,"354":1,"359":1,"368":1,"378":2,"382":2,"384":1,"388":1,"389":2,"391":5,"392":2,"400":4,"402":1,"407":1,"409":1,"411":1,"412":1,"413":1,"416":1,"419":1}}],["one",{"0":{"369":1},"2":{"2":1,"6":1,"33":1,"35":3,"41":1,"44":1,"46":3,"64":1,"99":1,"110":1,"111":1,"128":1,"132":1,"140":1,"143":1,"168":1,"179":1,"195":1,"196":1,"197":1,"204":1,"249":1,"250":1,"260":1,"261":1,"299":1,"317":1,"322":1,"335":1,"351":1,"364":1,"369":1,"370":1,"392":1,"393":1,"411":1,"412":1,"413":1}}],["originaddress",{"2":{"64":1}}],["originating",{"2":{"64":2}}],["originchainid",{"2":{"64":1}}],["origin",{"0":{"161":1},"2":{"49":1,"161":1}}],["orgs",{"2":{"34":1,"43":1}}],["organizations",{"2":{"30":1}}],["or",{"0":{"153":1,"177":1},"2":{"6":4,"8":2,"30":1,"32":1,"33":1,"35":4,"41":1,"43":2,"46":4,"47":1,"49":3,"50":1,"53":1,"64":5,"70":1,"72":2,"80":1,"90":2,"93":1,"96":1,"97":1,"103":2,"106":1,"107":1,"110":1,"111":3,"114":3,"116":1,"118":3,"120":1,"122":1,"124":1,"128":2,"130":1,"131":1,"132":2,"139":3,"140":1,"142":1,"143":3,"148":1,"150":2,"151":3,"155":1,"156":1,"157":1,"169":1,"176":1,"183":2,"185":1,"186":1,"191":1,"193":1,"198":1,"200":1,"203":2,"204":3,"207":1,"209":1,"215":1,"216":1,"219":1,"225":3,"226":1,"229":1,"260":2,"261":2,"266":1,"269":1,"271":1,"273":1,"275":1,"282":1,"283":1,"284":2,"285":1,"286":1,"288":1,"301":1,"309":1,"317":1,"321":1,"336":1,"350":1,"352":1,"353":1,"354":2,"370":1,"373":2,"375":2,"376":1,"377":1,"378":1,"382":2,"386":1,"388":1,"389":1,"392":1,"393":3,"396":3,"400":2,"401":1,"402":1,"407":1,"409":1,"414":1,"416":1,"419":2}}],["orderbookcontractaddress",{"2":{"307":1}}],["orderbook",{"2":{"306":1}}],["ordersummaryitems",{"0":{"94":1},"2":{"92":1,"94":2}}],["orders",{"2":{"62":1}}],["order",{"0":{"94":1},"2":{"2":1,"6":1,"35":1,"42":1,"43":1,"44":1,"46":1,"48":1,"49":1,"62":1,"86":1,"87":1,"94":1,"119":1,"124":1,"139":1,"281":1,"282":1,"284":1,"351":1,"363":1}}],["often",{"2":{"137":1}}],["offer",{"2":{"156":1,"204":1,"352":1}}],["offered",{"2":{"141":1}}],["offers",{"2":{"4":1,"5":1,"8":1,"150":1,"350":1}}],["official",{"2":{"86":1,"87":1,"95":1,"96":1,"249":1}}],["of",{"0":{"13":1,"198":1,"215":1,"226":1,"249":1,"414":1},"2":{"2":3,"6":3,"8":7,"30":3,"31":1,"32":2,"33":3,"35":3,"41":1,"42":2,"43":1,"44":1,"46":2,"49":2,"53":1,"56":1,"61":1,"62":6,"64":25,"66":2,"67":2,"68":2,"69":2,"81":1,"83":1,"84":1,"86":1,"87":1,"88":1,"94":1,"96":2,"97":2,"98":1,"99":1,"103":1,"110":3,"111":2,"112":1,"113":1,"114":2,"119":4,"120":1,"121":1,"131":2,"132":4,"134":3,"135":1,"136":3,"137":1,"138":3,"139":4,"140":4,"141":3,"143":1,"144":2,"145":1,"147":1,"148":1,"150":3,"151":2,"152":2,"153":1,"154":1,"156":7,"157":1,"159":1,"161":1,"168":2,"169":1,"173":1,"174":1,"177":1,"179":1,"182":1,"186":1,"195":1,"196":1,"197":1,"201":2,"202":2,"204":3,"205":2,"206":2,"209":2,"210":1,"213":1,"215":3,"216":1,"217":3,"220":1,"223":2,"225":1,"226":3,"233":1,"234":2,"235":1,"242":1,"248":1,"249":3,"250":5,"252":1,"253":2,"255":1,"256":2,"260":2,"261":2,"262":1,"263":1,"264":3,"265":2,"272":1,"280":1,"283":1,"284":2,"286":1,"288":5,"293":1,"295":2,"296":1,"299":3,"301":1,"310":2,"313":2,"316":3,"318":3,"319":2,"320":1,"321":5,"322":1,"323":1,"325":1,"327":5,"328":2,"332":1,"333":3,"335":1,"336":1,"339":1,"340":1,"341":1,"346":1,"350":3,"351":4,"353":4,"354":3,"356":1,"361":1,"362":1,"363":1,"366":1,"367":1,"370":1,"371":1,"377":2,"382":1,"384":2,"385":2,"392":3,"393":2,"394":1,"395":1,"396":2,"399":1,"402":1,"411":1,"412":1,"413":1,"417":2,"418":2}}],["ipfs",{"2":{"291":1,"292":1,"293":3,"300":1}}],["ignored",{"2":{"157":1,"170":1,"171":1,"172":1}}],["iwallet",{"2":{"144":1,"253":2,"254":2,"255":2,"256":1}}],["iindexer",{"2":{"141":2}}],["icon",{"2":{"118":1,"120":1}}],["ios",{"0":{"125":1},"2":{"116":1,"118":1,"125":2}}],["io",{"2":{"104":1,"183":1,"383":1,"400":1}}],["identifier",{"2":{"293":1,"378":1}}],["identity",{"2":{"182":1,"183":1,"353":1,"354":1,"369":1,"370":1,"399":1,"400":1}}],["ideas",{"2":{"148":2}}],["ideal",{"2":{"120":1}}],["idea",{"2":{"8":1}}],["ids",{"2":{"137":1}}],["idtoken",{"2":{"122":1,"123":1,"124":1,"130":1,"363":2,"364":6,"365":2,"366":1,"367":1,"377":1,"378":1}}],["id",{"2":{"35":1,"41":1,"64":3,"73":2,"74":2,"86":1,"87":1,"96":2,"97":1,"197":2,"198":1,"213":1,"223":1,"241":1,"262":3,"270":1,"274":1,"292":1,"299":1,"300":2,"301":1,"303":1,"353":1,"365":1,"366":2,"367":2,"377":1,"413":2,"414":1}}],["immediately",{"2":{"42":1}}],["imperative",{"2":{"333":1}}],["improperly",{"2":{"251":1}}],["improved",{"2":{"110":1,"392":1}}],["implicit",{"2":{"124":1}}],["implementing",{"2":{"289":1}}],["implement",{"0":{"51":1},"2":{"54":1,"122":1,"150":1,"311":1,"313":2,"321":1,"362":1}}],["implementationaddressaddress",{"2":{"319":1}}],["implementations",{"2":{"253":1}}],["implementation",{"0":{"317":1,"320":1},"1":{"318":1,"319":1,"320":1},"2":{"43":1,"54":1,"141":1,"150":1,"316":1,"318":4,"319":1,"320":4,"328":1}}],["implemented",{"2":{"43":1,"134":1,"136":1,"138":1,"264":1,"309":1,"313":1,"321":1}}],["implements",{"2":{"41":1}}],["important",{"0":{"252":1},"2":{"121":1,"122":1,"145":1,"256":1,"285":1}}],["imported",{"2":{"121":2,"147":1,"210":1,"220":1,"250":1}}],["importing",{"2":{"119":1}}],["import",{"2":{"35":2,"41":1,"46":2,"49":2,"54":2,"61":1,"64":1,"73":6,"74":8,"75":2,"76":1,"90":1,"91":1,"97":1,"118":4,"119":2,"120":3,"151":1,"152":1,"155":2,"157":2,"182":1,"183":5,"188":2,"210":1,"220":2,"230":1,"238":1,"239":2,"249":2,"250":2,"320":1,"340":1,"341":2,"361":1,"363":1,"364":1,"365":8,"366":1,"367":1,"377":1,"378":1,"399":1,"400":5,"404":2}}],["imagehashbytes32hash",{"2":{"323":1,"327":1}}],["imagehash",{"2":{"322":3,"324":1,"326":2,"327":3,"333":3,"336":4}}],["images",{"0":{"292":1},"2":{"13":1,"292":1,"293":1,"302":1}}],["image",{"2":{"6":7,"64":3,"157":2,"169":3,"292":1,"293":1}}],["iterate",{"2":{"340":2,"341":2,"342":1}}],["item",{"0":{"290":1},"1":{"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1},"2":{"292":1,"297":1}}],["items",{"2":{"64":1,"291":1}}],["itself",{"2":{"114":1,"196":1,"197":1,"319":1,"320":1,"327":1,"331":2,"364":1,"396":1,"412":1,"413":1}}],["its",{"2":{"97":1,"137":1,"157":1,"182":1,"250":1,"399":1}}],["it",{"0":{"145":1,"155":1},"2":{"30":4,"33":2,"35":3,"46":2,"49":2,"51":1,"52":1,"53":3,"61":1,"67":1,"97":1,"106":1,"107":1,"119":3,"120":3,"121":1,"122":3,"128":3,"130":1,"133":1,"139":5,"140":1,"144":1,"146":2,"147":2,"149":1,"156":1,"157":1,"182":1,"185":1,"189":1,"202":1,"204":1,"208":1,"214":1,"216":1,"218":1,"224":1,"225":1,"228":1,"244":1,"250":1,"252":1,"255":1,"258":1,"259":1,"265":1,"282":1,"283":3,"284":1,"285":1,"286":2,"288":1,"293":2,"298":1,"299":1,"300":3,"301":3,"303":1,"313":1,"316":3,"317":1,"319":1,"327":2,"330":1,"333":3,"334":1,"335":1,"352":2,"353":5,"354":3,"361":1,"363":1,"372":2,"373":2,"377":1,"378":2,"388":1,"389":1,"399":1,"401":1,"405":1,"418":1}}],["iethclient",{"2":{"263":2,"264":1}}],["ie",{"2":{"6":1,"8":1,"165":1}}],["i",{"0":{"249":1,"250":1},"2":{"6":1,"41":1,"64":2,"99":1,"128":1}}],["isthis",{"2":{"366":2}}],["issenttransactionresponse",{"2":{"377":3,"378":2}}],["issessionvalid",{"2":{"371":2}}],["issignedin",{"2":{"365":1}}],["issued",{"2":{"378":1}}],["issuer",{"2":{"366":2}}],["issue",{"2":{"248":1}}],["islisting",{"2":{"307":1}}],["ismounted",{"2":{"249":2}}],["isn",{"2":{"120":1,"147":1}}],["isconnected",{"2":{"75":2}}],["isvalidsignature",{"2":{"342":3}}],["isvalidbooltrue",{"2":{"324":1}}],["isvalidimage",{"0":{"322":1},"1":{"323":1,"324":1},"2":{"322":1}}],["isvalidmessagesignature",{"2":{"191":1,"407":1}}],["isvalidethauthproof",{"2":{"49":1}}],["isvalid",{"2":{"49":2,"191":2,"322":1,"342":2,"371":2,"407":2}}],["is",{"2":{"4":1,"5":1,"6":4,"7":1,"8":1,"30":4,"32":2,"33":3,"35":2,"41":2,"42":2,"43":1,"44":1,"46":2,"49":6,"53":2,"60":2,"61":1,"63":1,"64":3,"66":4,"67":1,"68":1,"72":1,"73":1,"82":1,"96":1,"99":2,"103":1,"110":2,"111":3,"113":1,"114":3,"119":4,"120":2,"121":2,"122":3,"124":1,"128":1,"130":2,"131":3,"132":4,"133":3,"135":1,"137":1,"139":2,"140":2,"141":3,"142":2,"143":4,"144":3,"145":1,"146":1,"147":1,"149":2,"150":3,"153":1,"156":6,"157":2,"162":2,"164":1,"166":1,"170":1,"171":1,"172":1,"175":1,"179":6,"182":3,"183":3,"185":2,"195":1,"196":3,"197":3,"198":1,"200":1,"201":4,"202":1,"203":2,"204":1,"205":1,"208":1,"209":1,"210":1,"212":1,"213":1,"215":1,"217":3,"218":1,"219":1,"220":1,"222":1,"223":1,"226":1,"227":3,"228":1,"229":1,"234":1,"235":1,"243":1,"244":1,"245":2,"246":1,"248":4,"249":5,"250":5,"251":2,"253":1,"254":2,"255":2,"260":5,"261":5,"262":1,"263":1,"265":4,"270":1,"274":1,"282":1,"283":3,"285":1,"288":2,"298":1,"299":1,"301":2,"303":1,"309":1,"316":1,"320":1,"321":2,"322":2,"325":1,"326":1,"327":4,"328":4,"329":2,"330":1,"331":1,"332":2,"333":4,"334":1,"335":1,"336":3,"340":2,"341":2,"342":5,"352":3,"353":2,"354":4,"360":2,"361":1,"363":1,"364":3,"365":7,"369":1,"371":1,"372":1,"373":4,"375":1,"377":1,"378":3,"382":1,"384":1,"392":2,"393":3,"395":1,"396":3,"399":3,"400":3,"401":2,"411":1,"412":3,"413":3,"414":1,"416":1,"417":4,"418":1,"419":2}}],["iframe",{"2":{"13":1}}],["if",{"2":{"2":1,"6":1,"7":1,"33":1,"35":7,"36":1,"41":3,"42":2,"49":9,"51":1,"52":1,"54":1,"64":2,"70":1,"88":1,"96":2,"103":1,"110":1,"111":2,"113":2,"114":2,"118":2,"119":1,"120":4,"121":1,"128":2,"130":2,"131":2,"133":2,"134":1,"136":1,"138":1,"139":3,"142":2,"143":2,"150":1,"151":1,"156":3,"157":4,"170":1,"171":1,"172":1,"175":1,"176":1,"179":2,"183":3,"186":1,"191":1,"193":2,"194":1,"203":3,"204":2,"207":1,"209":1,"215":1,"226":1,"249":1,"260":4,"261":4,"262":2,"263":1,"265":1,"283":1,"284":2,"285":2,"286":2,"287":1,"300":1,"303":1,"313":1,"319":1,"322":1,"324":1,"327":1,"330":1,"333":1,"335":1,"336":1,"340":1,"341":1,"342":3,"354":1,"363":1,"365":1,"370":1,"372":2,"373":2,"377":2,"378":2,"382":1,"386":1,"392":1,"393":2,"395":2,"396":2,"400":3,"402":1,"407":1,"409":2,"410":1,"419":3}}],["inactive",{"2":{"354":1}}],["inherit",{"2":{"249":1,"289":1}}],["incorrect",{"2":{"327":1}}],["increase",{"2":{"156":1}}],["increment",{"2":{"115":3}}],["including",{"2":{"32":2,"97":1,"137":1,"213":1,"223":1,"282":1}}],["included",{"2":{"264":1,"377":1}}],["includedpaymentproviders",{"0":{"173":1},"2":{"157":2,"173":1}}],["includemetadata",{"2":{"64":1,"152":2}}],["includes",{"2":{"35":1,"156":1,"366":1,"377":1}}],["includecontracts",{"2":{"33":1}}],["include",{"2":{"6":1,"33":1,"36":1,"80":1,"81":1,"132":1,"133":1,"140":1,"284":1,"327":1}}],["indicating",{"2":{"250":1}}],["individual",{"2":{"110":1,"392":1}}],["index",{"2":{"49":1,"377":1}}],["indexing",{"2":{"30":1}}],["indexeddb",{"2":{"112":2,"394":2}}],["indexes",{"2":{"30":2}}],["indexer",{"0":{"30":1,"149":1},"1":{"31":1,"32":1,"150":1,"151":1,"152":1,"153":1},"2":{"30":8,"33":3,"62":1,"64":9,"115":1,"141":3,"149":4,"150":10,"151":6,"152":6,"153":1}}],["independently",{"2":{"352":1,"353":1,"354":1}}],["independent",{"2":{"8":1,"42":1,"110":2,"346":1,"392":2}}],["input",{"2":{"85":1,"132":1,"327":1}}],["inputted",{"2":{"46":1,"64":1}}],["inline",{"2":{"85":1}}],["involve",{"2":{"376":1}}],["involves",{"2":{"143":1}}],["invoking",{"0":{"76":1}}],["invoke",{"2":{"75":1}}],["invalid",{"2":{"52":1,"193":1,"318":1,"409":1}}],["investigate",{"2":{"2":1}}],["inspector",{"2":{"147":2}}],["instructions",{"2":{"149":1}}],["instead",{"2":{"97":1,"110":1,"128":1,"182":1,"215":1,"226":1,"263":1,"284":1,"328":1,"362":1,"392":1,"399":1}}],["instantiating",{"2":{"157":1}}],["instantiate",{"2":{"54":1}}],["instances",{"2":{"374":1}}],["instance",{"2":{"61":1,"141":1,"157":2,"361":1,"364":2}}],["installing",{"0":{"72":1},"2":{"71":1,"120":1}}],["installation",{"0":{"59":1,"117":1,"149":1,"150":1,"151":1,"152":1,"153":1,"209":1,"219":1,"229":1,"236":1,"359":1},"1":{"118":1,"119":1,"120":1,"150":1,"151":2,"152":2,"153":2}}],["install",{"0":{"103":1,"382":1},"1":{"104":1,"383":1},"2":{"44":1,"49":2,"54":2,"59":2,"72":5,"74":1,"90":3,"103":4,"108":1,"119":1,"151":2,"155":2,"156":1,"157":2,"178":1,"209":1,"215":2,"219":1,"226":2,"229":1,"236":1,"359":2,"382":2,"390":1}}],["installed",{"2":{"44":1,"104":1,"118":1,"156":1,"209":2,"219":1,"236":1,"383":1}}],["inside",{"2":{"8":1,"153":1}}],["initial",{"2":{"316":1,"317":1}}],["initialization",{"0":{"238":1}}],["initializes",{"2":{"250":1}}],["initialized",{"2":{"96":1,"238":1,"239":1,"250":1}}],["initialize",{"0":{"188":1,"404":1},"2":{"35":1,"44":2,"328":1}}],["initiateauth",{"2":{"364":1}}],["initiated",{"2":{"179":1}}],["initiating",{"2":{"242":1}}],["initwallet",{"2":{"157":2}}],["init",{"2":{"44":3}}],["infura",{"2":{"183":2,"400":2}}],["informs",{"2":{"250":1}}],["informed",{"2":{"114":1,"396":1}}],["information",{"2":{"30":1,"59":1,"103":1,"113":1,"150":1,"250":1,"359":1,"395":1}}],["info",{"2":{"34":1,"36":1,"43":1,"44":1,"114":1,"128":2,"157":1,"321":1,"396":1}}],["infrastructure",{"2":{"30":1,"66":1,"154":2,"201":1,"417":1}}],["int256",{"2":{"285":1}}],["int",{"2":{"133":1,"273":1,"285":1}}],["into",{"0":{"205":1,"384":1},"1":{"206":1,"385":1},"2":{"44":1,"45":1,"49":1,"64":1,"68":1,"70":2,"103":1,"119":1,"120":1,"128":1,"139":1,"140":1,"143":1,"149":1,"154":1,"169":1,"205":1,"207":2,"216":1,"225":1,"250":1,"260":1,"261":1,"265":1,"285":1,"294":1,"382":1,"384":1,"386":2}}],["integers",{"2":{"285":1}}],["integer",{"2":{"175":1,"274":1,"285":2}}],["integrity",{"2":{"161":1,"182":1,"399":1}}],["integration",{"0":{"90":1,"248":1},"1":{"91":1,"92":1,"93":1,"94":1},"2":{"69":1,"98":1,"99":1,"115":1,"158":1,"206":1,"234":1,"385":1}}],["integrating",{"2":{"8":1,"68":1,"109":1,"157":1,"205":1,"308":1,"384":1,"391":1}}],["integrated",{"2":{"115":1,"153":1,"173":1,"174":1}}],["integrate",{"0":{"14":1,"19":1,"20":1,"25":1,"28":1,"29":1,"205":1,"384":1},"1":{"206":1,"385":1},"2":{"2":1,"69":1,"70":1,"90":1,"95":1,"107":1,"149":1,"150":1,"203":1,"206":1,"207":1,"350":1,"385":1,"386":1,"389":1,"419":1}}],["intent",{"2":{"128":19,"157":3,"353":1}}],["intend",{"2":{"114":1,"396":1}}],["internally",{"2":{"322":1}}],["internal",{"2":{"322":1,"352":1}}],["interchangeably",{"2":{"255":1}}],["interpret",{"2":{"186":1,"402":1}}],["interoperability",{"2":{"156":1}}],["interfacing",{"2":{"72":1}}],["interface",{"2":{"8":1,"35":1,"41":1,"49":1,"54":2,"141":1,"179":1,"195":2,"196":2,"197":2,"198":3,"253":2,"255":1,"256":1,"263":1,"264":1,"289":1,"321":3,"411":2,"412":2,"413":2,"414":3}}],["interacting",{"2":{"93":1,"132":1,"139":1,"285":1,"288":1}}],["interactions",{"0":{"134":1,"136":1,"138":1},"2":{"134":1,"136":1,"138":1,"186":1,"402":1}}],["interaction",{"2":{"43":1,"192":1,"408":1}}],["interact",{"2":{"4":1,"53":1,"61":1,"289":1,"352":1,"361":1,"362":1}}],["introduction",{"0":{"115":1,"251":1,"291":1},"1":{"116":1,"252":1}}],["introduced",{"2":{"33":1}}],["introducing",{"2":{"30":1,"149":1}}],["intro",{"0":{"0":1},"2":{"1":1}}],["in",{"0":{"9":1,"11":1,"17":1,"18":1,"23":1,"24":1,"51":1,"82":1,"95":1,"123":1,"124":1,"290":1,"363":1,"364":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1,"96":1,"125":1,"126":1,"127":1,"128":1,"129":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1,"364":1,"365":1},"2":{"2":3,"6":4,"8":3,"30":4,"32":3,"33":2,"35":2,"36":1,"42":5,"43":2,"44":7,"45":1,"46":6,"48":1,"49":6,"50":2,"54":1,"62":2,"64":3,"66":3,"68":1,"71":2,"75":2,"80":1,"82":1,"83":2,"84":2,"85":2,"86":4,"87":3,"88":4,"90":1,"94":1,"96":1,"97":1,"109":1,"111":1,"112":2,"113":1,"114":1,"115":1,"116":3,"118":4,"119":2,"120":6,"121":5,"122":1,"123":2,"124":5,"125":2,"126":2,"128":7,"130":3,"131":1,"132":2,"133":1,"135":1,"137":4,"139":6,"140":2,"142":1,"143":4,"144":3,"147":7,"149":1,"150":1,"151":1,"152":1,"157":2,"162":2,"167":2,"170":2,"171":2,"172":2,"173":1,"174":1,"179":1,"182":3,"183":3,"185":1,"186":2,"189":1,"193":1,"195":1,"196":2,"197":2,"198":1,"200":1,"201":3,"203":2,"204":1,"205":1,"213":1,"223":1,"233":1,"245":1,"248":2,"249":4,"250":7,"251":7,"253":2,"260":1,"261":1,"262":1,"263":2,"264":2,"265":2,"266":1,"268":1,"269":2,"270":1,"271":2,"273":1,"274":1,"275":1,"280":1,"281":1,"282":1,"283":1,"284":3,"285":1,"291":1,"292":1,"293":1,"296":1,"301":1,"303":1,"305":1,"308":1,"311":1,"318":1,"321":1,"322":1,"327":1,"329":1,"330":1,"336":2,"341":1,"346":1,"351":1,"352":1,"353":1,"354":4,"363":3,"364":2,"365":1,"369":1,"370":2,"377":1,"384":1,"391":1,"393":1,"394":2,"395":1,"396":1,"399":3,"400":3,"401":1,"402":2,"405":1,"409":1,"411":1,"412":2,"413":2,"414":1,"416":1,"417":3,"419":2}}],["fly",{"2":{"292":1}}],["flagged",{"2":{"330":1}}],["flag",{"2":{"165":1}}],["flexible",{"2":{"156":1,"314":1}}],["flexibility",{"2":{"120":1}}],["floating",{"2":{"132":1}}],["flows",{"2":{"368":1}}],["flow",{"2":{"124":1,"179":1}}],["fashion",{"2":{"341":1}}],["fast",{"2":{"4":1,"5":1,"8":1,"30":1}}],["false",{"0":{"329":1},"2":{"157":2,"176":1,"328":2,"334":1,"365":1,"366":1,"371":1,"372":2,"373":1,"375":1,"378":1}}],["failing",{"2":{"378":1}}],["fails",{"2":{"260":1,"261":1,"330":1,"378":2}}],["failedtransactionresponse",{"2":{"378":1}}],["failedtransactionreturn",{"2":{"131":1}}],["failed",{"0":{"378":1},"2":{"376":2,"377":1}}],["failedcontractdeploymentreturn",{"2":{"143":1}}],["fail",{"2":{"140":1,"154":1,"251":1,"260":1,"261":1}}],["failure",{"2":{"121":1,"283":1}}],["failures",{"2":{"30":1}}],["familiar",{"2":{"70":1,"139":1,"156":1,"207":1,"350":1,"386":1}}],["facet",{"2":{"351":1}}],["facebook",{"2":{"69":1,"86":1,"97":1,"124":1,"170":1,"206":1,"363":1,"370":1,"385":1}}],["facilitate",{"2":{"89":1}}],["factual",{"2":{"321":1,"336":1}}],["factory",{"2":{"316":1,"317":1,"321":1,"328":2,"345":1}}],["fact",{"2":{"30":1,"66":1,"110":1,"201":1,"392":1,"417":1}}],["feb",{"2":{"347":1}}],["feature",{"2":{"90":1,"154":1,"248":1,"250":2,"294":1}}],["features",{"0":{"69":1,"206":1,"385":1},"2":{"4":1,"8":1,"30":1,"115":1,"119":1,"203":2,"419":2}}],["feehistoryresult",{"2":{"273":2}}],["feehistory",{"0":{"273":1},"2":{"273":2}}],["feel",{"2":{"98":1,"120":1,"122":1,"144":1,"204":1}}],["fee",{"2":{"35":1,"36":1,"278":1}}],["feeoption",{"2":{"35":1,"41":1}}],["fees",{"2":{"35":3,"41":1,"273":1,"314":1}}],["few",{"2":{"32":1,"62":1,"63":1,"64":1,"69":1,"119":1,"145":1,"147":1,"206":1,"385":1}}],["fetching",{"2":{"144":1}}],["fetch",{"0":{"13":1},"2":{"32":4,"49":1,"155":2}}],["freshly",{"2":{"299":1}}],["frequent",{"2":{"186":1,"402":1}}],["free",{"2":{"7":1,"8":1,"30":1,"98":1,"122":1,"144":1,"149":1,"204":1}}],["friendlyname",{"2":{"366":2}}],["friendly",{"2":{"99":1}}],["from",{"0":{"141":1,"184":1},"2":{"2":1,"4":1,"6":1,"13":1,"30":6,"32":1,"33":2,"35":3,"41":2,"42":2,"43":1,"44":1,"46":5,"49":5,"50":1,"52":1,"53":2,"54":5,"61":1,"62":4,"63":1,"64":3,"73":6,"74":8,"75":3,"76":1,"88":1,"90":1,"91":1,"97":1,"98":1,"106":1,"107":1,"110":1,"112":1,"113":1,"118":3,"123":1,"128":1,"130":1,"131":2,"133":1,"137":1,"139":2,"141":1,"142":2,"143":3,"150":1,"151":3,"154":1,"155":2,"156":1,"157":2,"176":1,"179":4,"182":3,"183":5,"186":2,"188":2,"194":1,"196":2,"197":2,"198":2,"203":2,"210":1,"220":2,"230":1,"238":1,"239":3,"249":2,"250":1,"262":1,"263":1,"269":1,"284":1,"286":1,"289":1,"291":1,"292":1,"293":1,"300":1,"316":1,"319":1,"320":1,"327":1,"340":1,"341":2,"351":1,"352":1,"353":2,"354":1,"361":1,"363":1,"364":2,"365":10,"366":1,"367":2,"375":1,"377":1,"378":1,"388":1,"389":1,"392":1,"394":1,"395":1,"399":3,"400":5,"402":2,"404":2,"410":1,"412":2,"413":2,"414":2,"419":2}}],["frontend",{"2":{"8":1,"354":2}}],["front",{"2":{"2":1}}],["fixedbyte",{"2":{"285":1}}],["fixed",{"2":{"285":1,"321":1}}],["fixing",{"2":{"248":1}}],["filter",{"2":{"128":9}}],["fill",{"2":{"121":1,"301":1}}],["files",{"0":{"294":1},"2":{"119":2,"292":1,"293":3,"294":1,"295":1,"299":1}}],["file",{"2":{"6":1,"51":1,"120":1,"128":2,"292":1,"293":1,"301":1,"365":1}}],["fit",{"2":{"120":2,"252":1}}],["fiat",{"0":{"109":1,"308":1,"391":1}}],["fields",{"2":{"96":1,"377":1}}],["field",{"2":{"93":1,"94":1,"97":1,"125":1,"126":1}}],["firm",{"2":{"137":1}}],["first",{"0":{"328":1},"1":{"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1},"2":{"44":1,"46":2,"53":1,"63":1,"97":1,"111":1,"116":1,"128":1,"134":1,"136":1,"138":1,"143":1,"157":1,"292":2,"328":1,"333":2,"393":1}}],["fire",{"2":{"8":1}}],["finishvalidatesession",{"2":{"372":2}}],["finishes",{"2":{"333":2}}],["finished",{"2":{"179":1}}],["finalizeauth",{"2":{"364":1}}],["finalize",{"0":{"302":1}}],["finally",{"2":{"6":1,"45":1,"48":1,"53":1,"54":1,"301":1}}],["findobjectoftype",{"2":{"122":1}}],["finding",{"2":{"119":1}}],["findsupportednetwork",{"2":{"49":2,"54":4}}],["find",{"2":{"6":1,"35":5,"41":1,"46":1,"64":1,"150":1,"182":1,"335":1,"336":1,"399":1}}],["focus",{"2":{"299":1}}],["folder",{"0":{"295":1},"2":{"44":2,"45":1,"118":2,"119":2,"121":4,"248":3,"250":2,"294":4,"295":2,"300":1,"301":1}}],["follows",{"2":{"54":1,"115":1,"179":1,"340":1}}],["follow",{"2":{"36":1,"44":1,"46":1,"48":1,"52":1,"64":1,"73":1,"90":1,"150":1,"169":1}}],["following",{"2":{"5":1,"6":1,"35":1,"36":1,"41":1,"43":2,"46":2,"47":1,"51":1,"54":1,"128":1,"130":1,"147":1,"155":1,"183":1,"209":1,"215":1,"226":1,"291":1,"333":1,"354":1,"362":1,"400":1}}],["found",{"2":{"35":9,"64":1,"119":1,"121":1,"144":2,"193":1,"249":1,"250":2,"264":1,"409":1}}],["force",{"2":{"165":1}}],["formerly",{"2":{"346":1}}],["forms",{"2":{"309":1}}],["form",{"2":{"132":1,"144":1,"310":1}}],["format",{"2":{"123":1,"132":1,"133":2,"139":4,"262":2,"265":2,"266":1,"268":1,"269":1,"270":1,"271":2,"273":1,"274":1,"275":1,"303":1}}],["forum",{"2":{"128":1}}],["foreach",{"2":{"73":1,"74":1}}],["forget",{"2":{"8":1,"147":1}}],["for",{"0":{"46":1,"103":1,"181":1,"203":1,"374":1,"398":1,"419":1},"1":{"47":1,"48":1,"104":1},"2":{"2":1,"5":1,"6":4,"7":1,"8":4,"30":2,"32":2,"33":1,"34":1,"35":7,"36":2,"41":3,"42":4,"43":1,"44":1,"46":1,"47":1,"49":1,"50":2,"54":1,"59":2,"64":4,"66":1,"67":2,"68":1,"72":2,"73":3,"77":1,"80":2,"86":1,"87":1,"93":1,"96":3,"99":3,"103":2,"110":1,"111":3,"114":2,"115":2,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"128":2,"130":1,"131":3,"132":2,"134":3,"136":3,"137":1,"138":3,"139":1,"140":2,"142":2,"143":2,"144":2,"150":3,"151":3,"152":3,"154":2,"156":4,"157":1,"160":1,"161":1,"162":1,"164":1,"175":1,"177":1,"179":2,"182":1,"183":3,"186":3,"200":1,"201":1,"202":2,"203":2,"204":4,"205":1,"214":2,"216":2,"217":4,"223":1,"224":2,"225":2,"227":5,"235":1,"243":1,"246":1,"248":4,"250":1,"251":2,"254":1,"256":1,"257":1,"259":1,"261":1,"263":1,"264":1,"265":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"278":1,"281":1,"282":2,"283":2,"284":1,"285":2,"288":2,"289":3,"291":2,"292":1,"293":2,"294":1,"299":2,"300":2,"301":1,"303":1,"313":1,"321":1,"327":3,"333":2,"335":1,"336":1,"340":1,"341":1,"342":1,"350":1,"353":1,"359":2,"363":1,"364":1,"366":1,"369":1,"371":2,"374":2,"375":1,"377":1,"384":1,"392":1,"393":3,"396":2,"399":1,"400":3,"402":3,"416":1,"417":1,"418":2,"419":2}}],["future",{"2":{"35":1}}],["fungible",{"2":{"133":1,"135":1,"137":1}}],["funding",{"2":{"175":1,"176":1}}],["funds",{"2":{"157":1,"318":1,"332":1}}],["fund",{"2":{"36":1}}],["funded",{"2":{"35":1}}],["functionnameasstring",{"2":{"139":2,"140":1}}],["functions",{"0":{"284":1},"2":{"131":1,"134":1,"136":1,"138":1,"143":1,"191":1,"216":1,"225":1,"407":1}}],["function",{"2":{"35":1,"41":1,"49":1,"54":1,"73":1,"74":1,"96":1,"97":1,"130":1,"132":1,"139":5,"142":1,"155":3,"182":1,"195":2,"196":2,"197":2,"198":3,"203":1,"250":1,"283":3,"284":1,"318":1,"322":2,"326":1,"328":1,"342":1,"365":5,"366":1,"399":1,"411":2,"412":2,"413":2,"414":3,"419":1}}],["functionality",{"2":{"141":1,"179":1,"195":1,"196":1,"197":1,"204":1,"309":1,"313":1,"329":1,"411":1,"412":1,"413":1}}],["functional",{"2":{"4":1,"350":1,"365":1}}],["full",{"2":{"31":1,"42":1,"54":1,"86":1,"87":1,"99":1,"115":1,"150":1,"165":1,"177":1,"249":1,"250":1,"377":1,"378":1}}],["fully",{"2":{"4":1,"141":1,"245":1,"283":1,"350":1}}],["further",{"2":{"2":1,"157":1}}],["w3c",{"2":{"156":1}}],["wyre",{"2":{"109":1,"391":1}}],["won",{"2":{"352":1}}],["wooden",{"2":{"300":1}}],["wouldn",{"2":{"354":1}}],["would",{"2":{"49":1,"54":1,"99":1,"113":1,"114":1,"139":1,"143":1,"157":1,"212":1,"222":1,"284":1,"286":1,"395":1,"396":1}}],["world",{"2":{"44":1,"45":1,"68":1,"205":1,"340":1,"384":1}}],["worried",{"2":{"34":1,"43":1}}],["workflow",{"2":{"182":1,"399":1}}],["works",{"0":{"145":1},"2":{"64":1,"106":1,"107":1,"122":2,"139":1,"156":1,"157":3,"169":1,"200":1,"388":1,"389":1,"416":1}}],["working",{"2":{"46":1,"130":1,"131":1,"142":1,"143":1,"249":1,"251":1,"252":1,"262":1}}],["workers",{"0":{"27":1},"2":{"45":1,"52":1,"53":1}}],["worker",{"2":{"13":1,"43":1,"44":1,"49":1,"52":1,"53":1}}],["work",{"2":{"6":1,"33":1,"98":1,"116":1,"120":1,"121":1,"124":1,"144":1,"156":4,"204":2,"265":1,"301":1,"364":1}}],["wrapping",{"2":{"251":2}}],["wrappers",{"2":{"96":1,"120":1,"288":3}}],["wrapper",{"0":{"73":1,"74":1},"2":{"73":2,"74":1,"78":1,"134":1,"136":1,"138":1,"141":1,"143":1,"250":6,"288":1,"289":1}}],["wrap",{"2":{"73":1,"250":2}}],["wrangler=",{"2":{"44":1}}],["wrangler",{"0":{"44":1,"51":1},"1":{"45":1},"2":{"43":2,"44":8,"45":1,"50":1,"51":1,"52":1}}],["written",{"2":{"66":1,"183":1,"200":1,"201":1,"203":1,"400":1,"416":1,"417":1,"419":1}}],["write",{"0":{"131":1},"1":{"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1},"2":{"46":2,"120":1,"131":1,"299":1,"300":1,"302":1}}],["wrong",{"2":{"49":2,"176":2}}],["w",{"2":{"35":2}}],["who",{"2":{"156":1,"354":1,"370":1}}],["whole",{"2":{"132":1,"140":1,"260":1,"261":1,"330":1}}],["whistles",{"2":{"251":1}}],["whitespace",{"2":{"139":1}}],["while",{"2":{"107":1,"114":1,"115":1,"143":1,"148":1,"156":1,"167":1,"179":1,"182":1,"186":1,"248":1,"251":1,"260":1,"261":1,"283":1,"328":1,"350":1,"352":1,"389":1,"396":1,"399":1,"402":1}}],["which",{"2":{"6":1,"8":2,"33":3,"35":1,"42":1,"45":1,"46":1,"47":1,"63":1,"64":1,"67":1,"86":1,"87":1,"88":1,"99":1,"107":1,"109":2,"131":1,"141":1,"142":1,"143":2,"147":2,"156":1,"159":1,"177":1,"179":1,"182":2,"195":1,"196":1,"197":1,"200":1,"202":1,"215":1,"216":2,"225":2,"226":1,"227":2,"233":1,"249":1,"250":4,"256":1,"260":1,"261":1,"282":1,"284":1,"289":1,"308":2,"309":1,"319":1,"322":1,"327":1,"335":1,"351":1,"389":1,"391":2,"399":2,"411":1,"412":1,"413":1,"416":1,"418":1}}],["why",{"0":{"248":1,"309":1},"1":{"310":1,"311":1,"312":1,"313":1,"314":1,"315":1},"2":{"64":1}}],["whether",{"2":{"64":2,"85":1,"167":1,"176":1,"216":1,"225":1,"342":1,"370":1,"373":1}}],["where",{"2":{"46":1,"64":3,"130":1,"132":1,"139":1,"143":1,"169":1,"185":1,"203":1,"251":1,"285":1,"299":1,"401":1,"419":1}}],["whereby",{"2":{"8":1}}],["whenever",{"2":{"289":1,"362":1}}],["when",{"0":{"248":1},"2":{"33":1,"53":1,"64":1,"97":1,"111":1,"116":1,"119":2,"120":1,"121":1,"122":1,"131":1,"132":1,"134":1,"136":1,"138":1,"139":2,"140":1,"142":1,"143":1,"157":2,"158":1,"169":1,"174":1,"182":1,"216":1,"225":1,"242":1,"249":1,"250":2,"251":4,"252":1,"265":1,"283":2,"284":1,"285":1,"288":1,"328":1,"333":2,"342":1,"353":1,"365":2,"370":1,"373":2,"375":1,"393":1,"399":1}}],["what",{"2":{"32":2,"46":1,"250":1,"299":1,"313":1,"329":1,"353":1}}],["width=",{"2":{"365":1}}],["wish",{"2":{"119":1,"131":1,"139":1,"142":1,"143":1,"286":1,"289":1,"370":1}}],["windows",{"2":{"126":2}}],["window",{"0":{"51":1},"2":{"51":1,"118":2,"120":2,"125":1,"126":1,"128":1,"157":1,"166":1}}],["will",{"2":{"6":4,"8":2,"33":4,"34":1,"35":9,"41":2,"43":1,"44":1,"46":2,"60":1,"62":2,"69":1,"71":1,"74":1,"75":1,"85":1,"86":2,"87":2,"88":2,"95":1,"107":1,"109":2,"114":2,"115":3,"118":3,"119":2,"120":5,"121":4,"122":2,"123":1,"130":1,"132":1,"139":1,"140":1,"141":1,"144":2,"156":3,"157":2,"159":1,"161":1,"163":1,"165":1,"166":1,"167":2,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"176":1,"179":1,"182":3,"194":1,"204":1,"206":1,"213":1,"214":1,"223":1,"224":1,"232":1,"233":1,"241":1,"242":1,"248":1,"249":1,"250":2,"254":1,"260":4,"261":4,"263":1,"264":1,"265":2,"282":2,"283":3,"284":1,"285":1,"295":1,"297":1,"300":4,"301":2,"308":2,"318":1,"319":1,"327":2,"330":1,"333":1,"340":2,"341":2,"342":1,"353":3,"360":1,"364":3,"372":1,"376":1,"377":1,"378":4,"385":1,"389":1,"391":2,"396":2,"399":3,"410":1}}],["without",{"2":{"30":1,"34":1,"36":1,"41":1,"42":2,"43":1,"119":1,"131":1,"140":1,"142":1,"143":1,"156":1,"157":2,"185":1,"186":1,"192":2,"251":1,"327":1,"334":1,"376":1,"401":1,"402":1,"408":2}}],["within",{"2":{"6":1,"69":1,"73":1,"119":2,"131":1,"142":1,"143":1,"156":1,"206":1,"313":1,"353":1,"372":1,"385":1}}],["with",{"0":{"14":1,"20":1,"36":1,"44":1,"46":1,"71":1,"130":1,"157":1,"177":1,"178":1,"180":1,"184":1,"187":1,"192":1,"199":1,"248":1,"249":1,"250":1,"397":1,"403":1,"408":1,"415":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"45":1,"47":1,"48":1,"72":1,"181":1,"182":1,"183":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"200":1,"201":1,"202":1,"203":1,"398":1,"399":1,"400":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"416":1,"417":1,"418":1,"419":1},"2":{"2":2,"4":1,"6":2,"7":1,"8":2,"13":1,"30":3,"33":4,"34":1,"35":2,"36":2,"42":1,"43":4,"44":2,"46":3,"47":1,"49":1,"52":1,"53":5,"54":1,"57":1,"59":1,"60":1,"61":1,"63":2,"66":1,"68":2,"69":3,"70":1,"72":1,"73":1,"80":1,"93":2,"95":1,"96":1,"98":1,"99":1,"102":1,"103":2,"106":1,"107":1,"109":1,"110":1,"111":3,"112":1,"115":1,"118":3,"119":4,"120":2,"121":3,"122":4,"123":2,"124":1,"128":4,"130":5,"131":3,"132":2,"134":5,"136":5,"138":5,"139":4,"142":2,"143":3,"147":2,"148":1,"149":1,"150":4,"154":1,"155":2,"156":4,"157":1,"158":1,"168":1,"170":2,"171":2,"182":2,"183":2,"186":1,"190":1,"195":1,"196":1,"197":1,"201":1,"203":2,"204":4,"205":2,"206":3,"207":1,"208":2,"209":1,"216":4,"217":2,"218":1,"225":4,"227":2,"228":1,"235":1,"244":2,"245":2,"248":2,"249":2,"250":6,"251":2,"252":1,"255":2,"262":1,"264":1,"265":1,"266":1,"284":1,"285":1,"288":2,"289":2,"291":1,"293":1,"300":1,"302":1,"303":1,"306":1,"308":1,"318":1,"340":1,"342":2,"346":1,"350":2,"352":2,"353":3,"354":2,"357":1,"359":1,"360":1,"361":1,"362":1,"363":2,"364":3,"365":1,"367":1,"368":1,"369":1,"372":2,"381":1,"382":1,"384":2,"385":3,"386":1,"388":1,"389":1,"391":1,"392":1,"393":3,"394":1,"399":2,"400":2,"402":1,"406":1,"411":1,"412":1,"413":1,"417":1,"419":2}}],["warning",{"2":{"318":1,"333":1}}],["wagmiclient",{"2":{"250":2}}],["wagmiconfig",{"2":{"73":3,"74":4,"90":2,"97":3,"210":1,"250":2}}],["wagmiwrapper",{"2":{"250":6}}],["wagmiprovider",{"2":{"73":1,"74":1,"250":1}}],["wagmi",{"0":{"208":1,"215":1,"226":1},"1":{"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1},"2":{"68":1,"72":4,"73":5,"74":2,"75":2,"86":1,"87":1,"96":3,"97":1,"204":1,"205":1,"208":3,"209":5,"210":2,"215":4,"216":3,"217":5,"225":5,"226":4,"227":4,"248":2,"249":5,"250":4,"384":1}}],["waitfortransactionreceipt",{"0":{"281":1},"2":{"281":1}}],["waits",{"2":{"259":1,"261":1}}],["wait",{"2":{"42":1,"249":2,"281":1,"284":1}}],["wants",{"2":{"113":1,"395":1}}],["want",{"2":{"36":1,"42":1,"54":1,"119":1,"120":1,"130":1,"134":1,"136":1,"138":1,"139":3,"156":1,"167":1,"182":1,"194":1,"204":1,"265":2,"284":3,"287":1,"299":1,"303":1,"399":1,"410":1}}],["was",{"2":{"35":2,"41":1,"64":4,"114":1,"119":2,"342":1,"346":1,"377":2,"396":1}}],["waasadapter",{"2":{"255":1}}],["waastowalletadapter",{"2":{"255":3,"260":2,"261":2}}],["waaswallet",{"2":{"130":4,"131":5,"132":1,"142":4,"143":9,"144":1,"255":3}}],["waaslogin",{"2":{"130":1}}],["waasconfigkey",{"2":{"61":1,"361":1,"363":1,"364":1,"365":1,"366":1,"367":1,"377":1,"378":1}}],["waas",{"0":{"14":1,"20":1,"130":1},"2":{"59":1,"61":4,"103":1,"119":1,"121":2,"122":1,"123":1,"130":2,"131":1,"132":1,"133":1,"134":3,"135":1,"136":3,"137":1,"138":3,"139":2,"140":1,"359":1,"361":4,"362":1,"363":6,"364":6,"365":5,"366":5,"367":6,"371":1,"372":2,"373":1,"374":2,"375":1,"377":5,"378":5}}],["walk",{"2":{"6":1,"71":1,"95":1}}],["walletcontext",{"2":{"345":1}}],["walletconnectprojectid",{"2":{"73":1,"74":1}}],["walletconnect",{"0":{"179":1},"2":{"69":1,"156":1,"177":1,"179":4,"206":1,"385":1}}],["walletinterface",{"2":{"328":2}}],["walletpanel",{"2":{"144":1}}],["walletauthoptions",{"0":{"87":1},"2":{"97":2}}],["walletaddress",{"2":{"49":2,"365":2}}],["wallets",{"0":{"111":1,"205":1,"253":1,"309":1,"313":1,"384":1,"393":1},"1":{"112":1,"113":1,"114":1,"206":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"310":1,"311":1,"312":1,"313":1,"314":2,"315":1,"385":1,"394":1,"395":1,"396":1},"2":{"35":3,"67":1,"68":1,"69":1,"73":1,"86":1,"87":1,"95":1,"99":1,"114":1,"156":1,"202":1,"204":1,"205":1,"206":1,"212":1,"220":2,"222":1,"230":1,"255":1,"309":2,"313":3,"316":2,"317":1,"318":1,"321":1,"327":1,"328":1,"336":1,"339":1,"350":3,"351":1,"352":1,"353":1,"354":5,"384":1,"385":1,"396":1,"418":1}}],["walleteoa",{"2":{"35":4,"41":2,"46":2,"54":2}}],["wallet",{"0":{"3":1,"13":1,"54":1,"74":1,"76":1,"99":1,"106":1,"107":1,"108":1,"144":1,"156":1,"158":1,"178":1,"181":1,"182":1,"183":1,"185":1,"188":1,"204":1,"248":1,"249":1,"250":1,"316":1,"317":1,"321":1,"331":1,"336":1,"345":1,"350":1,"388":1,"389":1,"390":1,"398":1,"399":1,"400":1,"401":1,"404":1},"1":{"145":1,"146":1,"147":1,"148":1,"157":1,"158":1,"159":2,"160":2,"161":2,"162":2,"163":2,"164":2,"165":2,"166":2,"167":2,"168":2,"169":2,"170":2,"171":2,"172":2,"173":2,"174":2,"175":2,"176":2,"177":1,"178":1,"179":1,"317":1,"318":2,"319":2,"320":2,"321":1,"322":2,"323":2,"324":2,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"351":1,"352":1,"353":1,"354":1},"2":{"30":2,"32":3,"34":1,"35":17,"36":1,"41":3,"42":1,"43":1,"46":12,"49":3,"50":1,"52":2,"53":3,"54":2,"56":1,"57":1,"59":2,"60":3,"61":2,"62":1,"69":3,"71":1,"72":3,"73":1,"74":4,"76":3,"87":3,"88":1,"99":6,"101":1,"103":2,"107":2,"109":2,"110":8,"111":3,"114":1,"115":2,"122":3,"130":2,"131":3,"132":2,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":2,"140":3,"142":3,"143":4,"144":2,"156":12,"157":19,"158":2,"159":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":3,"167":2,"168":2,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"179":2,"181":3,"182":6,"183":1,"185":1,"186":5,"188":6,"189":1,"190":1,"191":3,"192":1,"194":2,"195":3,"196":3,"197":3,"198":2,"203":1,"204":2,"206":3,"208":2,"218":2,"223":1,"228":2,"232":1,"241":1,"242":1,"244":2,"245":3,"246":1,"248":3,"250":2,"253":1,"254":2,"257":2,"258":1,"259":1,"260":5,"261":5,"262":3,"265":3,"275":2,"282":2,"284":6,"287":1,"288":3,"301":1,"308":2,"309":1,"310":1,"316":1,"317":1,"318":3,"319":3,"320":5,"321":3,"322":3,"323":1,"324":1,"325":1,"326":2,"327":6,"328":6,"329":1,"330":2,"331":2,"333":3,"334":2,"335":3,"336":5,"340":6,"341":7,"342":2,"346":3,"350":5,"351":1,"352":2,"356":1,"357":1,"359":2,"360":3,"361":2,"362":1,"363":1,"364":1,"368":1,"378":3,"380":1,"385":3,"389":2,"391":2,"392":8,"393":3,"396":1,"398":3,"399":6,"400":1,"401":1,"402":5,"404":6,"405":1,"406":1,"407":3,"408":1,"410":2,"411":3,"412":3,"413":3,"414":2,"419":1}}],["ways",{"2":{"156":1,"353":1}}],["way",{"2":{"4":1,"35":3,"42":1,"98":1,"147":2,"186":1,"321":1,"328":1,"352":1,"402":1}}],["weight",{"2":{"327":1}}],["weights",{"2":{"322":1,"326":1}}],["weeds",{"2":{"265":1}}],["week",{"2":{"162":1}}],["were",{"2":{"186":1,"285":1,"354":1,"402":1}}],["went",{"2":{"49":2}}],["weth",{"2":{"35":1}}],["websocketprovider",{"2":{"250":1}}],["websocketpublicclient",{"2":{"210":1}}],["website",{"2":{"64":1}}],["web2",{"2":{"156":1}}],["webgl",{"0":{"129":1},"2":{"116":1,"124":1}}],["web",{"0":{"28":1,"29":1,"106":1,"151":1,"388":1},"2":{"106":1,"107":1,"150":1,"156":3,"352":1,"388":1,"389":1}}],["webapps",{"2":{"149":1}}],["webapp",{"2":{"13":1,"64":1,"150":1}}],["web3modal",{"0":{"244":1},"1":{"245":1,"246":1},"2":{"157":1,"177":1,"204":1,"244":3,"245":1,"246":2}}],["web3",{"0":{"177":1,"205":1,"228":1,"235":1,"384":1},"1":{"206":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"385":1},"2":{"2":1,"30":2,"51":1,"68":2,"69":2,"73":1,"87":1,"107":1,"153":2,"156":6,"204":3,"205":2,"206":2,"228":3,"229":2,"230":1,"234":1,"235":3,"236":1,"238":2,"239":1,"243":1,"297":1,"384":2,"385":2,"389":1}}],["we",{"2":{"2":1,"33":2,"36":1,"49":4,"54":1,"59":1,"62":1,"71":1,"103":1,"114":1,"115":1,"119":3,"120":3,"121":1,"122":2,"124":2,"130":1,"134":1,"136":1,"137":1,"138":1,"139":2,"141":1,"143":2,"144":2,"146":1,"147":2,"148":2,"150":1,"151":1,"156":1,"182":1,"249":2,"250":3,"251":1,"264":1,"284":2,"286":2,"288":1,"289":2,"352":1,"359":1,"370":3,"396":1,"399":1}}],["well",{"2":{"2":1,"49":1,"114":1,"139":1,"150":1,"194":1,"203":1,"284":2,"286":2,"289":1,"340":1,"341":1,"396":1,"410":1,"419":1}}],["turn",{"2":{"250":1}}],["turned",{"2":{"248":1}}],["typically",{"2":{"131":1,"182":1,"186":1,"399":1,"402":1}}],["typical",{"2":{"131":1}}],["typeddata",{"2":{"341":2}}],["typed",{"2":{"341":1}}],["typedefault",{"2":{"88":1}}],["typedefaultbooleantrue",{"2":{"85":1}}],["typedefaultstringundefined",{"2":{"83":1,"84":1}}],["typedefaultstringcenter",{"2":{"81":1}}],["typedefaultstring",{"2":{"80":1,"86":1,"87":1}}],["typescript",{"2":{"44":1,"59":2,"103":2,"150":2,"183":1,"200":1,"359":2,"400":1,"416":1}}],["types",{"2":{"6":1,"131":1,"283":1}}],["type",{"0":{"285":1},"2":{"6":1,"49":2,"52":1,"53":1,"64":5,"140":2,"157":1,"286":1,"307":1,"341":3,"377":1,"378":1}}],["tmp",{"2":{"118":1,"120":1}}],["twitter",{"2":{"363":1}}],["twitch",{"2":{"86":1,"170":1}}],["two",{"2":{"60":1,"111":2,"122":1,"195":1,"196":1,"197":1,"265":1,"299":1,"309":1,"346":1,"353":1,"360":1,"368":1,"393":2,"411":1,"412":1,"413":1}}],["tsx",{"2":{"250":1,"365":1}}],["ts",{"2":{"49":1,"365":1,"378":1}}],["txhash",{"2":{"377":2}}],["tx",{"2":{"373":1,"375":1,"377":3,"378":4}}],["txs",{"2":{"35":1,"41":1}}],["txns",{"2":{"42":1}}],["txn2",{"2":{"42":2}}],["txn1",{"2":{"42":2}}],["txnreceipt",{"2":{"35":4,"41":2}}],["txnresponse",{"2":{"35":2,"41":1,"194":2,"195":4,"196":4,"197":4,"410":2,"411":4,"412":4,"413":4}}],["txn",{"2":{"35":2,"41":2,"54":2}}],["tip",{"2":{"157":1,"208":1,"218":1,"228":1,"244":1}}],["tips",{"0":{"33":1},"2":{"114":1,"396":1}}],["times",{"2":{"44":1,"147":1}}],["time",{"0":{"301":1,"369":1},"2":{"30":1,"33":2,"43":1,"54":1,"64":2,"111":1,"115":1,"147":1,"182":1,"185":1,"186":1,"284":1,"286":1,"301":1,"317":1,"333":1,"354":1,"364":1,"369":1,"370":1,"393":1,"399":1,"401":1,"402":1}}],["timezones",{"2":{"2":1}}],["t",{"2":{"8":1,"61":1,"97":1,"116":1,"118":1,"120":2,"128":2,"139":1,"147":2,"148":1,"179":1,"198":1,"284":1,"286":3,"316":1,"321":1,"327":1,"328":1,"332":1,"333":1,"336":1,"352":2,"354":1,"361":1,"362":1,"363":1,"370":1,"414":1}}],["tries",{"2":{"373":1}}],["triggered",{"2":{"93":1,"157":1,"373":3,"374":2,"375":1}}],["triggertransaction",{"2":{"93":1}}],["triggercheckout",{"2":{"91":2}}],["triggering",{"0":{"75":1},"2":{"71":1}}],["trigger",{"0":{"372":1},"1":{"373":1},"2":{"35":1,"372":1}}],["triggers",{"2":{"35":1}}],["trying",{"2":{"69":1,"206":1,"385":1}}],["try",{"0":{"56":1,"101":1,"155":1,"305":1,"307":1,"356":1,"380":1},"2":{"49":3,"51":1,"56":1,"64":1,"101":1,"106":1,"107":1,"183":1,"208":2,"218":2,"228":2,"244":2,"251":2,"356":1,"365":1,"378":2,"380":1,"388":1,"389":1,"400":1}}],["trust",{"2":{"183":1,"312":1,"352":1,"400":1}}],["trusted",{"2":{"49":1,"64":1,"369":1,"370":1,"371":1}}],["true",{"0":{"330":1},"2":{"33":2,"51":1,"54":2,"64":1,"75":1,"76":1,"128":3,"152":2,"157":1,"163":1,"165":1,"166":1,"167":1,"176":1,"182":2,"210":1,"248":1,"250":1,"307":1,"328":2,"333":1,"334":1,"366":1,"371":2,"372":4,"373":2,"375":2,"378":1,"399":2}}],["tranfereth",{"2":{"282":1}}],["transports",{"2":{"73":3,"74":3,"97":1}}],["transferring",{"2":{"332":1}}],["transfereth",{"2":{"282":1}}],["transfertransaction",{"2":{"282":2}}],["transfers",{"0":{"282":1},"2":{"134":1,"136":1,"138":1,"195":2,"196":2,"197":2,"411":2,"412":2,"413":2}}],["transfer",{"2":{"35":1,"42":2,"195":7,"196":1,"197":1,"198":2,"282":1,"283":2,"284":4,"288":1,"411":7,"412":1,"413":1,"414":2}}],["transactionfailed",{"2":{"378":1}}],["transactioncreator",{"2":{"284":4,"288":2}}],["transactioncount",{"0":{"280":1},"2":{"280":2}}],["transactioncall",{"2":{"272":2}}],["transactionbyhash",{"0":{"279":1},"2":{"279":1}}],["transactionhashes",{"2":{"260":1}}],["transactionhash",{"2":{"258":1,"276":1,"279":1,"281":1}}],["transaction2",{"2":{"195":2,"196":2,"197":2,"198":2,"411":2,"412":2,"413":2,"414":2}}],["transaction1",{"2":{"195":2,"196":2,"197":2,"198":2,"411":2,"412":2,"413":2,"414":2}}],["transactionreceipt",{"2":{"259":2,"261":4,"281":2,"282":1,"284":4,"288":2,"377":1}}],["transactionreturn",{"2":{"131":1}}],["transactionresponse",{"2":{"49":1,"54":1}}],["transaction",{"0":{"338":1,"343":1,"376":1,"377":1,"378":1},"1":{"377":1,"378":1},"2":{"8":3,"32":2,"34":1,"35":5,"36":2,"41":5,"43":2,"46":1,"54":2,"64":1,"93":1,"131":3,"132":4,"133":2,"134":1,"135":2,"136":1,"137":4,"138":1,"139":4,"140":6,"143":1,"144":1,"194":4,"195":4,"196":4,"197":4,"198":1,"203":1,"258":1,"259":1,"260":3,"261":2,"272":1,"276":3,"279":4,"281":1,"282":1,"284":4,"288":3,"298":1,"302":1,"319":1,"322":1,"327":1,"330":2,"332":3,"333":4,"334":1,"373":1,"374":1,"376":3,"377":8,"378":4,"410":4,"411":4,"412":4,"413":4,"414":1,"419":1}}],["transactions",{"0":{"42":1,"140":1,"194":1,"198":1,"410":1,"414":1},"2":{"8":10,"30":2,"34":3,"35":2,"36":2,"42":8,"131":1,"140":5,"195":1,"196":1,"197":1,"198":4,"260":3,"261":3,"280":1,"314":1,"328":1,"333":2,"334":1,"339":1,"353":2,"363":1,"376":1,"377":1,"378":3,"411":1,"412":1,"413":1,"414":4}}],["tradeoff",{"2":{"114":1,"396":1}}],["traditional",{"2":{"110":1,"352":1,"392":1}}],["trackers",{"2":{"183":2,"400":2}}],["tracked",{"2":{"44":1}}],["track",{"2":{"33":1}}],["troubles",{"2":{"2":1}}],["technique",{"2":{"216":1,"225":1}}],["technical",{"2":{"151":1}}],["text",{"2":{"182":1,"399":1}}],["textmeshpro",{"2":{"118":1,"120":1}}],["terms",{"2":{"114":1,"396":1}}],["template",{"0":{"51":1,"57":1,"102":1,"306":1,"357":1,"381":1},"2":{"57":1,"102":1,"119":3,"306":1,"357":1,"381":1}}],["tested",{"2":{"251":1}}],["test",{"0":{"44":1,"45":1},"1":{"45":1},"2":{"43":1,"52":1,"54":1,"61":1,"361":1,"363":1,"364":1,"365":1,"366":1,"367":1,"377":1,"378":1}}],["testing",{"0":{"52":1},"2":{"4":1,"30":1,"44":2,"77":1,"116":1}}],["team",{"2":{"2":3,"7":1,"60":1,"67":1,"121":1,"202":1,"204":1,"352":1,"360":1,"418":1}}],["tampered",{"2":{"352":1}}],["taking",{"2":{"179":1}}],["takes",{"2":{"157":1,"372":1}}],["take",{"2":{"70":1,"110":1,"131":1,"142":1,"143":1,"147":1,"207":1,"216":1,"225":1,"283":1,"309":1,"353":1,"386":1,"392":1}}],["taken",{"2":{"41":1,"333":1}}],["tag",{"2":{"174":1}}],["target",{"2":{"150":1}}],["targets",{"2":{"122":1}}],["tasks",{"2":{"251":1}}],["task",{"2":{"131":2,"142":2,"143":2,"284":1}}],["tanstack",{"2":{"72":3,"73":1,"74":1}}],["tank",{"0":{"39":1},"2":{"41":2}}],["tablet",{"2":{"106":1,"107":1,"388":1,"389":1}}],["tab",{"2":{"46":1,"295":1}}],["talking",{"2":{"2":1}}],["tackle",{"2":{"2":1}}],["thought",{"2":{"131":1}}],["those",{"2":{"103":1,"382":1}}],["threat",{"0":{"354":1}}],["threats",{"2":{"351":1}}],["threads",{"2":{"128":1}}],["threshold",{"2":{"114":1,"321":1,"322":1,"326":1,"327":1,"340":1,"341":1,"342":1,"396":1}}],["three",{"2":{"111":3,"393":3}}],["throwing",{"2":{"251":1}}],["throw",{"2":{"35":2,"251":2}}],["throughout",{"2":{"255":1}}],["throughput",{"2":{"34":1,"43":1}}],["through",{"2":{"5":1,"6":1,"30":1,"43":1,"62":1,"71":1,"95":1,"122":1,"139":1,"149":1,"156":1,"186":1,"208":1,"218":1,"228":1,"229":1,"248":1,"250":1,"340":2,"341":2,"342":1,"368":1,"402":1}}],["than",{"2":{"99":1,"148":1,"183":1,"203":1,"400":1,"419":1}}],["that",{"2":{"2":1,"6":3,"8":1,"30":2,"33":1,"35":1,"41":2,"42":3,"44":2,"46":1,"49":4,"61":1,"77":1,"88":1,"99":2,"103":1,"109":1,"110":3,"111":1,"113":1,"114":2,"115":1,"118":1,"119":3,"120":3,"121":1,"122":1,"131":1,"132":1,"133":1,"134":2,"136":2,"138":2,"139":2,"140":1,"143":1,"144":1,"147":1,"150":1,"154":1,"156":2,"157":1,"162":1,"170":1,"179":2,"186":2,"194":1,"213":1,"216":1,"225":1,"232":1,"235":1,"241":1,"250":3,"251":3,"255":2,"260":1,"261":1,"264":1,"283":1,"284":1,"285":1,"301":1,"303":1,"308":1,"313":2,"318":1,"319":1,"320":1,"325":1,"326":1,"327":2,"328":1,"330":1,"333":1,"342":2,"350":1,"352":1,"353":3,"354":1,"361":1,"364":2,"365":2,"366":1,"369":1,"372":1,"373":1,"376":1,"377":2,"382":1,"391":1,"392":3,"393":1,"395":1,"396":2,"402":2,"410":1}}],["third",{"2":{"119":1,"352":1}}],["think",{"2":{"67":1,"156":1,"202":1,"418":1}}],["thing",{"2":{"53":1}}],["things",{"2":{"33":1,"265":1,"292":1}}],["this",{"2":{"6":2,"33":3,"35":5,"36":1,"41":2,"42":1,"43":1,"44":2,"45":1,"46":5,"47":1,"48":1,"49":1,"51":3,"52":1,"53":3,"54":2,"60":1,"62":2,"63":1,"64":2,"71":1,"74":1,"88":1,"95":1,"98":1,"103":1,"107":1,"111":1,"113":3,"114":1,"115":1,"118":5,"119":4,"120":3,"121":3,"122":5,"124":1,"128":3,"130":3,"131":1,"132":3,"133":2,"134":1,"135":1,"136":1,"137":1,"138":1,"139":7,"141":1,"142":1,"143":2,"144":2,"147":2,"151":1,"156":5,"157":1,"161":1,"182":7,"185":1,"190":2,"204":1,"212":1,"214":1,"216":2,"222":1,"224":1,"225":2,"248":2,"249":3,"250":5,"253":1,"254":1,"263":2,"265":1,"282":1,"283":1,"289":1,"291":1,"292":2,"293":2,"294":1,"295":2,"299":3,"300":3,"301":3,"303":1,"313":1,"318":1,"319":2,"321":2,"322":1,"326":1,"327":3,"328":2,"329":1,"330":1,"333":1,"335":1,"336":2,"340":1,"341":1,"342":1,"352":3,"353":3,"354":4,"360":1,"362":1,"364":2,"366":1,"369":1,"370":1,"371":1,"372":1,"373":1,"375":1,"377":1,"378":5,"382":1,"389":1,"393":1,"395":3,"396":1,"399":7,"401":1,"406":2}}],["thus",{"2":{"8":1}}],["these",{"2":{"54":1,"73":1,"78":1,"90":1,"99":2,"114":1,"116":1,"119":2,"120":1,"121":1,"140":1,"144":1,"147":1,"264":2,"288":2,"292":2,"313":1,"319":1,"327":1,"346":1,"350":1,"353":1,"354":1,"396":1}}],["then",{"2":{"33":1,"46":1,"49":1,"50":1,"53":2,"74":1,"125":2,"126":2,"151":1,"152":1,"156":1,"165":1,"182":3,"183":1,"186":1,"203":1,"210":1,"220":1,"250":2,"259":1,"261":1,"294":1,"303":1,"328":1,"363":1,"364":1,"399":3,"400":1,"402":1,"419":1}}],["themselves",{"2":{"114":1,"329":1,"352":1,"396":1}}],["theme=",{"2":{"128":2}}],["theme",{"0":{"168":1},"2":{"80":1,"157":2,"168":2}}],["them",{"2":{"8":1,"42":3,"69":1,"114":1,"130":1,"135":1,"144":1,"186":1,"206":1,"251":1,"260":1,"261":1,"264":1,"351":1,"385":1,"396":1,"402":1}}],["their",{"2":{"8":1,"69":1,"109":1,"110":3,"111":5,"112":3,"113":1,"114":4,"124":1,"139":1,"156":3,"157":1,"179":2,"182":3,"185":1,"186":3,"206":1,"249":1,"250":1,"288":1,"302":1,"308":1,"353":1,"369":1,"370":1,"385":1,"391":1,"392":3,"393":5,"394":3,"395":1,"396":4,"399":3,"401":1,"402":3}}],["they",{"2":{"8":1,"33":1,"42":1,"86":1,"87":1,"111":1,"120":1,"139":1,"157":1,"167":2,"179":1,"182":1,"186":3,"251":1,"252":1,"284":1,"313":1,"378":1,"393":1,"399":1,"402":3}}],["therefore",{"2":{"143":1,"245":1,"248":1}}],["there",{"2":{"6":1,"42":1,"119":2,"120":1,"124":1,"143":1,"147":1,"216":1,"225":1,"250":1,"253":1,"264":1,"265":1,"328":1,"329":1}}],["the",{"0":{"52":1,"53":1,"73":1,"74":1,"75":1,"76":1,"91":1,"92":1,"178":1,"181":1,"249":1,"250":1,"295":1,"300":1,"335":1,"336":1,"398":1},"1":{"93":1,"94":1,"336":1},"2":{"2":6,"4":3,"5":2,"6":11,"7":2,"8":9,"30":12,"31":1,"32":5,"33":11,"35":20,"36":5,"41":8,"42":2,"43":5,"44":14,"45":4,"46":16,"47":1,"48":1,"49":10,"50":2,"51":3,"52":1,"53":9,"54":8,"59":4,"60":2,"61":2,"62":7,"63":2,"64":67,"66":1,"67":1,"68":3,"69":2,"70":2,"71":2,"72":5,"73":4,"74":4,"75":6,"76":2,"77":1,"78":3,"80":5,"81":4,"82":2,"83":2,"84":2,"85":2,"86":7,"87":7,"88":5,"89":1,"90":4,"91":2,"92":2,"93":1,"94":3,"95":1,"96":3,"97":4,"98":2,"99":3,"101":1,"103":6,"107":1,"109":5,"110":7,"111":9,"112":1,"113":3,"114":9,"115":1,"118":3,"119":16,"120":11,"121":13,"122":7,"123":8,"124":4,"125":5,"126":5,"128":10,"130":4,"131":5,"132":6,"133":5,"134":4,"135":1,"136":4,"137":4,"138":4,"139":24,"140":5,"141":5,"142":4,"143":7,"144":5,"145":1,"146":1,"147":16,"148":1,"149":4,"150":12,"151":2,"152":2,"153":2,"154":1,"155":8,"156":7,"157":11,"158":1,"159":1,"161":2,"163":2,"166":3,"167":1,"168":2,"169":1,"170":1,"171":1,"172":1,"174":5,"175":2,"176":6,"177":1,"179":25,"181":1,"182":12,"183":8,"186":4,"189":1,"190":2,"191":2,"192":1,"193":4,"194":6,"195":2,"196":4,"197":4,"198":2,"200":1,"201":1,"202":1,"203":5,"204":5,"205":3,"206":2,"207":2,"208":2,"209":6,"210":3,"212":1,"213":1,"214":1,"215":3,"216":11,"217":3,"218":2,"219":2,"220":3,"222":1,"223":5,"224":1,"225":9,"226":3,"227":2,"228":2,"229":1,"232":2,"233":2,"235":2,"236":2,"238":1,"239":2,"241":2,"242":2,"244":1,"245":3,"246":1,"248":7,"249":13,"250":24,"251":4,"252":2,"253":3,"255":3,"256":2,"257":2,"258":2,"259":3,"260":8,"261":9,"262":8,"263":4,"264":2,"265":13,"266":1,"267":1,"268":1,"269":1,"270":3,"271":1,"272":2,"274":3,"275":1,"276":2,"278":1,"280":1,"281":1,"282":4,"283":4,"284":12,"285":2,"286":6,"287":1,"288":5,"289":2,"292":1,"293":3,"294":2,"295":2,"296":2,"298":2,"299":4,"300":5,"301":5,"302":2,"303":4,"308":5,"309":2,"310":1,"313":3,"316":8,"317":2,"318":8,"319":4,"320":5,"321":11,"322":6,"324":2,"325":3,"326":3,"327":17,"328":16,"329":4,"330":3,"331":4,"332":3,"333":14,"334":3,"335":6,"336":8,"340":7,"341":8,"342":13,"350":5,"351":4,"352":1,"353":11,"354":11,"359":4,"360":2,"361":2,"362":2,"363":4,"364":16,"365":18,"366":1,"367":2,"368":1,"370":1,"371":3,"372":9,"373":5,"374":1,"375":3,"376":1,"377":13,"378":8,"380":1,"382":2,"384":3,"385":2,"386":2,"389":1,"391":5,"392":7,"393":9,"394":1,"395":3,"396":9,"398":1,"399":12,"400":8,"402":4,"405":1,"406":2,"407":2,"408":1,"409":4,"410":6,"411":2,"412":4,"413":4,"414":2,"416":1,"417":1,"418":1,"419":5}}],["together",{"2":{"139":1,"140":2,"252":1,"260":1,"261":1}}],["toaddress",{"2":{"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":4,"284":4,"288":2}}],["tower",{"2":{"119":2}}],["too",{"2":{"156":2,"157":1,"204":1,"208":1,"218":1,"228":1,"244":1}}],["took",{"2":{"113":1,"395":1}}],["toolkit",{"2":{"67":1,"68":1,"202":1,"205":1,"384":1,"418":1}}],["tools=",{"2":{"128":2}}],["tools",{"0":{"148":1},"2":{"62":2,"67":1,"68":1,"128":2,"148":1,"202":1,"204":1,"205":1,"384":1,"418":1}}],["torus",{"0":{"114":1,"396":1},"2":{"111":3,"114":7,"393":3,"396":7}}],["toying",{"2":{"80":1}}],["topics",{"2":{"377":2}}],["top",{"2":{"62":1,"78":1,"81":3,"121":1,"147":1}}],["toml",{"2":{"50":1,"51":1}}],["toutf8bytes",{"2":{"46":1}}],["total",{"2":{"32":3}}],["tokenresponse",{"2":{"365":2}}],["tokenbaseuri",{"2":{"300":2}}],["tokenbalances",{"2":{"151":1,"152":1}}],["token4id",{"2":{"198":1,"414":1}}],["token2id",{"2":{"197":1,"413":1}}],["token1id",{"2":{"197":1,"413":1}}],["tokenmetadata",{"2":{"64":1}}],["tokencontract",{"2":{"42":2}}],["tokenids",{"2":{"307":1}}],["tokenidasstring",{"2":{"135":1,"137":1,"140":2}}],["tokenid",{"2":{"6":4,"35":1,"41":1,"49":3,"52":1,"53":1,"54":3,"64":4,"94":1,"138":1,"196":4,"197":1,"198":1,"301":2,"412":4,"413":1,"414":1}}],["tokens",{"0":{"6":1,"17":1,"18":1,"23":1,"24":1,"26":1,"195":1,"196":1,"197":1,"288":1,"411":1,"412":1,"413":1},"2":{"6":8,"8":1,"30":2,"32":3,"33":1,"35":1,"62":1,"133":1,"134":1,"135":1,"136":1,"137":2,"138":1,"176":1,"288":1,"289":1,"299":1,"301":1,"302":2,"303":4,"314":1}}],["token",{"0":{"13":1,"292":1},"2":{"5":1,"6":5,"30":7,"32":4,"33":2,"35":1,"62":1,"64":27,"109":1,"132":1,"133":4,"135":2,"137":4,"149":1,"195":4,"196":3,"197":3,"198":2,"291":1,"292":5,"293":4,"300":2,"301":2,"302":1,"303":2,"308":1,"353":1,"373":1,"391":1,"411":4,"412":3,"413":3,"414":2}}],["todo",{"0":{"184":1},"2":{"4":1,"59":1,"359":1,"378":1}}],["today",{"2":{"2":1,"30":1,"149":1}}],["to",{"0":{"49":1,"54":1,"131":1,"178":1,"290":1,"298":1,"331":1},"1":{"50":1,"51":1,"52":1,"53":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1},"2":{"2":5,"4":5,"5":2,"6":10,"8":4,"13":2,"30":6,"32":1,"33":11,"34":2,"35":16,"36":3,"41":2,"42":8,"43":6,"44":11,"45":1,"46":6,"47":1,"48":2,"49":6,"51":4,"52":1,"53":3,"54":4,"59":1,"60":2,"61":3,"62":2,"63":1,"64":4,"69":1,"70":1,"72":2,"73":3,"74":1,"75":1,"78":1,"82":1,"83":1,"84":1,"86":2,"87":2,"88":1,"89":1,"90":1,"91":1,"95":1,"96":6,"97":3,"98":1,"99":3,"103":4,"106":1,"107":2,"109":5,"110":4,"111":2,"112":1,"113":1,"114":7,"118":2,"119":10,"120":8,"121":6,"122":7,"123":3,"124":5,"125":2,"126":2,"128":6,"130":2,"131":5,"132":5,"133":5,"134":4,"135":1,"136":4,"137":2,"138":4,"139":16,"140":3,"141":1,"142":3,"143":6,"144":7,"146":2,"147":10,"148":4,"149":3,"150":3,"151":1,"152":1,"154":2,"155":5,"156":9,"157":10,"159":1,"163":1,"164":1,"166":1,"167":3,"170":1,"171":1,"172":1,"173":1,"174":2,"175":1,"176":5,"179":7,"181":1,"182":11,"183":4,"185":1,"186":3,"190":2,"192":1,"194":5,"195":7,"196":7,"197":7,"198":11,"203":2,"204":6,"206":1,"207":1,"210":1,"212":1,"213":1,"214":3,"215":1,"216":2,"218":1,"220":1,"222":1,"223":1,"224":3,"225":2,"226":1,"232":2,"233":1,"235":1,"238":1,"239":1,"241":2,"245":1,"248":1,"249":3,"250":2,"251":2,"252":1,"255":1,"260":1,"261":1,"262":2,"263":1,"264":2,"265":5,"266":1,"267":1,"268":1,"269":1,"270":2,"271":1,"274":2,"275":2,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":2,"283":5,"284":7,"285":3,"286":4,"287":1,"288":4,"289":3,"293":2,"294":1,"296":1,"298":1,"299":5,"300":4,"301":6,"302":2,"303":3,"305":1,"308":5,"309":1,"311":3,"313":2,"316":1,"317":2,"318":2,"319":1,"320":1,"321":3,"322":2,"323":1,"324":1,"325":1,"327":4,"328":8,"329":2,"330":1,"331":2,"333":2,"334":2,"335":3,"336":3,"339":1,"340":1,"342":2,"350":1,"351":2,"352":6,"353":1,"354":5,"359":1,"360":2,"361":3,"362":2,"363":2,"364":9,"365":7,"369":1,"370":4,"371":1,"372":1,"373":2,"374":2,"375":1,"377":3,"378":7,"382":3,"385":1,"386":1,"388":1,"389":2,"391":5,"392":4,"393":2,"394":1,"395":1,"396":7,"398":1,"399":11,"400":4,"401":1,"402":3,"406":2,"408":1,"410":5,"411":7,"412":7,"413":7,"414":11,"419":2}}],["azure",{"2":{"300":1}}],["awesome",{"2":{"156":1}}],["aware",{"2":{"183":1,"400":1}}],["away",{"2":{"139":1}}],["await",{"2":{"35":4,"41":2,"42":2,"46":1,"49":6,"54":3,"64":1,"131":2,"142":2,"143":2,"151":1,"155":1,"157":2,"158":1,"159":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"182":1,"183":2,"188":1,"189":1,"190":1,"191":2,"192":1,"194":1,"195":2,"196":3,"197":3,"198":2,"258":1,"259":1,"260":1,"261":1,"262":2,"265":2,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":2,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":2,"284":6,"286":3,"287":1,"288":5,"320":1,"340":1,"341":1,"363":2,"364":4,"365":3,"366":2,"367":3,"371":1,"372":2,"373":1,"374":1,"375":1,"377":2,"378":2,"399":1,"400":2,"404":1,"405":1,"406":1,"407":2,"408":1,"410":1,"411":2,"412":3,"413":3,"414":2}}],["aggregating",{"2":{"154":1}}],["against",{"2":{"114":1,"328":1,"336":1,"354":2,"396":1}}],["again",{"2":{"111":1,"165":1,"300":1,"393":1}}],["avoid",{"2":{"96":1,"157":1}}],["availability",{"2":{"30":1}}],["available",{"0":{"79":1},"1":{"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1},"2":{"7":1,"35":1,"60":1,"66":1,"70":1,"96":1,"109":1,"123":1,"124":1,"156":1,"157":1,"168":1,"172":1,"200":1,"201":1,"207":1,"208":1,"213":1,"217":3,"218":1,"223":1,"227":1,"228":1,"229":1,"234":1,"235":1,"243":1,"244":1,"246":1,"248":2,"263":1,"308":1,"313":1,"352":1,"360":1,"365":1,"386":1,"391":1,"416":1,"417":1}}],["after",{"2":{"44":1,"49":1,"115":1,"128":1,"147":1,"157":1,"166":2,"293":1,"317":1}}],["amazon",{"2":{"123":2,"352":1,"369":1}}],["amountasbiginteger",{"2":{"284":4}}],["amountasstring",{"2":{"133":1,"137":1,"140":2}}],["amount4",{"2":{"198":1,"414":1}}],["amount3",{"2":{"198":1,"414":1}}],["amountrequiredraw",{"2":{"93":1}}],["amount",{"2":{"54":1,"133":1,"134":1,"138":1,"139":1,"140":1,"175":2,"195":2,"197":1,"272":1,"301":1,"333":1,"411":2,"413":1}}],["amount2",{"2":{"42":1,"195":1,"196":1,"197":1,"198":1,"411":1,"412":1,"413":1,"414":1}}],["amount1",{"2":{"42":1,"195":1,"196":1,"197":1,"411":1,"412":1,"413":1}}],["amp",{"0":{"7":1,"31":1,"33":1,"316":1,"337":1},"1":{"317":1,"318":1,"319":1,"320":1,"321":1,"322":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,"336":1},"2":{"5":1,"13":2,"32":1,"36":1,"43":1,"75":2,"152":3,"365":2}}],["admire",{"0":{"302":1}}],["advantage",{"2":{"283":1}}],["advanced",{"0":{"251":1},"1":{"252":1},"2":{"73":1,"120":1,"132":1,"251":1}}],["adapter",{"2":{"255":1}}],["adjoining",{"2":{"64":1}}],["adhere",{"2":{"33":1}}],["addition",{"2":{"119":1,"143":1,"204":1,"250":1}}],["additional",{"2":{"95":1,"113":2,"127":1,"156":1,"204":1,"309":1,"334":1,"369":1,"370":2,"395":2}}],["additionally",{"2":{"72":1,"132":1,"150":1,"204":1}}],["adds",{"2":{"110":1,"392":1}}],["added",{"2":{"99":1,"114":1,"147":1,"210":1,"218":1,"220":1,"228":1,"396":1}}],["addresses",{"2":{"319":2,"327":3}}],["address",{"0":{"41":1,"181":1,"398":1},"2":{"32":2,"33":1,"35":6,"36":1,"41":4,"42":2,"43":1,"46":9,"49":10,"50":2,"52":4,"53":4,"54":5,"64":10,"123":1,"132":1,"134":1,"136":1,"138":1,"139":1,"143":1,"152":1,"157":1,"171":1,"181":3,"182":3,"183":3,"189":1,"195":2,"196":8,"197":8,"198":7,"203":1,"257":3,"271":1,"275":1,"283":1,"285":2,"286":2,"288":2,"293":1,"299":1,"301":4,"303":1,"318":1,"320":10,"328":1,"331":1,"336":2,"341":1,"364":1,"365":1,"366":2,"370":1,"377":2,"378":1,"398":3,"399":3,"400":3,"405":1,"411":2,"412":8,"413":8,"414":7,"419":1}}],["add",{"0":{"40":1,"41":1,"50":1},"2":{"4":1,"49":1,"51":2,"59":1,"72":1,"74":1,"90":1,"103":4,"114":2,"118":2,"120":3,"125":1,"126":1,"128":2,"143":1,"144":2,"151":1,"155":1,"157":1,"209":1,"215":1,"219":1,"226":1,"229":1,"352":1,"359":1,"382":4,"396":2}}],["achieves",{"2":{"353":1}}],["achievement",{"0":{"17":1,"18":1,"23":1,"24":1}}],["act",{"2":{"186":1,"402":1}}],["active",{"2":{"367":1}}],["activate",{"2":{"239":2}}],["activated",{"2":{"239":1}}],["activation",{"0":{"239":1}}],["activity",{"2":{"113":1,"128":4,"179":1,"395":1}}],["actions",{"2":{"186":1,"353":1,"375":1,"402":1}}],["action",{"2":{"128":8,"157":1,"186":1,"192":1,"305":1,"353":1,"373":2,"375":1,"402":1,"408":1}}],["acting",{"2":{"110":1,"392":1}}],["actor",{"2":{"110":1,"113":1,"114":1,"392":1,"395":1,"396":1}}],["actually",{"2":{"194":1,"410":1}}],["actual",{"2":{"52":1,"103":1,"155":1,"157":1,"182":1,"382":1,"399":1}}],["acquire",{"2":{"52":1,"60":1,"155":1,"360":1}}],["acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",{"2":{"377":2}}],["accomplished",{"2":{"63":1}}],["accounts",{"0":{"310":1},"1":{"311":1,"312":1},"2":{"124":1,"309":1,"310":2,"366":4}}],["accountaddress",{"2":{"64":4,"152":2}}],["account",{"2":{"35":3,"41":2,"42":2,"44":1,"45":1,"46":4,"54":1,"64":4,"99":1,"111":3,"114":1,"130":1,"152":1,"157":1,"182":1,"203":1,"216":1,"225":1,"293":1,"296":1,"352":1,"362":1,"363":1,"393":3,"396":1,"399":1,"419":1}}],["accepted",{"2":{"157":1}}],["accepts",{"2":{"132":1,"284":1}}],["accepting",{"2":{"44":1,"62":2,"130":1}}],["accessing",{"2":{"377":1}}],["accessible",{"2":{"6":2,"111":1,"393":1}}],["accessed",{"2":{"263":1,"350":1}}],["access",{"2":{"5":1,"13":1,"30":1,"33":1,"35":2,"41":1,"46":2,"49":8,"50":1,"54":1,"60":1,"61":1,"64":1,"73":1,"74":1,"97":1,"112":2,"114":1,"121":1,"122":1,"134":1,"136":1,"138":1,"149":1,"151":2,"155":2,"156":3,"157":2,"173":2,"352":3,"354":3,"360":1,"361":1,"363":1,"364":1,"365":1,"366":1,"367":1,"377":1,"378":1,"394":2,"396":1}}],["accurately",{"2":{"30":1}}],["across",{"2":{"30":1,"150":1}}],["ai",{"2":{"13":1}}],["audited",{"2":{"352":1}}],["audits",{"0":{"346":1},"1":{"347":1,"348":1,"349":1},"2":{"346":1}}],["audio",{"2":{"6":2}}],["autoconnect",{"2":{"210":1,"250":2}}],["auto",{"2":{"111":1,"393":1}}],["automatic",{"0":{"375":1},"2":{"43":1,"375":1}}],["automatically",{"2":{"8":1,"30":3,"75":1,"107":1,"116":1,"118":2,"120":1,"122":1,"161":1,"166":1,"170":1,"171":1,"182":3,"204":1,"297":1,"363":1,"389":1,"399":3}}],["authorizationmessage",{"2":{"190":2,"191":1,"406":2,"407":1}}],["authorization",{"0":{"190":1,"191":1,"406":1,"407":1},"2":{"183":1,"400":1}}],["authorized",{"2":{"191":2,"407":2}}],["authorizenonce",{"0":{"164":1},"2":{"164":2}}],["authorize",{"0":{"163":1},"2":{"157":1,"163":2,"182":2,"186":2,"190":1,"399":2,"402":2,"406":1}}],["authenticating",{"2":{"353":1}}],["authentication",{"0":{"122":1},"1":{"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1},"2":{"59":1,"86":1,"87":1,"103":1,"111":1,"122":4,"186":1,"359":1,"362":1,"370":1,"393":1,"402":1}}],["authenticates",{"2":{"354":1}}],["authenticate",{"0":{"180":1,"182":1,"183":1,"397":1,"399":1,"400":1},"1":{"181":1,"182":1,"183":1,"398":1,"399":1,"400":1},"2":{"155":1,"182":2,"183":1,"353":1,"362":1,"399":2,"400":1}}],["authenticated",{"2":{"61":1,"361":1}}],["auth",{"0":{"352":1,"365":1},"2":{"35":2,"41":1,"46":1,"54":2,"160":1,"170":1,"183":1,"352":1,"353":1,"354":2,"362":2,"363":1,"365":4,"368":1,"370":1,"400":1}}],["absolute",{"2":{"182":1,"399":1}}],["abstracted",{"2":{"139":1}}],["abstraction",{"2":{"8":1}}],["abis",{"2":{"139":1,"288":1}}],["abi",{"2":{"35":1,"54":1,"134":1,"136":1,"138":1,"139":5,"283":3,"284":1,"285":1,"288":1,"289":1,"342":1}}],["ability",{"2":{"35":1,"114":1,"396":1}}],["about",{"2":{"34":1,"42":1,"43":1,"157":1,"250":1,"303":1}}],["above",{"0":{"250":1},"2":{"6":2,"33":1,"41":1,"118":1,"132":2,"133":1,"139":1,"157":1,"182":1,"183":1,"248":1,"249":1,"250":2,"266":1,"269":1,"271":1,"273":1,"275":1,"340":1,"341":1,"399":1,"400":1}}],["able",{"2":{"33":1,"35":1,"114":1,"120":1,"156":3,"173":1,"176":1,"179":1,"340":1,"354":2,"396":1}}],["arcadeum",{"2":{"346":2}}],["architecture",{"0":{"351":1},"1":{"352":1,"353":1},"2":{"6":1}}],["argent",{"2":{"315":1}}],["argument",{"2":{"144":1,"372":1}}],["arguments",{"2":{"33":1,"122":1,"284":2}}],["arbitrary",{"2":{"139":1,"284":1,"289":1,"313":1}}],["arbitrum",{"2":{"35":1,"41":1,"64":1,"307":1}}],["array",{"2":{"86":1,"87":1,"140":1,"342":1}}],["arrive",{"2":{"53":1}}],["are",{"2":{"8":3,"32":1,"33":5,"46":1,"49":1,"54":1,"64":1,"86":1,"87":1,"88":2,"96":1,"99":1,"109":1,"111":3,"112":1,"114":1,"121":1,"122":1,"124":1,"132":2,"134":1,"136":1,"137":1,"138":1,"139":3,"140":1,"143":1,"144":1,"149":1,"156":2,"157":1,"158":1,"186":2,"203":2,"204":1,"209":1,"215":1,"216":1,"217":1,"225":1,"226":1,"250":1,"253":1,"256":1,"262":1,"264":2,"265":1,"284":1,"285":1,"299":1,"303":1,"308":1,"310":2,"313":3,"316":1,"319":1,"327":3,"328":1,"329":1,"331":1,"340":2,"341":1,"346":1,"351":2,"353":1,"354":3,"363":1,"365":1,"366":1,"375":1,"376":1,"377":1,"378":1,"391":1,"393":3,"394":1,"396":1,"402":2,"419":2}}],["arise",{"2":{"2":1}}],["aka",{"2":{"6":1}}],["atomic",{"2":{"330":1}}],["attested",{"2":{"352":1}}],["attempts",{"2":{"248":1}}],["attempt",{"2":{"118":1,"120":1,"223":1,"232":1,"233":1,"241":1}}],["attributes",{"0":{"299":1},"2":{"292":1,"299":1}}],["attacks",{"2":{"365":1}}],["attackers",{"2":{"352":1}}],["attacker",{"2":{"112":1,"354":2,"394":1}}],["attached",{"2":{"122":1,"147":1}}],["at",{"2":{"6":1,"35":1,"36":1,"44":1,"56":1,"70":1,"101":1,"106":1,"107":1,"111":1,"115":1,"121":2,"182":1,"207":1,"260":1,"261":1,"265":4,"271":2,"275":2,"284":1,"286":1,"292":1,"316":1,"317":1,"354":1,"356":1,"380":1,"386":1,"388":1,"389":1,"393":1,"399":1}}],["alternatively",{"2":{"179":2,"284":1,"286":1}}],["alongside",{"2":{"210":1,"220":1}}],["along",{"2":{"150":1,"300":1}}],["alpha",{"2":{"147":1}}],["always",{"2":{"64":2,"115":1,"179":1,"183":1,"303":1,"332":1,"333":1,"353":1,"378":1,"400":1}}],["alias",{"2":{"44":2}}],["already",{"2":{"36":1,"70":1,"118":1,"120":2,"128":2,"157":1,"170":1,"171":1,"172":1,"179":2,"207":1,"283":1,"301":1,"363":1,"386":1}}],["also",{"2":{"6":1,"33":2,"35":3,"42":1,"43":1,"66":1,"67":1,"95":1,"96":1,"103":1,"109":1,"118":1,"119":1,"144":1,"149":1,"157":2,"176":1,"179":1,"200":1,"201":1,"202":1,"204":3,"214":1,"224":1,"288":2,"289":1,"308":1,"313":1,"328":1,"336":1,"341":1,"353":1,"354":1,"365":1,"382":1,"391":1,"416":1,"417":1,"418":1}}],["allowlists",{"2":{"353":1}}],["allowed",{"2":{"329":1,"353":1}}],["allowing",{"2":{"72":1,"139":1,"156":1}}],["allows",{"2":{"42":1,"109":1,"113":1,"139":1,"140":2,"156":1,"182":3,"250":2,"255":1,"299":1,"308":1,"309":1,"313":1,"318":1,"321":1,"325":1,"391":1,"395":1,"399":3}}],["allow",{"2":{"8":3,"49":3,"124":1,"134":1,"136":1,"138":1,"156":1,"171":1,"176":1,"339":1,"350":1}}],["all",{"0":{"249":1},"2":{"4":1,"30":3,"32":4,"33":2,"42":1,"62":1,"64":1,"66":1,"69":1,"88":1,"106":1,"107":1,"111":1,"114":1,"123":1,"124":1,"134":1,"136":1,"138":1,"139":1,"140":3,"141":1,"156":1,"173":1,"183":1,"201":1,"204":2,"206":1,"214":1,"224":1,"248":1,"249":1,"250":2,"251":1,"260":1,"261":1,"289":1,"292":1,"294":1,"295":1,"318":1,"321":1,"328":1,"333":1,"352":1,"385":1,"388":1,"389":1,"393":1,"396":1,"400":1,"417":1}}],["apk",{"2":{"128":2}}],["appprops",{"2":{"250":1}}],["appprotocol",{"0":{"160":1}}],["appended",{"2":{"300":1}}],["append",{"2":{"155":1}}],["appear",{"2":{"139":1}}],["appears",{"2":{"96":1,"139":1}}],["appropriate",{"2":{"121":1,"139":1,"147":1,"215":1,"226":1,"282":1,"284":1}}],["approach",{"2":{"35":1,"131":1,"142":1,"143":1}}],["applicable",{"2":{"227":2}}],["application",{"2":{"44":1,"52":1,"53":1,"69":1,"70":1,"71":1,"73":1,"121":1,"124":2,"128":4,"143":1,"154":1,"185":1,"186":1,"193":1,"206":1,"207":1,"216":1,"225":1,"249":4,"250":1,"307":1,"350":1,"362":1,"365":2,"385":1,"386":1,"401":1,"402":1,"409":1}}],["applications",{"0":{"205":1,"384":1},"1":{"206":1,"385":1},"2":{"2":1,"33":1,"68":1,"182":1,"183":1,"186":2,"205":1,"251":1,"352":1,"384":1,"399":1,"400":1,"402":2}}],["apply",{"2":{"147":3}}],["appleid",{"2":{"114":1,"396":1}}],["apple",{"0":{"365":1},"2":{"86":1,"124":1,"170":1,"172":1,"364":1,"365":1}}],["appname",{"0":{"233":1,"242":1},"2":{"73":1,"74":1,"97":1,"230":1,"238":3,"242":1}}],["app`",{"2":{"54":1}}],["apps",{"2":{"30":1,"144":1}}],["app",{"0":{"159":1,"250":1},"2":{"6":8,"43":1,"45":1,"46":1,"49":1,"53":1,"54":2,"64":3,"73":4,"74":3,"77":1,"78":1,"90":2,"97":4,"106":1,"107":1,"128":1,"146":1,"150":2,"151":2,"152":2,"155":1,"156":1,"157":2,"159":3,"182":1,"183":1,"204":1,"210":2,"212":1,"213":1,"216":5,"217":5,"220":2,"222":1,"223":1,"225":5,"227":4,"230":1,"233":1,"238":1,"243":1,"248":2,"249":1,"250":3,"251":1,"303":2,"307":1,"352":1,"354":1,"365":1,"388":1,"389":1,"399":1,"400":1}}],["apis",{"2":{"49":1,"53":1,"119":1,"350":1}}],["api",{"0":{"4":1,"5":1,"8":1,"307":1},"1":{"6":1,"7":1},"2":{"4":3,"5":4,"6":1,"8":1,"30":4,"43":2,"44":1,"49":5,"60":1,"64":1,"115":1,"119":1,"121":2,"123":1,"149":3,"150":4,"151":2,"263":1,"306":1,"307":1,"360":1,"364":1,"378":1}}],["announced",{"2":{"159":1}}],["another",{"2":{"111":1,"150":1,"353":1,"393":1}}],["animation",{"2":{"6":2}}],["an",{"0":{"9":1,"11":1,"19":1,"25":1,"46":1,"248":1,"307":1},"1":{"47":1,"48":1},"2":{"6":5,"32":1,"33":1,"35":1,"42":2,"43":1,"44":2,"46":2,"53":1,"54":1,"64":4,"67":1,"77":1,"96":4,"99":1,"111":1,"112":1,"118":1,"122":1,"123":1,"124":1,"131":2,"132":1,"133":3,"134":2,"135":3,"136":2,"137":3,"138":2,"139":4,"141":1,"142":2,"143":2,"144":2,"147":1,"151":1,"156":2,"163":1,"164":1,"171":1,"175":1,"179":1,"182":2,"183":1,"185":1,"195":1,"196":2,"197":2,"202":1,"204":1,"215":1,"216":2,"225":2,"226":1,"233":1,"234":2,"246":1,"248":1,"250":3,"254":1,"255":2,"260":2,"261":2,"262":1,"283":1,"284":2,"285":3,"286":1,"288":2,"289":1,"293":1,"299":1,"318":1,"327":1,"328":1,"333":1,"350":2,"353":1,"354":2,"362":1,"363":1,"364":6,"367":1,"369":1,"372":1,"373":1,"378":3,"393":1,"394":1,"399":2,"400":1,"401":1,"411":1,"412":2,"413":2,"418":1}}],["android=",{"2":{"128":2}}],["androidmanifest",{"2":{"128":1}}],["android",{"0":{"128":1},"2":{"116":1,"128":41}}],["and",{"0":{"6":1,"44":1,"46":1,"158":1,"188":1,"249":1,"250":2,"292":1,"302":1,"344":1,"404":1},"1":{"45":1,"47":1,"48":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1},"2":{"2":1,"4":3,"5":3,"6":6,"8":4,"30":11,"33":5,"34":1,"36":1,"42":1,"43":5,"44":4,"45":1,"46":3,"49":6,"52":4,"53":5,"54":6,"59":1,"60":1,"64":3,"66":1,"67":1,"68":1,"69":3,"71":1,"72":2,"77":1,"86":1,"87":1,"91":1,"95":1,"96":1,"97":1,"98":1,"99":3,"103":1,"109":1,"111":3,"113":1,"114":5,"115":2,"118":2,"119":3,"120":4,"121":4,"122":3,"123":2,"125":1,"126":1,"128":4,"130":1,"131":4,"132":4,"133":1,"134":2,"135":1,"136":2,"137":1,"138":2,"139":4,"140":1,"142":1,"143":4,"144":3,"146":1,"147":3,"148":1,"149":2,"150":5,"153":1,"154":1,"155":3,"156":6,"157":5,"161":2,"163":1,"167":1,"177":1,"179":2,"182":3,"183":1,"186":3,"189":1,"193":1,"198":1,"201":1,"202":1,"204":2,"205":1,"206":3,"210":1,"217":1,"220":1,"223":1,"239":1,"245":1,"248":4,"249":2,"250":7,"251":1,"252":1,"258":1,"259":1,"260":2,"261":2,"262":1,"263":1,"264":1,"265":1,"266":1,"269":1,"271":1,"273":1,"275":1,"276":1,"281":1,"282":1,"283":2,"284":3,"286":2,"288":2,"289":2,"292":1,"293":2,"296":1,"297":1,"299":1,"300":2,"301":1,"302":2,"303":1,"308":1,"309":1,"313":1,"322":2,"328":1,"332":1,"333":1,"336":1,"339":1,"340":2,"341":1,"342":2,"346":1,"350":3,"352":4,"353":5,"359":1,"360":1,"363":1,"365":4,"366":1,"371":2,"378":1,"384":1,"385":3,"391":1,"393":3,"395":1,"396":5,"399":3,"400":1,"402":3,"405":1,"409":1,"414":1,"417":1,"418":1}}],["anywhere",{"2":{"131":1,"142":1,"143":1}}],["anyway",{"2":{"41":1}}],["anyone",{"2":{"53":1,"352":1}}],["anything",{"2":{"33":1,"157":1}}],["any",{"0":{"178":1},"2":{"2":1,"8":2,"30":1,"32":3,"33":1,"35":3,"36":1,"41":1,"42":1,"44":1,"49":6,"61":1,"64":1,"106":1,"107":1,"115":1,"119":1,"120":1,"122":1,"134":1,"136":1,"138":1,"139":1,"140":1,"148":1,"149":1,"156":3,"157":1,"179":1,"183":1,"285":1,"288":1,"289":1,"300":1,"301":1,"327":2,"334":1,"346":1,"354":1,"361":1,"365":1,"367":2,"376":1,"377":1,"378":1,"388":1,"389":1,"400":1}}],["answered",{"2":{"44":1}}],["answer",{"2":{"2":2,"364":2}}],["asking",{"2":{"182":1,"370":1,"399":1}}],["ask",{"0":{"181":1,"398":1},"2":{"167":1,"195":1,"411":1}}],["askforemail",{"0":{"167":1},"2":{"167":2}}],["asks",{"2":{"119":1}}],["aspects",{"2":{"362":1}}],["aspect",{"2":{"157":2,"169":1}}],["assured",{"2":{"352":1}}],["assumes",{"2":{"157":1}}],["assume",{"2":{"36":1}}],["assigned",{"2":{"317":2}}],["assembled",{"2":{"284":1}}],["assets",{"2":{"6":1,"47":1,"88":5,"118":1,"119":2,"121":2,"128":1,"147":1}}],["assetid",{"2":{"6":2}}],["assetidorassettype",{"2":{"6":1}}],["assettype",{"2":{"6":3}}],["asset",{"2":{"6":6}}],["asstring",{"2":{"262":2}}],["associated",{"2":{"189":1,"342":1,"405":1}}],["association",{"2":{"122":1}}],["asynchronous",{"2":{"131":1,"142":1,"143":1,"251":1}}],["async",{"2":{"35":2,"41":1,"46":1,"49":5,"54":2,"93":1,"131":1,"142":1,"143":1,"155":1,"239":2,"251":1,"284":1,"365":3}}],["as",{"0":{"104":1,"383":1},"2":{"2":2,"6":2,"8":1,"33":2,"41":1,"44":2,"49":4,"53":1,"54":1,"60":1,"61":1,"64":3,"67":1,"69":1,"72":1,"73":1,"74":1,"86":1,"87":1,"96":2,"104":1,"109":1,"114":1,"119":2,"120":2,"122":1,"124":1,"130":2,"131":1,"132":5,"133":1,"135":1,"137":2,"139":4,"140":1,"143":1,"144":4,"147":1,"150":3,"164":1,"175":1,"179":2,"182":1,"183":2,"186":2,"194":1,"195":2,"196":2,"197":2,"198":1,"202":1,"203":1,"206":1,"212":1,"222":1,"239":1,"241":1,"248":1,"255":1,"260":1,"261":1,"263":1,"264":1,"265":1,"266":1,"269":1,"271":1,"273":1,"274":1,"275":1,"283":2,"284":2,"286":3,"288":1,"289":1,"292":1,"293":1,"301":2,"308":1,"309":1,"313":1,"320":1,"321":1,"340":4,"341":3,"342":1,"346":1,"350":1,"351":1,"360":1,"361":1,"363":1,"364":4,"372":1,"373":1,"383":1,"385":1,"391":1,"396":1,"399":1,"400":2,"402":2,"410":1,"411":2,"412":2,"413":2,"414":1,"418":1,"419":1}}],["a",{"0":{"13":1,"15":1,"16":1,"21":1,"22":1,"27":1,"34":1,"37":1,"43":1,"44":1,"54":1,"56":1,"96":1,"101":1,"155":1,"189":1,"198":1,"249":1,"250":1,"305":1,"356":1,"380":1,"405":1,"414":1},"1":{"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"44":1,"45":2,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1},"2":{"2":1,"4":2,"5":1,"8":6,"13":2,"30":6,"32":4,"33":1,"34":1,"35":16,"36":4,"41":5,"42":2,"43":7,"44":4,"45":2,"46":5,"48":1,"49":9,"51":1,"52":2,"53":2,"54":4,"57":1,"60":1,"61":2,"62":2,"63":2,"64":4,"66":1,"68":2,"69":3,"70":1,"73":1,"80":2,"86":2,"87":2,"88":1,"91":1,"93":1,"96":5,"97":1,"98":1,"99":5,"102":1,"103":2,"104":1,"109":1,"110":7,"111":5,"113":3,"114":6,"115":3,"118":4,"119":8,"120":3,"121":5,"122":4,"123":2,"124":2,"128":3,"130":3,"131":6,"132":11,"133":1,"134":4,"136":4,"137":1,"138":4,"139":8,"140":5,"141":1,"142":2,"143":8,"144":6,"145":1,"147":3,"148":1,"149":1,"150":2,"154":1,"155":4,"156":6,"157":4,"158":1,"165":1,"169":2,"170":1,"175":1,"177":2,"179":1,"182":6,"183":2,"185":1,"186":7,"189":1,"190":1,"192":1,"193":1,"194":2,"195":4,"196":3,"197":3,"198":1,"201":1,"203":4,"204":2,"205":2,"206":3,"207":1,"208":1,"213":1,"214":1,"217":4,"218":1,"223":1,"224":1,"227":3,"228":1,"242":1,"243":1,"244":1,"249":3,"250":10,"251":1,"253":1,"254":4,"255":3,"256":1,"260":5,"261":5,"262":2,"263":7,"264":2,"265":3,"266":1,"267":1,"269":2,"271":3,"272":1,"273":1,"275":2,"276":2,"277":1,"279":1,"280":1,"281":1,"282":1,"283":6,"284":7,"285":1,"286":4,"287":1,"288":3,"289":1,"291":1,"292":2,"294":1,"295":1,"301":1,"302":1,"305":1,"306":1,"308":1,"309":1,"310":1,"317":2,"319":1,"320":1,"321":1,"322":1,"325":1,"327":2,"328":1,"330":2,"332":1,"333":1,"335":1,"336":3,"340":1,"341":2,"350":1,"351":2,"352":6,"353":2,"354":1,"357":1,"360":1,"361":2,"362":1,"363":3,"364":3,"365":6,"366":1,"367":1,"369":2,"370":2,"372":2,"373":4,"377":2,"378":2,"381":1,"382":2,"383":1,"384":2,"385":3,"386":1,"391":1,"392":7,"393":5,"395":3,"396":6,"399":6,"400":2,"401":1,"402":7,"405":1,"406":1,"408":1,"409":1,"410":2,"411":4,"412":3,"413":3,"414":1,"417":1,"419":4}}],["slot",{"2":{"320":5}}],["sfts",{"2":{"137":1}}],["switching",{"2":{"122":1}}],["small",{"2":{"194":1,"410":1}}],["smart",{"0":{"284":1,"309":1,"313":1},"1":{"310":1,"311":1,"312":1,"313":1,"314":2,"315":1},"2":{"34":1,"36":2,"64":1,"99":1,"130":1,"134":1,"136":1,"138":1,"139":3,"140":3,"143":4,"183":1,"271":1,"284":2,"285":1,"286":2,"309":2,"313":2,"327":1,"351":1,"352":1,"400":1}}],["smooth",{"2":{"68":1,"69":1,"205":1,"206":1,"384":1,"385":1}}],["synonymous",{"2":{"346":1}}],["symbol",{"2":{"64":2,"288":2}}],["system",{"2":{"59":1,"103":1,"116":2,"119":1,"120":1,"146":1,"309":1,"350":1,"359":1,"362":1}}],["skipfetchsetup",{"2":{"54":2}}],["shape=",{"2":{"365":1}}],["share",{"0":{"98":1},"2":{"53":1,"98":1,"167":1}}],["showing",{"2":{"295":1}}],["show",{"2":{"174":1,"233":1}}],["showcases",{"2":{"119":1}}],["showemailinput",{"0":{"85":1}}],["shown",{"2":{"83":1,"84":1,"85":1,"86":1,"87":1,"94":1}}],["should",{"2":{"35":2,"44":1,"45":1,"51":1,"52":1,"53":3,"54":1,"96":1,"103":1,"112":1,"118":1,"120":1,"169":1,"193":1,"251":2,"266":1,"269":1,"271":1,"273":1,"275":1,"288":1,"292":1,"293":1,"299":1,"300":1,"330":1,"333":4,"335":1,"373":1,"382":1,"394":1,"409":1}}],["src=",{"2":{"104":2,"383":2}}],["src",{"2":{"49":1}}],["snippet",{"2":{"46":1,"130":1,"132":1,"133":1,"135":1,"137":1,"139":1,"143":1,"183":1,"263":1,"400":1}}],["scenario",{"2":{"354":5}}],["scenarios",{"2":{"311":1,"354":1}}],["scene",{"2":{"118":1,"119":2,"120":1,"122":1,"144":1,"147":3}}],["scenes",{"2":{"30":1,"282":1}}],["scope",{"2":{"186":1,"340":1,"341":1,"364":1,"402":1}}],["schema",{"2":{"150":1}}],["schemas",{"2":{"128":4}}],["scheme=",{"2":{"128":2}}],["scheme",{"0":{"147":1},"2":{"121":1,"124":2,"125":1,"126":1,"128":3,"147":3}}],["schemes",{"2":{"116":1,"125":1,"126":1}}],["scroll",{"2":{"125":1,"126":1,"300":1,"301":1}}],["scripts",{"2":{"119":1,"143":1}}],["scripting",{"2":{"119":1}}],["scriptableobject",{"2":{"121":3}}],["scriptable",{"2":{"118":1,"147":3,"263":1}}],["script",{"2":{"104":5,"118":1,"119":1,"147":1,"383":5}}],["screen",{"2":{"81":1,"122":1,"159":1,"298":1}}],["scratch",{"2":{"44":1}}],["scan",{"2":{"179":1,"245":1}}],["scanned",{"2":{"179":2}}],["scaled",{"2":{"122":1}}],["scale",{"2":{"122":2,"154":1}}],["scaler",{"2":{"122":1}}],["scaling",{"2":{"43":1}}],["scaffold",{"2":{"49":1}}],["sdks",{"2":{"59":1,"60":1,"103":1,"150":1,"153":1,"204":1,"359":1,"360":1}}],["sdk",{"0":{"59":1,"68":1,"359":1},"1":{"69":1},"2":{"35":1,"59":3,"61":1,"66":1,"103":5,"115":2,"119":4,"120":6,"121":2,"122":1,"123":1,"128":5,"130":1,"134":1,"136":1,"138":1,"140":1,"141":1,"144":2,"183":1,"201":1,"204":1,"253":1,"359":3,"361":1,"362":1,"364":3,"365":2,"378":1,"382":2,"400":1,"417":1}}],["salt",{"2":{"316":1,"328":1}}],["savings",{"2":{"140":1}}],["saves",{"2":{"147":1}}],["save",{"2":{"44":1,"119":1,"154":1}}],["sample",{"2":{"119":8,"121":1,"145":1,"150":1,"365":1}}],["samples",{"0":{"119":1},"2":{"118":2,"119":3}}],["same",{"2":{"35":1,"41":1,"137":1,"150":1,"182":1,"198":1,"212":1,"222":1,"255":1,"333":1,"363":1,"399":1,"414":1}}],["safeguards",{"2":{"354":1}}],["safeguarding",{"2":{"112":1,"394":1}}],["safe",{"2":{"315":1,"354":1}}],["safety",{"2":{"289":1}}],["safetransferfrom",{"2":{"35":2,"41":2,"196":5,"197":5,"198":4,"412":5,"413":5,"414":4}}],["safemint",{"2":{"136":2}}],["safer",{"2":{"120":1}}],["sardine",{"2":{"109":1,"308":1,"391":1}}],["sadfasdf",{"2":{"3":1}}],["socialauthoptions",{"0":{"86":1},"2":{"97":2}}],["social",{"0":{"111":1,"124":1,"370":1,"393":1},"1":{"112":1,"113":1,"114":1,"125":1,"126":1,"127":1,"128":1,"129":1,"394":1,"395":1,"396":1},"2":{"69":1,"86":1,"110":1,"111":3,"114":2,"116":2,"118":1,"121":1,"124":2,"130":1,"206":1,"314":1,"352":1,"363":1,"364":1,"365":1,"370":1,"371":1,"385":1,"392":1,"393":3,"396":2}}],["sourced",{"2":{"204":1}}],["source",{"2":{"49":1,"64":1,"67":1,"104":1,"119":1,"139":2,"150":1,"157":1,"202":1,"208":1,"218":1,"228":1,"244":1,"352":1,"383":1,"418":1}}],["sources",{"2":{"33":2}}],["solidity",{"2":{"46":1}}],["solutions",{"2":{"4":1,"151":1}}],["so",{"2":{"30":1,"33":1,"43":1,"46":2,"96":1,"121":1,"122":2,"139":2,"148":1,"183":1,"249":1,"255":1,"283":2,"288":2,"300":1,"313":1,"329":1,"331":1,"352":1,"400":1}}],["soon",{"0":{"28":1,"148":1},"2":{"129":1,"352":1}}],["something",{"2":{"103":1,"130":1,"131":2,"142":1,"143":2,"292":1,"300":1,"382":1}}],["someone",{"2":{"53":1}}],["some",{"2":{"8":1,"52":2,"53":4,"116":1,"119":3,"120":1,"124":1,"139":1,"143":1,"144":3,"147":1,"157":1,"203":1,"248":1,"252":1,"311":1,"363":1,"419":1}}],["space",{"2":{"42":1,"314":1}}],["spaces",{"2":{"42":3}}],["spam",{"0":{"33":1},"2":{"33":2,"64":1}}],["special",{"2":{"143":1,"157":1,"216":1,"225":1,"265":1,"266":1,"269":1,"271":1,"273":1,"275":1}}],["specify",{"2":{"109":1,"157":1,"158":1,"170":1,"171":1,"172":1,"175":1,"308":1,"391":1}}],["specifying",{"2":{"97":1}}],["specified",{"2":{"175":1,"176":1,"195":1,"267":1,"269":1,"271":1,"411":1}}],["specifies",{"2":{"93":1,"94":1}}],["specific",{"2":{"8":1,"30":1,"35":5,"41":1,"46":1,"53":1,"80":1,"103":1,"124":1,"179":1,"186":1,"266":1,"303":1,"382":1,"402":1}}],["specs",{"2":{"43":1}}],["speed",{"2":{"34":1,"43":1}}],["sponsoring",{"0":{"36":1,"48":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1},"2":{"35":1,"36":1}}],["sponsor",{"0":{"46":1},"1":{"47":1,"48":1},"2":{"8":1,"13":1,"43":1,"48":2}}],["sponsored",{"0":{"41":1},"2":{"8":1,"36":1,"46":1,"54":1}}],["s",{"2":{"6":1,"33":1,"42":1,"49":2,"66":1,"75":1,"78":1,"86":1,"87":1,"96":2,"110":1,"112":1,"114":1,"115":1,"119":1,"130":1,"139":1,"146":1,"157":1,"161":1,"164":1,"179":1,"181":1,"183":1,"186":2,"190":1,"201":1,"203":1,"233":1,"250":1,"294":1,"301":1,"313":2,"318":1,"321":1,"322":1,"329":1,"333":1,"335":1,"342":1,"352":1,"353":3,"354":1,"364":1,"370":1,"372":1,"392":1,"394":1,"396":1,"398":1,"400":1,"402":2,"406":1,"417":1,"419":1}}],["sufficient",{"2":{"370":1}}],["sufficiently",{"2":{"35":1}}],["suffix",{"2":{"300":1}}],["suggestgastipcap",{"0":{"278":1},"2":{"278":1}}],["suggestgasprice",{"0":{"277":1},"2":{"277":1}}],["suggested",{"2":{"277":1,"278":1}}],["surf",{"2":{"156":1}}],["sure",{"2":{"44":1,"49":4,"96":1,"128":1,"133":2,"150":1}}],["suit",{"2":{"146":1}}],["suspicious",{"2":{"113":1,"395":1}}],["subject",{"2":{"366":2}}],["submits",{"2":{"258":1,"259":1,"260":1,"261":1}}],["submit",{"2":{"144":1,"148":1,"276":1}}],["submitted",{"2":{"140":1,"260":3,"261":3}}],["subsequent",{"0":{"334":1}}],["subscribe",{"2":{"130":1}}],["substitute",{"2":{"128":2}}],["sub",{"2":{"103":3,"382":3}}],["subdomain",{"2":{"52":1,"53":1}}],["summary",{"0":{"94":1},"2":{"94":1}}],["succeeded",{"2":{"179":1,"377":2,"378":1}}],["success",{"2":{"52":1}}],["successfulcontractdeploymentreturn",{"2":{"143":1}}],["successfultransactionreturn",{"2":{"131":1}}],["successfully",{"2":{"123":1,"124":1,"365":1,"377":1}}],["successful",{"0":{"377":1},"2":{"35":2,"41":1,"376":1}}],["such",{"2":{"6":2,"52":1,"69":1,"72":1,"96":1,"114":2,"182":1,"206":1,"216":1,"225":1,"248":1,"250":1,"354":1,"373":1,"374":1,"385":1,"396":2,"399":1}}],["supplement",{"2":{"119":1}}],["supply",{"2":{"32":2}}],["supplies",{"2":{"32":1}}],["supports",{"2":{"67":1,"109":1,"177":1,"179":2,"202":1,"308":1,"391":1,"418":1}}],["supported",{"0":{"31":1},"2":{"31":1,"110":1,"125":1,"126":1,"150":1,"152":1,"170":2,"174":1,"212":1,"222":1,"313":1,"364":1,"365":1,"392":1}}],["support",{"0":{"2":1,"203":1,"419":1},"2":{"2":3,"30":2,"49":1,"50":1,"95":1,"99":1,"107":1,"109":1,"132":1,"151":1,"156":1,"204":1,"308":1,"314":1,"327":1,"339":1,"352":1,"370":1,"389":1,"391":1}}],["super",{"2":{"30":1}}],["straightforward",{"2":{"283":1}}],["structured",{"0":{"341":1},"2":{"341":1}}],["structure",{"2":{"216":2,"217":2,"225":2,"227":2,"248":3,"250":2}}],["streamlining",{"2":{"186":1,"402":1}}],["strictmode",{"2":{"365":2}}],["strictly",{"2":{"283":1}}],["stripe",{"2":{"156":1}}],["stringify",{"2":{"49":3}}],["string",{"2":{"35":1,"46":1,"49":9,"52":1,"53":1,"54":2,"64":24,"88":1,"121":1,"132":1,"134":1,"136":1,"138":1,"139":1,"142":1,"143":2,"182":1,"258":1,"260":3,"262":2,"263":1,"265":3,"267":1,"268":1,"270":1,"271":1,"274":2,"276":2,"283":2,"285":5,"287":1,"288":1,"327":1,"340":1,"341":2,"399":1}}],["store",{"2":{"189":1,"316":1,"405":1}}],["stored",{"2":{"110":1,"112":1,"186":1,"193":1,"320":1,"392":1,"394":1,"402":1,"409":1}}],["storage",{"2":{"186":1,"189":1,"193":1,"316":1,"320":2,"402":1,"405":1,"409":1}}],["style",{"2":{"128":2}}],["styling",{"2":{"80":1}}],["still",{"2":{"115":1,"120":1,"143":1,"144":2,"186":1,"203":1,"328":1,"354":1,"366":1,"402":1,"419":1}}],["step",{"0":{"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1},"2":{"6":1,"36":1,"44":3,"49":1,"53":1,"54":1,"63":1,"121":1,"363":1}}],["steps",{"0":{"70":1,"207":1,"386":1},"2":{"5":1,"6":2,"36":1,"43":2,"46":1,"52":1,"54":2,"73":1,"90":1,"127":1}}],["static",{"2":{"141":1}}],["state",{"2":{"120":1,"336":1,"365":1}}],["status",{"0":{"371":1},"1":{"372":1,"373":1,"374":1},"2":{"35":6,"41":3,"49":10,"75":1,"371":1,"377":3}}],["standalone",{"2":{"116":2}}],["standard",{"2":{"107":1,"133":1,"134":1,"135":1,"136":1,"137":2,"138":1,"183":1,"196":1,"197":1,"198":1,"203":2,"204":1,"254":1,"288":1,"339":1,"389":1,"400":1,"412":1,"413":1,"414":1,"419":2}}],["standardized",{"2":{"49":1,"50":1}}],["standards",{"2":{"33":1,"156":1}}],["startingblocknumber",{"2":{"269":1}}],["starting",{"2":{"96":1,"119":1}}],["starter",{"2":{"44":1}}],["started",{"0":{"32":1,"58":1,"71":1,"358":1},"1":{"59":1,"60":1,"61":1,"72":1,"359":1,"360":1,"361":1},"2":{"30":1,"57":1,"70":1,"72":1,"102":1,"106":1,"107":1,"149":1,"207":1,"306":1,"357":1,"381":1,"386":1,"388":1,"389":1}}],["start",{"2":{"2":1,"60":1,"61":1,"360":1,"361":1}}],["stack",{"0":{"1":1},"2":{"2":1,"62":1,"154":1}}],["silently",{"2":{"251":1,"374":1}}],["situations",{"2":{"248":1}}],["situation",{"2":{"203":1,"419":1}}],["site",{"2":{"44":1}}],["simulation",{"2":{"378":1}}],["simulations",{"2":{"377":1,"378":1}}],["simulating",{"2":{"378":1}}],["similarly",{"2":{"238":1,"239":1,"260":1,"261":1,"364":1}}],["similar",{"2":{"122":1,"131":1,"196":1,"197":1,"289":1,"341":1,"412":1,"413":1}}],["simply",{"2":{"6":2,"119":1,"140":1,"150":1,"284":1,"286":1,"293":1}}],["simpler",{"2":{"182":1,"399":1}}],["simple",{"2":{"4":1,"5":1,"8":1,"30":1,"62":1,"149":1,"156":1,"182":1,"301":1,"311":1,"352":1,"365":1,"399":1}}],["size",{"2":{"122":1,"125":1,"126":1}}],["since",{"2":{"99":1,"112":1,"119":1,"140":1,"273":1,"288":1,"332":1,"333":1,"394":1}}],["singlesigner",{"2":{"35":2,"41":1,"46":1,"54":1}}],["single",{"2":{"8":1,"54":1,"99":1,"103":1,"110":1,"137":1,"140":1,"154":1,"195":3,"196":2,"197":2,"198":1,"260":1,"261":1,"294":1,"310":1,"382":1,"392":1,"411":3,"412":2,"413":2,"414":1}}],["side",{"0":{"183":1,"400":1},"2":{"35":1,"183":1,"186":1,"191":1,"192":1,"193":1,"203":1,"216":1,"225":1,"354":1,"400":1,"402":1,"407":1,"408":1,"409":1,"419":1}}],["signtransactions",{"2":{"194":1,"410":1}}],["sign+verify",{"2":{"182":1,"399":1}}],["signedtransactionstring",{"2":{"276":1}}],["signedmessage",{"2":{"262":2}}],["signed",{"0":{"340":1},"2":{"157":2,"170":1,"171":1,"172":1,"182":3,"183":1,"186":1,"194":1,"276":1,"340":3,"341":1,"342":1,"399":3,"400":1,"402":1,"410":1}}],["signer2",{"2":{"42":2}}],["signer1",{"2":{"42":2}}],["signers",{"2":{"42":1,"316":1,"319":1,"321":1,"322":1,"326":1,"327":4,"340":1,"341":1,"351":1}}],["signer",{"0":{"352":1,"353":1},"2":{"35":7,"41":4,"46":3,"54":4,"188":2,"190":1,"194":2,"195":4,"196":4,"197":4,"198":4,"321":1,"404":2,"406":1,"410":2,"411":4,"412":4,"413":4,"414":4}}],["signmessagereturn",{"2":{"142":1}}],["signmessage",{"0":{"262":1},"2":{"142":3,"190":1,"192":1,"262":2,"340":1,"341":1,"406":1,"408":1}}],["signinwithemail",{"0":{"171":1},"2":{"171":2}}],["signinwith",{"0":{"170":1},"2":{"170":2}}],["signinoptions",{"0":{"172":1},"2":{"157":2,"172":2}}],["signingin",{"2":{"365":1}}],["signing",{"2":{"121":1,"122":1,"142":1,"163":1,"179":1,"182":1,"186":1,"194":1,"339":1,"340":1,"341":1,"363":2,"373":1,"399":1,"402":1,"410":1}}],["signin",{"0":{"82":1,"83":1,"84":1,"85":1,"86":1,"87":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1},"2":{"82":1,"97":1,"363":1,"364":1,"365":1,"366":1,"367":1,"377":1,"378":1}}],["signs",{"2":{"75":1,"124":1,"258":1,"259":1,"260":1,"261":1}}],["signaturevalidation",{"2":{"342":1}}],["signatures",{"0":{"185":1,"341":1,"401":1},"2":{"203":1,"321":1,"322":1,"328":1,"340":1,"341":1,"342":5,"419":1}}],["signature",{"0":{"180":1,"191":1,"193":1,"339":1,"397":1,"407":1,"409":1},"1":{"181":1,"182":1,"183":1,"340":1,"341":1,"342":1,"398":1,"399":1,"400":1},"2":{"43":1,"139":2,"142":1,"182":1,"183":1,"190":1,"191":2,"193":3,"262":1,"283":1,"284":1,"339":1,"340":2,"341":2,"342":8,"399":1,"400":1,"406":1,"407":2,"409":3}}],["signals",{"2":{"42":1}}],["signup",{"2":{"13":1}}],["sign",{"0":{"82":1,"123":1,"124":1,"142":1,"190":1,"192":1,"363":2,"364":2,"406":1,"408":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1,"125":1,"126":1,"127":1,"128":1,"129":1,"364":2,"365":2},"2":{"5":1,"30":1,"35":1,"46":1,"75":1,"82":1,"83":1,"84":1,"85":1,"86":1,"116":2,"118":1,"121":1,"123":1,"124":2,"130":1,"142":1,"149":1,"157":1,"167":1,"170":1,"171":1,"172":1,"182":2,"185":1,"190":1,"192":1,"262":1,"298":1,"300":1,"302":1,"351":1,"353":1,"363":1,"364":1,"399":2,"401":1,"406":1,"408":1}}],["separate",{"2":{"293":1}}],["sepolia",{"2":{"64":1,"307":1}}],["senttransactionresponse",{"2":{"377":1}}],["sent",{"2":{"198":1,"301":1,"377":1,"378":2,"414":1}}],["sends",{"2":{"299":1,"369":1,"374":1}}],["sendquery",{"2":{"286":3}}],["sendrawtransaction",{"0":{"276":1},"2":{"276":1}}],["senderc1155values",{"2":{"137":3,"140":2}}],["senderc1155",{"0":{"137":1},"1":{"138":1},"2":{"137":1,"140":1}}],["senderc721",{"0":{"135":1},"1":{"136":1},"2":{"135":1,"140":1}}],["senderc20",{"0":{"133":1},"1":{"134":1},"2":{"133":1,"140":1,"373":1}}],["senderaddress",{"2":{"35":1,"41":1}}],["sending",{"0":{"194":1,"195":1,"196":1,"197":1,"198":1,"410":1,"411":1,"412":1,"413":1,"414":1},"2":{"42":1,"131":1,"140":2,"143":1,"196":2,"197":2,"288":1,"363":1,"373":1,"376":1,"378":1,"412":2,"413":2}}],["sendtransactionmethod",{"2":{"284":1}}],["sendtransactionmethodandwaitforreceipt",{"2":{"284":2,"288":1}}],["sendtransactionandwaitforreceipt",{"0":{"259":1},"2":{"259":1,"261":1,"282":1,"284":2,"288":1}}],["sendtransactionbatchandwaitforreceipts",{"0":{"261":1}}],["sendtransactionbatch",{"0":{"260":1},"2":{"196":1,"197":1,"260":1,"412":1,"413":1}}],["sendtransaction",{"0":{"258":1},"2":{"35":1,"41":1,"42":3,"54":1,"131":2,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":2,"140":2,"143":1,"194":2,"195":2,"196":1,"197":1,"198":2,"258":1,"374":1,"375":1,"377":1,"378":2,"410":2,"411":2,"412":1,"413":1,"414":2}}],["send",{"2":{"8":1,"35":2,"36":1,"41":1,"42":2,"132":2,"133":1,"134":1,"135":1,"136":1,"137":2,"138":1,"139":1,"195":3,"196":2,"197":2,"284":1,"286":1,"288":1,"364":2,"370":1,"372":1,"411":3,"412":2,"413":2}}],["seqindexer",{"2":{"152":2}}],["sequentially",{"2":{"34":1,"260":1,"261":1}}],["sequentual",{"2":{"34":1}}],["sequenceutils",{"2":{"345":1}}],["sequenceonboard",{"2":{"230":2}}],["sequenceoptions",{"2":{"230":1}}],["sequencemodule",{"2":{"230":2}}],["sequencewallet",{"2":{"220":2}}],["sequencewaas",{"2":{"61":2,"361":2,"363":2,"364":2,"365":2,"366":2,"367":2,"377":1,"378":1}}],["sequencecontext",{"2":{"345":1}}],["sequenceconnector",{"2":{"210":2,"238":2,"239":3}}],["sequenceconfig",{"2":{"118":1,"121":4,"125":1,"126":1,"128":1,"263":1}}],["sequencecanvas",{"2":{"147":1}}],["sequencesdk",{"2":{"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":2,"140":1}}],["sequenceethclient",{"2":{"263":2,"264":1}}],["sequenceethereum",{"2":{"115":1,"134":1,"136":1,"138":1,"251":3,"252":1,"253":1,"255":1,"263":1,"285":1}}],["sequenceexamples",{"2":{"122":1,"144":2}}],["sequenceindexer",{"2":{"64":2,"151":2}}],["sequenceapiclient",{"2":{"49":1}}],["sequencekit",{"0":{"14":1,"20":1,"68":1},"1":{"69":1},"2":{"101":1,"102":1,"380":1,"381":1}}],["sequence",{"0":{"36":1,"71":1,"72":1,"95":1,"178":1,"187":1,"188":1,"199":1,"205":1,"290":1,"296":1,"350":1,"352":1,"353":1,"384":1,"403":1,"404":1,"415":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"72":1,"96":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"200":1,"201":1,"202":1,"203":1,"206":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1,"351":1,"352":1,"353":1,"354":1,"385":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"416":1,"417":1,"418":1,"419":1},"2":{"2":2,"4":2,"5":2,"6":8,"7":2,"8":5,"13":1,"30":6,"33":6,"34":2,"35":10,"36":1,"41":4,"43":2,"46":6,"49":9,"50":2,"54":4,"60":2,"61":1,"62":3,"63":1,"64":4,"66":5,"67":1,"68":1,"69":1,"70":2,"71":1,"72":1,"77":1,"78":1,"80":2,"87":1,"90":1,"95":2,"96":2,"97":2,"98":1,"99":2,"103":1,"106":3,"107":4,"108":1,"109":4,"110":2,"111":3,"114":1,"115":2,"118":1,"119":1,"120":1,"121":2,"128":5,"140":2,"141":2,"145":1,"147":1,"149":5,"150":5,"151":3,"152":4,"153":3,"154":1,"155":1,"156":10,"157":9,"158":1,"168":2,"173":1,"174":1,"177":1,"178":1,"179":6,"181":2,"182":3,"183":4,"185":1,"186":1,"190":1,"191":1,"201":5,"202":1,"203":5,"204":6,"205":1,"206":1,"207":2,"208":2,"213":1,"214":1,"218":2,"223":1,"224":1,"228":2,"229":3,"230":1,"232":1,"233":1,"234":1,"238":1,"239":2,"241":1,"242":1,"244":2,"245":2,"246":1,"291":1,"296":1,"297":1,"301":1,"303":3,"307":1,"308":4,"309":1,"315":1,"316":2,"317":1,"321":1,"328":1,"339":1,"340":1,"341":1,"346":3,"350":2,"351":1,"352":2,"353":4,"354":4,"360":2,"361":1,"362":1,"363":1,"364":1,"365":8,"370":1,"377":1,"378":1,"382":1,"384":1,"385":1,"386":2,"388":3,"389":4,"390":1,"391":4,"392":2,"393":3,"396":1,"398":2,"399":3,"400":4,"401":1,"402":1,"406":1,"407":1,"417":5,"418":1,"419":5}}],["semi",{"2":{"137":1}}],["semantic",{"2":{"115":1}}],["several",{"2":{"103":1,"382":1}}],["self",{"2":{"319":1,"327":1,"332":1}}],["sell",{"2":{"62":1}}],["selector",{"2":{"342":1}}],["selects",{"2":{"179":1}}],["selecting",{"2":{"46":1,"250":1}}],["selectfee",{"2":{"35":1,"41":1}}],["select",{"2":{"35":1,"46":1,"53":1,"125":2,"126":2,"297":1}}],["selectwallet",{"2":{"35":1}}],["seamless",{"2":{"43":1,"56":1,"98":1,"99":1,"182":1,"353":1,"356":1,"399":1}}],["seamlessly",{"0":{"205":1,"384":1},"1":{"206":1,"385":1},"2":{"30":1,"69":1,"206":1,"385":1}}],["sessionid",{"2":{"363":1,"367":1}}],["sessionhash",{"2":{"363":3,"364":2,"365":6}}],["sessionaddress",{"2":{"189":1,"193":1,"405":1,"409":1}}],["sessionwallet",{"2":{"189":2,"192":1,"405":2,"408":1}}],["sessionprivatekey",{"2":{"189":4,"405":4}}],["sessionsignature",{"2":{"192":1,"193":1,"408":1,"409":1}}],["sessions",{"0":{"366":1},"2":{"183":2,"363":1,"366":4,"367":2,"400":2}}],["sessionsettings",{"2":{"54":2}}],["session",{"0":{"112":1,"186":1,"187":1,"189":1,"192":1,"193":1,"362":1,"367":1,"372":1,"374":1,"375":1,"394":1,"402":1,"403":1,"405":1,"408":1,"409":1},"1":{"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"363":1,"364":1,"365":1,"366":1,"367":1,"373":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1},"2":{"35":14,"41":6,"42":2,"44":1,"46":5,"54":5,"111":4,"112":2,"113":1,"122":1,"123":1,"179":1,"185":1,"186":4,"190":1,"191":2,"192":1,"193":5,"352":2,"362":1,"364":3,"365":5,"367":4,"371":1,"372":2,"373":3,"374":3,"375":2,"377":1,"378":1,"393":4,"394":2,"395":1,"401":1,"402":4,"406":1,"407":2,"408":1,"409":5}}],["seconds",{"2":{"147":1,"162":2}}],["second",{"2":{"119":1,"132":1,"363":1}}],["security",{"2":{"99":1,"110":1,"114":2,"156":2,"309":1,"352":1,"392":1,"396":2}}],["securely",{"2":{"303":1}}],["secured",{"2":{"111":1,"393":1}}],["secure",{"2":{"13":1,"43":1,"68":1,"69":1,"110":2,"186":2,"205":1,"206":1,"352":1,"384":1,"385":1,"392":2,"402":2}}],["section",{"2":{"35":1,"50":1,"125":1,"126":1,"128":1,"132":1,"216":2,"225":2,"296":1,"299":1,"302":1,"340":1,"341":1,"377":1,"378":1}}],["seen",{"2":{"351":1}}],["seemlessly",{"2":{"140":1}}],["see",{"2":{"31":1,"35":1,"41":1,"49":1,"50":1,"54":1,"86":1,"87":1,"106":1,"107":1,"109":1,"116":1,"120":2,"122":1,"128":2,"130":1,"132":1,"139":1,"149":1,"151":2,"152":2,"157":1,"169":1,"177":1,"183":1,"203":1,"204":3,"216":4,"225":4,"248":2,"302":1,"305":1,"308":1,"336":1,"363":1,"365":3,"377":1,"378":1,"388":1,"389":1,"391":1,"400":1,"419":1}}],["serves",{"2":{"119":1}}],["servers",{"2":{"113":1,"130":1,"395":1}}],["serverprivatekey",{"2":{"35":2,"41":1}}],["serverless",{"0":{"27":1,"43":1},"1":{"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1},"2":{"43":1,"303":1}}],["server",{"0":{"34":1,"35":1,"36":1,"183":1,"400":1},"1":{"35":1,"36":1,"37":2,"38":2,"39":2,"40":2,"41":2,"42":1},"2":{"6":2,"30":1,"34":1,"35":6,"41":3,"46":2,"150":1,"183":2,"191":1,"193":1,"203":1,"216":1,"225":1,"248":2,"250":1,"400":2,"407":1,"409":1,"419":1}}],["services",{"2":{"33":2,"203":1,"419":1}}],["service",{"2":{"4":1,"5":2,"8":1,"13":1,"30":3,"33":1,"144":1,"149":1,"263":1,"350":1,"352":1,"353":1}}],["seterror",{"2":{"365":3}}],["setbasemetadatauri",{"2":{"299":1,"300":1}}],["setitem",{"2":{"189":1,"405":1}}],["setopenwalletmodal",{"2":{"76":2}}],["setopenconnectmodal",{"2":{"75":2}}],["setting",{"0":{"73":1,"74":1},"2":{"248":1,"250":1}}],["settings",{"0":{"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1},"2":{"33":1,"54":3,"91":1,"93":1,"121":1,"125":4,"126":4,"128":2,"157":8,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1}}],["setup",{"0":{"44":1,"60":1,"61":1,"121":1,"360":1,"361":1},"1":{"45":1},"2":{"43":1,"114":1,"118":3,"119":1,"121":1,"131":1,"142":1,"143":1,"249":1,"396":1}}],["setsigningin",{"2":{"365":1}}],["setsessionhash",{"2":{"365":3}}],["sets",{"2":{"6":1,"365":1}}],["set",{"0":{"293":1,"296":1,"300":1},"2":{"6":1,"33":1,"44":1,"49":4,"124":1,"128":3,"147":3,"176":1,"296":1,"299":1,"300":1,"316":1,"321":1,"333":1}}]],"serializationVersion":2} diff --git a/.vocs/search-index-e1175f97.json b/.vocs/search-index-e1175f97.json new file mode 100644 index 0000000000..786559a231 --- /dev/null +++ b/.vocs/search-index-e1175f97.json @@ -0,0 +1 @@ +{"documentCount":436,"nextId":436,"documentIds":{"0":"docs/pages/builder.mdx#builder-intro","1":"docs/pages/stack.mdx#stack","2":"docs/pages/support.mdx#support","3":"docs/pages/wallet.mdx#wallet","4":"docs/pages/api/marketplace.mdx#marketplace-api","5":"docs/pages/api/metadata.mdx#metadata-api","6":"docs/pages/api/metadata.mdx#creating-collections-tokens-and-managing-metadata","7":"docs/pages/api/metadata.mdx#pricing--usage","8":"docs/pages/api/relayer.mdx#relayer-api","9":"docs/pages/guides/discord.mdx#deploy-an-in-game-collectibles-contract","10":"docs/pages/guides/discord.mdx#query-contract-details","11":"docs/pages/guides/lootbox.mdx#deploy-an-in-game-collectibles-contract","12":"docs/pages/guides/lootbox.mdx#query-contract-details","13":"docs/pages/guides/lootbox.mdx#fetch-token-balances-of-a-wallet","14":"docs/pages/guides/unity-guide.mdx#integrate-sequencekit-with-waas","15":"docs/pages/guides/unity-guide.mdx#deploy-a-collectibles-contract","16":"docs/pages/guides/unity-guide.mdx#deploy-a-remote-minter","17":"docs/pages/guides/unity-guide.mdx#mint-in-game-achievement-tokens","18":"docs/pages/guides/unity-guide.mdx#burn-in-game-achievement-tokens","19":"docs/pages/guides/unity-guide.mdx#integrate-an-embedded-marketplace","20":"docs/pages/guides/webgl-guide.mdx#integrate-sequencekit-with-waas","21":"docs/pages/guides/webgl-guide.mdx#deploy-a-collectibles-contract","22":"docs/pages/guides/webgl-guide.mdx#deploy-a-remote-minter","23":"docs/pages/guides/webgl-guide.mdx#mint-in-game-achievement-tokens","24":"docs/pages/guides/webgl-guide.mdx#burn-in-game-achievement-tokens","25":"docs/pages/guides/webgl-guide.mdx#integrate-an-embedded-marketplace","26":"docs/pages/solutions/minter.mdx#mint-tokens-using-builder-manually","27":"docs/pages/solutions/minter.mdx#deploy-a-serverless-minter-on-cloudflare-workers","28":"docs/pages/solutions/nft-checkout.mdx#integrate-nft-checkout-on-web-coming-soon","29":"docs/pages/solutions/onramps.mdx#integrate-onramp-on-web","30":"docs/pages/api/indexer/01-overview.mdx#indexer","31":"docs/pages/api/indexer/01-overview.mdx#supported-networks--endpoints","32":"docs/pages/api/indexer/01-overview.mdx#getting-started","33":"docs/pages/api/indexer/08-metadata-tips.mdx#metadata-tips--notes-on-spam","34":"docs/pages/guides/templates/02-building-relaying-server.mdx#building-a-relaying-server","35":"docs/pages/guides/templates/02-building-relaying-server.mdx#nodejs-server","36":"docs/pages/guides/templates/02-building-relaying-server.mdx#nodejs-server-with-gas-sponsoring-using-sequence-builder","37":"docs/pages/guides/templates/02-building-relaying-server.mdx#a-create-dapp","38":"docs/pages/guides/templates/02-building-relaying-server.mdx#b-new-dapp","39":"docs/pages/guides/templates/02-building-relaying-server.mdx#c1-gas-tank","40":"docs/pages/guides/templates/02-building-relaying-server.mdx#c2-add-gas","41":"docs/pages/guides/templates/02-building-relaying-server.mdx#c3-add-sponsored-address","42":"docs/pages/guides/templates/02-building-relaying-server.mdx#parallel-transactions","43":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#mint-collectibles-using-a-gasless-serverless-relayer","44":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test","45":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#deploy-test","46":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#2-deploy-sponsor-and-update-metadata-for-an-erc1155-contract-with-builder","47":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#update-metadata","48":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#contract-sponsoring","49":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#3-use-ethauthproof-to-prevent-eoa-ddos","50":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#add-cloudflare-environment-variables","51":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#implement-window-object-in-wrangler-template","52":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#testing-the-deploy","53":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#using-the-ethauthproof-viewer-dapp","54":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#4-mint-a-collectible-to-wallet","55":"docs/pages/guides/templates/template-embedded-wallet.mdx#quickstart","56":"docs/pages/guides/templates/template-embedded-wallet.mdx#try-a-demo","57":"docs/pages/guides/templates/template-embedded-wallet.mdx#template","58":"docs/pages/guides/templates/template-embedded-wallet.mdx#getting-started","59":"docs/pages/guides/templates/template-embedded-wallet.mdx#sdk-installation","60":"docs/pages/guides/templates/template-embedded-wallet.mdx#project-setup","61":"docs/pages/guides/templates/template-embedded-wallet.mdx#library-setup","62":"docs/pages/sdk/go/overview.mdx#go","63":"docs/pages/sdk/go/overview.mdx#ethkit","64":"docs/pages/sdk/sequence-kit/01-overview.mdx#sequencekit-sdk","65":"docs/pages/sdk/sequence-kit/01-overview.mdx#key-features","66":"docs/pages/sdk/sequence-kit/01-overview.mdx#next-steps","67":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#getting-started-with-sequence-kit","68":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#installing-sequence-kit-packages","69":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#setting-up-the-kit-wrapper","70":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#setting-up-the-embedded-wallet-wrapper","71":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#triggering-the-connect-modal","72":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#invoking-the-embedded-wallet-modal","73":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#react-example","74":"docs/pages/sdk/sequence-kit/03-configuration.mdx#configuration-options","75":"docs/pages/sdk/sequence-kit/03-configuration.mdx#available-options","76":"docs/pages/sdk/sequence-kit/03-configuration.mdx#defaulttheme","77":"docs/pages/sdk/sequence-kit/03-configuration.mdx#position","78":"docs/pages/sdk/sequence-kit/03-configuration.mdx#sign-in-modal-configuration-signin","79":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinlogourl","80":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinprojectname","81":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinshowemailinput","82":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinsocialauthoptions","83":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinwalletauthoptions","84":"docs/pages/sdk/sequence-kit/03-configuration.mdx#displayedassets","85":"docs/pages/sdk/sequence-kit/04-checkout.mdx#overview","86":"docs/pages/sdk/sequence-kit/04-checkout.mdx#integration","87":"docs/pages/sdk/sequence-kit/04-checkout.mdx#opening-the-checkout-modal","88":"docs/pages/sdk/sequence-kit/04-checkout.mdx#configuring-the-checkout-modal","89":"docs/pages/sdk/sequence-kit/04-checkout.mdx#crypto-checkout-configuration-cryptocheckout","90":"docs/pages/sdk/sequence-kit/04-checkout.mdx#order-summary-configuration-ordersummaryitems","91":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#custom-connectors-in-sequence-kit","92":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#creating-a-custom-connector","93":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#using-custom-connectors","94":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#share-your-custom-connectors","95":"docs/pages/sdk/typescript/01-overview.mdx#wallet","96":"docs/pages/sdk/typescript/02-quickstart.mdx#quickstart","97":"docs/pages/sdk/typescript/02-quickstart.mdx#try-a-demo","98":"docs/pages/sdk/typescript/02-quickstart.mdx#template","99":"docs/pages/sdk/typescript/02-quickstart.mdx#install-for-existing-project","100":"docs/pages/sdk/typescript/02-quickstart.mdx#cdn-distribution-as-native-js","101":"docs/pages/sdk/typescript/04-platforms.mdx#platforms","102":"docs/pages/sdk/typescript/04-platforms.mdx#web-wallet","103":"docs/pages/sdk/typescript/04-platforms.mdx#mobile-wallet","104":"docs/pages/sdk/typescript/04-platforms.mdx#browser-extension-wallet","105":"docs/pages/sdk/typescript/05-fiat-on-ramps.mdx#fiat-on-ramps","106":"docs/pages/sdk/typescript/06-key-management.mdx#key-management","107":"docs/pages/sdk/typescript/06-key-management.mdx#social-login-wallets","108":"docs/pages/sdk/typescript/06-key-management.mdx#session-keys","109":"docs/pages/sdk/typescript/06-key-management.mdx#guard-key","110":"docs/pages/sdk/typescript/06-key-management.mdx#torus-key","111":"docs/pages/sdk/unity/01-overview.mdx#introduction","112":"docs/pages/sdk/unity/01-overview.mdx#requirements","113":"docs/pages/sdk/unity/02-installation.mdx#installation","114":"docs/pages/sdk/unity/02-installation.mdx#package-manager---recommended","115":"docs/pages/sdk/unity/02-installation.mdx#samples","116":"docs/pages/sdk/unity/02-installation.mdx#manual","117":"docs/pages/sdk/unity/03-setup.mdx#setup","118":"docs/pages/sdk/unity/04-authentication.mdx#authentication","119":"docs/pages/sdk/unity/04-authentication.mdx#1-email-sign-in","120":"docs/pages/sdk/unity/04-authentication.mdx#2-social-sign-in","121":"docs/pages/sdk/unity/04-authentication.mdx#ios","122":"docs/pages/sdk/unity/04-authentication.mdx#macos","123":"docs/pages/sdk/unity/04-authentication.mdx#pc","124":"docs/pages/sdk/unity/04-authentication.mdx#android","125":"docs/pages/sdk/unity/04-authentication.mdx#webgl","126":"docs/pages/sdk/unity/04-authentication.mdx#connecting-with-waas","127":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#write-to-blockchain","128":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#rawtransaction","129":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#senderc20","130":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#complex-erc20-interactions","131":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#senderc721","132":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#complex-erc721-interactions","133":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#senderc1155","134":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#complex-erc1155-interactions","135":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#delayedencode","136":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#batch-transactions","137":"docs/pages/sdk/unity/06-read-from-blockchain.mdx#read-from-blockchain","138":"docs/pages/sdk/unity/07-sign-messages.mdx#sign-messages","139":"docs/pages/sdk/unity/08-deploy-contracts.mdx#contract-deployment","140":"docs/pages/sdk/unity/09-wallet-ui.mdx#wallet-ui","141":"docs/pages/sdk/unity/09-wallet-ui.mdx#how-it-works","142":"docs/pages/sdk/unity/09-wallet-ui.mdx#ui-customizability","143":"docs/pages/sdk/unity/09-wallet-ui.mdx#color-scheme-manager","144":"docs/pages/sdk/unity/09-wallet-ui.mdx#more-customization-tools-coming-soon","145":"docs/pages/sdk/unreal/01-overview.mdx#introduction","146":"docs/pages/sdk/unreal/01-overview.mdx#requirements","147":"docs/pages/sdk/unreal/02-installation.mdx#installation","148":"docs/pages/sdk/unreal/02-installation.mdx#credentials","149":"docs/pages/sdk/unreal/02-installation.mdx#security","150":"docs/pages/sdk/unreal/03-setup.mdx#setup","151":"docs/pages/sdk/unreal/04-authentication.mdx#authentication","152":"docs/pages/sdk/unreal/04-authentication.mdx#custom-ui-integration","153":"docs/pages/sdk/unreal/04-authentication.mdx#email-based-authentication","154":"docs/pages/sdk/unreal/04-authentication.mdx#social-signin-based-authentication-on-desktop","155":"docs/pages/sdk/unreal/04-authentication.mdx#social-signin-based-authentication-on-mobile","156":"docs/pages/sdk/unreal/05-api-integration.mdx#api-integration","157":"docs/pages/sdk/unreal/05-api-integration.mdx#sequence-api","158":"docs/pages/sdk/unreal/05-api-integration.mdx#sequence-unreal-api","159":"docs/pages/sdk/unreal/05-api-integration.mdx#usequencewallet","160":"docs/pages/sdk/unreal/05-api-integration.mdx#sequence-api-methods","161":"docs/pages/sdk/unreal/06-packaging.mdx#packaging","162":"docs/pages/sdk/unreal/06-packaging.mdx#google-sso-setup","163":"docs/pages/sdk/unreal/06-packaging.mdx#ios","164":"docs/pages/sdk/unreal/06-packaging.mdx#unreal-and-xcode-specifics","165":"docs/pages/solutions/indexer/02-installation.mdx#indexer-installation","166":"docs/pages/solutions/indexer/02-installation.mdx#installation","167":"docs/pages/solutions/indexer/02-installation.mdx#web--nodejs-installation","168":"docs/pages/solutions/indexer/02-installation.mdx#go-installation","169":"docs/pages/solutions/indexer/02-installation.mdx#unity-or-unreal-installation","170":"docs/pages/solutions/technical-references/node-gateway.mdx#node-gateway","171":"docs/pages/solutions/technical-references/node-gateway.mdx#give-it-a-try","172":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connect-wallet","173":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-your-dapp-with-0xsequence","174":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#wallet-login-and-connect-options","175":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#app","176":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#appprotocol","177":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#origin","178":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#expiry","179":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#authorize","180":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#authorizenonce","181":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#refresh","182":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#keepwalletopened","183":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#askforemail","184":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingstheme","185":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsbannerurl","186":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingssigninwith","187":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingssigninwithemail","188":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingssigninoptions","189":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsincludedpaymentproviders","190":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsdefaultfundingcurrency","191":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsdefaultpurchaseamount","192":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingslockfundingcurrencytodefault","193":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-your-dapp-with-web3js-or-ethersjs","194":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-to-any-ethereum-dapp-with-the-sequence-wallet-chrome-extension","195":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-via-walletconnect","196":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#authenticate-users-with-message-signature","197":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#ask-for-the-wallet-address","198":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#authenticate-wallet","199":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#authenticate-wallet-server-side","200":"docs/pages/sdk/typescript/03-guides/03-sign-message.mdx#todo---replace-with-code-groups-from-vocs","201":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#no-wallet-confirmation-signatures","202":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#session-keys","203":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#using-session-keys-with-sequence","204":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#1-initialize-sequence-wallet-and-connect","205":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#2-generate-a-session-key","206":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#3-sign-authorization-message","207":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#4-verify-authorization-signature","208":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#5-sign-message-with-session-key","209":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#6-verify-session-signature","210":"docs/pages/sdk/typescript/03-guides/05-send-transaction.mdx#sending-transactions","211":"docs/pages/sdk/typescript/03-guides/06-send-erc20.mdx#sending-erc-20-tokens","212":"docs/pages/sdk/typescript/03-guides/07-send-erc721.mdx#sending-erc-721-nft-tokens","213":"docs/pages/sdk/typescript/03-guides/08-send-erc1155.mdx#sending-erc-1155-collectible-tokens","214":"docs/pages/sdk/typescript/03-guides/09-send-batch-transactions.mdx#sending-a-batch-of-transactions","215":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#building-backends-with-sequence","216":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#nodejs","217":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#go","218":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#ethkit","219":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#support-for-other-backend-languages","220":"docs/pages/sdk/typescript/connectors/01-overview.mdx#wallet-connectors","221":"docs/pages/sdk/typescript/connectors/02-sequence-kit.mdx#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","222":"docs/pages/sdk/typescript/connectors/02-sequence-kit.mdx#key-features","223":"docs/pages/sdk/typescript/connectors/02-sequence-kit.mdx#next-steps","224":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#using-wagmi","225":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#installation","226":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#usage","227":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#parameters","228":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#chains","229":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#optionsconnect-optional","230":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#optionsdefaultnetwork-optional","231":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#using-older-versions-of-wagmi--012x","232":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#using-nextjs","233":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#examples","234":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#using-rainbowkit","235":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#installation","236":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#usage","237":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#parameters","238":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#chains","239":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#connect-optional","240":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#defaultnetwork-optional","241":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#using-nextjs","242":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#using-older-versions-of-wagmi--012x","243":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#examples","244":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#using-web3-onboard","245":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#installation","246":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#usage","247":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#parameters","248":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#network-optional","249":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#appname-optional","250":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#example","251":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#using-web3-react-v6","252":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#installation","253":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#usage","254":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#initialization","255":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#activationdeactivation","256":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#options","257":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#chainid","258":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#appname-optional","259":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#example","260":"docs/pages/sdk/typescript/connectors/07-web3modal.mdx#using-web3modal","261":"docs/pages/sdk/typescript/connectors/07-web3modal.mdx#usage","262":"docs/pages/sdk/typescript/connectors/07-web3modal.mdx#example","263":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#nextjs","264":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs","265":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-pages-directory-all-versions-of-nextjs","266":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-app-directory-version-13-and-above-only","267":"docs/pages/sdk/unity/Advanced/01-introduction.mdx#advanced---introduction","268":"docs/pages/sdk/unity/Advanced/01-introduction.mdx#important-components","269":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#wallets","270":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#1-ethwallet","271":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#2-waastowalletadapter","272":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#methods","273":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#getaddress","274":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransaction","275":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransactionandwaitforreceipt","276":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransactionbatch","277":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransactionbatchandwaitforreceipts","278":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#signmessage","279":"docs/pages/sdk/unity/Advanced/03-clients.mdx#clients","280":"docs/pages/sdk/unity/Advanced/03-clients.mdx#methods","281":"docs/pages/sdk/unity/Advanced/03-clients.mdx#balanceat","282":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blockbynumber","283":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blockbyhash","284":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blocknumber","285":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blockrange","286":"docs/pages/sdk/unity/Advanced/03-clients.mdx#chainid","287":"docs/pages/sdk/unity/Advanced/03-clients.mdx#codeat","288":"docs/pages/sdk/unity/Advanced/03-clients.mdx#estimategas","289":"docs/pages/sdk/unity/Advanced/03-clients.mdx#feehistory","290":"docs/pages/sdk/unity/Advanced/03-clients.mdx#networkid","291":"docs/pages/sdk/unity/Advanced/03-clients.mdx#nonceat","292":"docs/pages/sdk/unity/Advanced/03-clients.mdx#sendrawtransaction","293":"docs/pages/sdk/unity/Advanced/03-clients.mdx#suggestgasprice","294":"docs/pages/sdk/unity/Advanced/03-clients.mdx#suggestgastipcap","295":"docs/pages/sdk/unity/Advanced/03-clients.mdx#transactionbyhash","296":"docs/pages/sdk/unity/Advanced/03-clients.mdx#transactioncount","297":"docs/pages/sdk/unity/Advanced/03-clients.mdx#waitfortransactionreceipt","298":"docs/pages/sdk/unity/Advanced/04-transfers.mdx#transfers","299":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#contracts","300":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#calling-smart-contract-functions","301":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#understanding-data-type-mappings","302":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#querying-contracts","303":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#deploying-contracts","304":"docs/pages/sdk/unity/Advanced/06-tokens.mdx#tokens","305":"docs/pages/sdk/unity/Advanced/06-tokens.mdx#bonus-ownable","306":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#how-to-manage-item-metadata-in-sequence-builder","307":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#introduction","308":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-1-prepare-your-token-images-and-metadata","309":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-2-set-up-on-pinatacloud","310":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-3-upload-your-metadata-files","311":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-4-get-the-folder-url","312":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-5-set-up-on-sequence-builder","313":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-6-deploy-your-contract","314":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-7-move-to-contract-details","315":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-8-update-contract-attributes","316":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-9-set-the-base-metadata-uri","317":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-10-minting-time","318":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-11-finalize-and-admire","319":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-12-updating-metadata","320":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#quickstart","321":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#try-a-demo","322":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#template","323":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#try-an-api-call","324":"docs/pages/solutions/payments/onramps/01-fiat-on-ramps.mdx#fiat-on-ramps","325":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#why-smart-contracts-wallets","326":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#externally-owned-accounts","327":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#pros","328":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#popular-examples","329":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#smart-contract-wallets","330":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#pros-1","331":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#examples","332":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#modules--wallet-update","333":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#wallet-implementation","334":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#_updateconfiguration","335":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#parameters","336":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#reading-current-implementation","337":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#wallet-configuration-validation","338":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#_isvalidimage","339":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#parameters-1","340":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#return-values","341":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#mainmoduleupgradeable","342":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#updateimagehash","343":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#parameters-2","344":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#first-configuration-update","345":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#delegatecall-false","346":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#revertonerror-true","347":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#to-wallet","348":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#value-ethersconstantszero","349":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#gaslimit-ethersconstantszero","350":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#subsequent-configuration-updates","351":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#retrieving-the-current-configuration","352":"docs/pages/solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx#retrieving-the-wallet-configuration","353":"docs/pages/solutions/technical-references/wallet-contracts/06-main-module-upgradeable.mdx#mainmoduleupgradeable--configuration-migration","354":"docs/pages/solutions/technical-references/wallet-contracts/07-transaction-encoding.mdx#transaction-encoding","355":"docs/pages/solutions/technical-references/wallet-contracts/08-signature-encoding.mdx#signature-encoding","356":"docs/pages/solutions/technical-references/wallet-contracts/08-signature-encoding.mdx#erc-191-ethereum-signed-data","357":"docs/pages/solutions/technical-references/wallet-contracts/08-signature-encoding.mdx#erc-712-structured-data-signatures","358":"docs/pages/solutions/technical-references/wallet-contracts/08-signature-encoding.mdx#verification","359":"docs/pages/solutions/technical-references/wallet-contracts/09-nested-transaction-batching.mdx#nested-transaction-batching","360":"docs/pages/solutions/technical-references/wallet-contracts/10-guest-module.mdx#guestmodule-and-on-demand-deployment","361":"docs/pages/solutions/technical-references/wallet-contracts/11-wallet-context.mdx#wallet-context","362":"docs/pages/solutions/technical-references/wallet-contracts/12-contract-audits.mdx#contract-audits","363":"docs/pages/solutions/technical-references/wallet-contracts/12-contract-audits.mdx#quantstamp","364":"docs/pages/solutions/technical-references/wallet-contracts/12-contract-audits.mdx#consensys-diligence","365":"docs/pages/solutions/technical-references/wallet-contracts/12-contract-audits.mdx#zellic","366":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#sequence-embedded-wallet","367":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#architecture-overview","368":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#signer-1-sequence-auth","369":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#signer-2-sequence-guard","370":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#threat-model","371":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#quickstart","372":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#try-a-demo","373":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#template","374":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#getting-started","375":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#sdk-installation","376":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#project-setup","377":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#library-setup","378":"docs/pages/solutions/wallets/embedded-wallet/03-manage-sessions.mdx#session-management","379":"docs/pages/solutions/wallets/embedded-wallet/03-manage-sessions.mdx#sign-in--sign-up","380":"docs/pages/solutions/wallets/embedded-wallet/03-manage-sessions.mdx#email-sign-in--sign-up","381":"docs/pages/solutions/wallets/embedded-wallet/03-manage-sessions.mdx#google--apple-auth","382":"docs/pages/solutions/wallets/embedded-wallet/03-manage-sessions.mdx#list-sessions","383":"docs/pages/solutions/wallets/embedded-wallet/03-manage-sessions.mdx#close-session","384":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#validation","385":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#email-login-one-time-code","386":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#social-login","387":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#validation-status","388":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#trigger-session-validation","389":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#onvalidationrequired-callback","390":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#listen-for-session-validations","391":"docs/pages/solutions/wallets/embedded-wallet/05-validation.mdx#automatic-session-validation","392":"docs/pages/solutions/wallets/embedded-wallet/06-transaction-receipts.mdx#transaction-receipts","393":"docs/pages/solutions/wallets/embedded-wallet/06-transaction-receipts.mdx#successful-transaction-response","394":"docs/pages/solutions/wallets/embedded-wallet/06-transaction-receipts.mdx#failed-transaction-response","395":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#quickstart","396":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#try-a-demo","397":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#template","398":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#install","399":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#cdn-distribution-as-native-js","400":"docs/pages/solutions/wallets/universal-wallet/04-sequence-kit.mdx#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","401":"docs/pages/solutions/wallets/universal-wallet/04-sequence-kit.mdx#key-features","402":"docs/pages/solutions/wallets/universal-wallet/04-sequence-kit.mdx#next-steps","403":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#platforms","404":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#web-wallet","405":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#mobile-wallet","406":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#browser-extension-wallet","407":"docs/pages/solutions/wallets/universal-wallet/06-fiat-on-ramps.mdx#fiat-on-ramps","408":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#key-management","409":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#social-login-wallets","410":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#session-keys","411":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#guard-key","412":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#torus-key","413":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#authenticate-users-with-message-signature","414":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#ask-for-the-wallet-address","415":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#authenticate-wallet","416":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#authenticate-wallet-server-side","417":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#no-wallet-confirmation-signatures","418":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#session-keys","419":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#using-session-keys-with-sequence","420":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#1-initialize-sequence-wallet-and-connect","421":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#2-generate-a-session-key","422":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#3-sign-authorization-message","423":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#4-verify-authorization-signature","424":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#5-sign-message-with-session-key","425":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#6-verify-session-signature","426":"docs/pages/solutions/wallets/universal-wallet/examples/05-send-transaction.mdx#sending-transactions","427":"docs/pages/solutions/wallets/universal-wallet/examples/06-send-erc20.mdx#sending-erc-20-tokens","428":"docs/pages/solutions/wallets/universal-wallet/examples/07-send-erc721.mdx#sending-erc-721-nft-tokens","429":"docs/pages/solutions/wallets/universal-wallet/examples/08-send-erc1155.mdx#sending-erc-1155-collectible-tokens","430":"docs/pages/solutions/wallets/universal-wallet/examples/09-send-batch-transactions.mdx#sending-a-batch-of-transactions","431":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#building-backends-with-sequence","432":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#nodejs","433":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#go","434":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#ethkit","435":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#support-for-other-backend-languages"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,1],"1":[1,1,2],"2":[1,1,58],"3":[1,1,2],"4":[2,1,39],"5":[2,1,42],"6":[6,2,142],"7":[3,2,22],"8":[2,1,114],"9":[6,1,1],"10":[3,1,1],"11":[6,1,1],"12":[3,1,1],"13":[6,1,41],"14":[4,1,1],"15":[4,1,1],"16":[4,1,1],"17":[5,1,1],"18":[5,1,1],"19":[4,1,1],"20":[4,1,1],"21":[4,1,1],"22":[4,1,1],"23":[5,1,1],"24":[5,1,1],"25":[4,1,1],"26":[5,1,1],"27":[7,1,1],"28":[8,1,1],"29":[4,1,1],"30":[1,1,129],"31":[4,1,11],"32":[2,1,47],"33":[6,1,144],"34":[4,1,37],"35":[2,4,226],"36":[8,4,62],"37":[3,11,1],"38":[3,11,1],"39":[4,11,1],"40":[4,11,1],"41":[5,11,131],"42":[2,4,121],"43":[7,1,114],"44":[11,7,123],"45":[2,18,37],"46":[12,7,171],"47":[2,20,25],"48":[2,20,12],"49":[7,7,212],"50":[4,15,47],"51":[6,15,39],"52":[3,15,67],"53":[5,15,94],"54":[6,7,175],"55":[1,1,1],"56":[3,1,11],"57":[1,1,11],"58":[2,1,1],"59":[2,3,32],"60":[2,3,41],"61":[2,3,62],"62":[1,1,33],"63":[1,1,36],"64":[2,1,40],"65":[2,2,78],"66":[2,1,33],"67":[5,1,23],"68":[4,5,48],"69":[5,1,83],"70":[6,1,72],"71":[4,1,46],"72":[5,1,26],"73":[2,1,18],"74":[2,1,38],"75":[2,1,1],"76":[1,2,40],"77":[1,2,22],"78":[6,2,12],"79":[2,8,12],"80":[2,8,12],"81":[2,8,14],"82":[2,8,48],"83":[2,8,48],"84":[1,2,39],"85":[1,1,11],"86":[1,1,46],"87":[4,1,30],"88":[4,1,12],"89":[5,5,39],"90":[5,5,22],"91":[5,1,30],"92":[4,5,89],"93":[3,1,85],"94":[4,1,34],"95":[1,1,71],"96":[1,1,1],"97":[3,1,11],"98":[1,1,9],"99":[4,1,87],"100":[5,6,32],"101":[1,1,1],"102":[2,1,27],"103":[2,1,48],"104":[3,1,5],"105":[3,1,65],"106":[2,1,69],"107":[3,2,76],"108":[2,5,32],"109":[2,5,45],"110":[2,5,102],"111":[1,1,67],"112":[1,1,48],"113":[1,1,1],"114":[3,1,95],"115":[1,4,145],"116":[1,1,137],"117":[1,1,102],"118":[1,1,112],"119":[4,1,46],"120":[4,1,70],"121":[1,5,41],"122":[1,5,43],"123":[1,5,5],"124":[1,5,155],"125":[1,5,3],"126":[3,1,91],"127":[3,1,104],"128":[1,3,103],"129":[1,3,87],"130":[3,4,94],"131":[1,3,53],"132":[3,4,92],"133":[1,3,76],"134":[3,4,93],"135":[1,3,190],"136":[2,3,119],"137":[3,1,54],"138":[2,1,76],"139":[2,1,139],"140":[2,1,93],"141":[3,2,12],"142":[2,2,25],"143":[3,3,118],"144":[5,3,46],"145":[1,1,71],"146":[1,1,11],"147":[1,1,1],"148":[1,1,46],"149":[1,1,47],"150":[1,1,113],"151":[1,1,1],"152":[3,2,160],"153":[3,2,67],"154":[6,2,50],"155":[6,2,2],"156":[2,1,1],"157":[2,3,135],"158":[3,3,51],"159":[1,3,72],"160":[3,3,83],"161":[1,1,19],"162":[3,2,55],"163":[1,2,13],"164":[4,2,140],"165":[2,1,54],"166":[1,2,106],"167":[4,2,72],"168":[2,2,62],"169":[4,2,16],"170":[2,1,46],"171":[4,2,76],"172":[2,1,145],"173":[5,2,205],"174":[5,2,26],"175":[1,6,22],"176":[1,6,8],"177":[1,6,23],"178":[1,6,20],"179":[1,6,19],"180":[1,6,23],"181":[1,6,17],"182":[1,6,20],"183":[1,6,26],"184":[2,6,21],"185":[2,6,38],"186":[2,6,36],"187":[2,6,29],"188":[2,6,28],"189":[2,6,27],"190":[2,6,31],"191":[2,6,27],"192":[2,6,40],"193":[8,2,25],"194":[11,2,5],"195":[3,2,106],"196":[5,1,1],"197":[5,5,17],"198":[2,5,121],"199":[4,5,139],"200":[7,1,1],"201":[4,1,28],"202":[2,1,95],"203":[5,1,1],"204":[6,6,17],"205":[5,6,33],"206":[4,6,28],"207":[4,6,35],"208":[6,6,25],"209":[4,6,49],"210":[2,1,42],"211":[4,1,72],"212":[5,1,85],"213":[5,1,93],"214":[5,1,82],"215":[4,1,1],"216":[1,5,22],"217":[1,5,33],"218":[1,5,36],"219":[5,5,72],"220":[2,1,105],"221":[9,1,40],"222":[2,9,78],"223":[2,1,33],"224":[2,1,34],"225":[1,2,32],"226":[1,2,38],"227":[1,2,1],"228":[1,3,18],"229":[4,3,29],"230":[4,3,27],"231":[11,2,37],"232":[2,2,51],"233":[1,2,34],"234":[2,1,38],"235":[1,2,17],"236":[1,2,38],"237":[1,2,1],"238":[1,3,18],"239":[3,3,28],"240":[3,3,27],"241":[2,2,54],"242":[11,2,37],"243":[1,2,23],"244":[3,1,39],"245":[1,3,17],"246":[1,3,21],"247":[1,3,1],"248":[3,4,12],"249":[3,4,20],"250":[1,3,14],"251":[4,1,26],"252":[1,4,16],"253":[1,4,1],"254":[1,5,31],"255":[2,5,33],"256":[1,4,1],"257":[1,5,15],"258":[3,5,16],"259":[1,4,11],"260":[2,1,33],"261":[1,2,23],"262":[1,2,18],"263":[1,1,1],"264":[14,2,75],"265":[21,2,88],"266":[21,2,159],"267":[2,1,90],"268":[2,2,24],"269":[1,1,21],"270":[2,1,29],"271":[2,1,41],"272":[1,1,15],"273":[1,2,9],"274":[1,2,17],"275":[1,2,20],"276":[1,2,62],"277":[1,2,64],"278":[1,2,48],"279":[1,1,64],"280":[1,1,50],"281":[1,2,73],"282":[1,2,31],"283":[1,2,17],"284":[1,2,18],"285":[1,2,39],"286":[1,2,19],"287":[1,2,37],"288":[1,2,18],"289":[1,2,35],"290":[1,2,20],"291":[1,2,38],"292":[1,2,19],"293":[1,2,14],"294":[1,2,17],"295":[1,2,14],"296":[1,2,20],"297":[1,2,20],"298":[1,1,51],"299":[1,1,79],"300":[4,1,107],"301":[4,1,64],"302":[2,1,69],"303":[2,1,24],"304":[1,1,107],"305":[2,1,47],"306":[8,1,1],"307":[1,8,25],"308":[8,8,61],"309":[7,8,54],"310":[6,8,31],"311":[6,8,25],"312":[7,8,25],"313":[5,8,20],"314":[6,8,17],"315":[5,8,58],"316":[7,8,66],"317":[4,8,65],"318":[5,8,28],"319":[4,8,62],"320":[1,1,1],"321":[3,1,12],"322":[1,1,11],"323":[4,1,41],"324":[3,1,63],"325":[5,1,35],"326":[3,5,20],"327":[1,7,11],"328":[2,7,5],"329":[3,5,46],"330":[1,6,23],"331":[1,5,5],"332":[4,1,40],"333":[2,4,25],"334":[2,6,44],"335":[2,7,42],"336":[3,6,53],"337":[3,4,58],"338":[2,7,42],"339":[2,8,9],"340":[3,8,12],"341":[1,4,18],"342":[1,5,20],"343":[2,6,88],"344":[3,4,82],"345":[2,7,31],"346":[2,7,32],"347":[2,7,19],"348":[4,7,20],"349":[4,7,73],"350":[3,6,37],"351":[4,6,35],"352":[4,9,49],"353":[4,1,1],"354":[2,1,1],"355":[2,1,17],"356":[5,2,72],"357":[5,2,96],"358":[1,2,87],"359":[3,1,1],"360":[5,1,1],"361":[2,1,20],"362":[2,1,30],"363":[1,2,7],"364":[2,2,3],"365":[1,2,3],"366":[3,1,57],"367":[2,3,38],"368":[4,5,111],"369":[4,5,116],"370":[2,3,86],"371":[1,1,1],"372":[3,1,11],"373":[1,1,11],"374":[2,1,1],"375":[2,3,32],"376":[2,3,41],"377":[2,3,63],"378":[2,1,40],"379":[3,2,102],"380":[4,5,107],"381":[3,5,173],"382":[2,2,94],"383":[2,2,51],"384":[1,1,17],"385":[6,2,29],"386":[2,2,68],"387":[2,1,34],"388":[3,2,49],"389":[2,5,60],"390":[4,2,35],"391":[3,1,51],"392":[2,1,21],"393":[3,2,124],"394":[3,2,133],"395":[1,1,1],"396":[3,1,11],"397":[1,1,9],"398":[1,1,68],"399":[5,3,32],"400":[9,1,40],"401":[2,9,78],"402":[2,1,33],"403":[1,1,1],"404":[2,1,27],"405":[2,1,48],"406":[3,1,5],"407":[3,1,65],"408":[2,1,69],"409":[3,2,76],"410":[2,5,32],"411":[2,5,45],"412":[2,5,102],"413":[5,1,1],"414":[5,5,17],"415":[2,5,121],"416":[4,5,139],"417":[4,1,28],"418":[2,1,95],"419":[5,1,1],"420":[6,6,17],"421":[5,6,33],"422":[4,6,28],"423":[4,6,35],"424":[6,6,25],"425":[4,6,49],"426":[2,1,42],"427":[4,1,72],"428":[5,1,85],"429":[5,1,93],"430":[5,1,82],"431":[4,1,1],"432":[1,5,22],"433":[1,5,33],"434":[1,5,36],"435":[5,5,72]},"averageFieldLength":[2.9541284403669725,3.1857798165137616,45.03440366972477],"storedFields":{"0":{"href":"/builder#builder-intro","html":"","isPage":true,"text":"","title":"builder intro","titles":[]},"1":{"href":"/stack#stack","html":"\n

Intro ..............

","isPage":true,"text":"\nIntro ..............","title":"Stack","titles":[]},"2":{"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

\"Sequence

\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.\n\nStart talking to support today","title":"Support","titles":[]},"3":{"href":"/wallet#wallet","html":"\n

sadfasdf

","isPage":true,"text":"\nsadfasdf","title":"Wallet","titles":[]},"4":{"href":"/api/marketplace#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.

\n

#TODO add example from solutions

","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.\n#TODO add example from solutions","title":"Marketplace API","titles":[]},"5":{"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. Sign up to grab your\nAPI access key before following the steps below.\n","title":"Metadata API","titles":[]},"6":{"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

    \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
    • set metadataField (assetType) to one of the following\n
        \n
      • image
      • \n
      • animation_url
      • \n
      • audio
      • \n
      • video
      • \n
      \n
    • \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\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"]},"7":{"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"]},"8":{"href":"/api/relayer#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.

","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.","title":"Relayer API","titles":[]},"9":{"href":"/guides/discord#deploy-an-in-game-collectibles-contract","html":"\n","isPage":true,"text":"\n","title":"Deploy an in-game collectibles contract","titles":[null]},"10":{"href":"/guides/discord#query-contract-details","html":"\n","isPage":false,"text":"\n","title":"Query contract details","titles":[null]},"11":{"href":"/guides/lootbox#deploy-an-in-game-collectibles-contract","html":"\n","isPage":true,"text":"\n","title":"Deploy an in-game collectibles contract","titles":[null]},"12":{"href":"/guides/lootbox#query-contract-details","html":"\n","isPage":false,"text":"\n","title":"Query contract details","titles":[null]},"13":{"href":"/guides/lootbox#fetch-token-balances-of-a-wallet","html":"\n
    \n
  1. \n

    Builder Signup & Project Creation

    \n
  2. \n
  3. \n

    Access Key Management

    \n
  4. \n
  5. \n

    Deploy a Contract

    \n
  6. \n
  7. \n

    Sponsor contract gas

    \n
  8. \n
  9. \n

    Deploying a cloudflare worker

    \n
  10. \n
  11. \n

    Generating AI Prompts & Images

    \n
  12. \n
  13. \n

    Uploading metadata to Sequence Metadata Service

    \n
  14. \n
  15. \n

    Minting Onchain with Relayer

    \n
  16. \n
  17. \n

    iframe-to-Webapp Communication

    \n
  18. \n
  19. \n

    Secure your cloudflare relayer from outside requests

    \n
  20. \n
","isPage":false,"text":"\n\n\nBuilder Signup & Project Creation\n\n\nAccess Key Management\n\n\nDeploy a Contract\n\n\nSponsor contract gas\n\n\nDeploying a cloudflare worker\n\n\nGenerating AI Prompts & Images\n\n\nUploading metadata to Sequence Metadata Service\n\n\nMinting Onchain with Relayer\n\n\niframe-to-Webapp Communication\n\n\nSecure your cloudflare relayer from outside requests\n\n","title":"Fetch token balances of a wallet","titles":[null]},"14":{"href":"/guides/unity-guide#integrate-sequencekit-with-waas","html":"\n","isPage":true,"text":"\n","title":"Integrate SequenceKit with WaaS","titles":[null]},"15":{"href":"/guides/unity-guide#deploy-a-collectibles-contract","html":"\n","isPage":false,"text":"\n","title":"Deploy a collectibles contract","titles":[null]},"16":{"href":"/guides/unity-guide#deploy-a-remote-minter","html":"\n","isPage":false,"text":"\n","title":"Deploy a remote minter","titles":[null]},"17":{"href":"/guides/unity-guide#mint-in-game-achievement-tokens","html":"\n","isPage":false,"text":"\n","title":"Mint in-game achievement tokens","titles":[null]},"18":{"href":"/guides/unity-guide#burn-in-game-achievement-tokens","html":"\n","isPage":false,"text":"\n","title":"Burn in-game achievement tokens","titles":[null]},"19":{"href":"/guides/unity-guide#integrate-an-embedded-marketplace","html":"\n","isPage":false,"text":"\n","title":"Integrate an embedded marketplace","titles":[null]},"20":{"href":"/guides/webgl-guide#integrate-sequencekit-with-waas","html":"\n","isPage":true,"text":"\n","title":"Integrate SequenceKit with WaaS","titles":[null]},"21":{"href":"/guides/webgl-guide#deploy-a-collectibles-contract","html":"\n","isPage":false,"text":"\n","title":"Deploy a collectibles contract","titles":[null]},"22":{"href":"/guides/webgl-guide#deploy-a-remote-minter","html":"\n","isPage":false,"text":"\n","title":"Deploy a remote minter","titles":[null]},"23":{"href":"/guides/webgl-guide#mint-in-game-achievement-tokens","html":"\n","isPage":false,"text":"\n","title":"Mint in-game achievement tokens","titles":[null]},"24":{"href":"/guides/webgl-guide#burn-in-game-achievement-tokens","html":"\n","isPage":false,"text":"\n","title":"Burn in-game achievement tokens","titles":[null]},"25":{"href":"/guides/webgl-guide#integrate-an-embedded-marketplace","html":"\n","isPage":false,"text":"\n","title":"Integrate an embedded marketplace","titles":[null]},"26":{"href":"/solutions/minter#mint-tokens-using-builder-manually","html":"\n","isPage":true,"text":"\n","title":"Mint tokens using Builder manually","titles":[null]},"27":{"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]},"28":{"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]},"29":{"href":"/solutions/onramps#integrate-onramp-on-web","html":"\n","isPage":true,"text":"\n","title":"Integrate onramp on web","titles":[null]},"30":{"href":"/api/indexer/01-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\n

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

\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.\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\nThe Sequence Indexer is a modular web3 service that makes it easy to query blockchain token\nand NFT data from Ethereum-compatible networks. The Indexer automatically indexes every\nERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.\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":[]},"31":{"href":"/api/indexer/01-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"]},"32":{"href":"/api/indexer/01-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\n","title":"Getting Started","titles":["Indexer"]},"33":{"href":"/api/indexer/08-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":[]},"34":{"href":"/guides/templates/02-building-relaying-server#building-a-relaying-server","html":"\n

With Sequence, you can create a smart contract wallet your server can use to dispatch transactions for your users\nwithout you having to be worried about transaction speed, throughput and re-orgs.

\n

:::info Sequentual Transactions\nBy default, Sequence transactions will be executed sequentially.\n:::

\n","isPage":true,"text":"\nWith Sequence, you can create a smart contract wallet your server can use to dispatch transactions for your users\nwithout you having to be worried about transaction speed, throughput and re-orgs.\n:::info Sequentual Transactions\nBy default, Sequence transactions will be executed sequentially.\n:::\n","title":"Building a Relaying Server","titles":[]},"35":{"href":"/guides/templates/02-building-relaying-server#nodejs-server","html":"\n

Your server will need an EOA wallet that will be able to sign messages. It will be the owner of your server-side Sequence\nwallet which will be used to dispatch transactions.

\n

This Sequence wallet should have the correct ownership at your contract level, not the EOA.\nAlso, the Sequence wallet should be sufficiently funded in order to pay fees needed by the relayer to dispatch your transactions.

\n

Using this approach - versus the next section (with sponsoring) - includes the ability to pay for gas in any available currency by our relayer (e.g. 'MATIC', 'DAI', 'USDC', 'WETH').

\n
import { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n  signer: walletEOA,\n  projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1:     Ethereum Mainnet\n// - 137:   Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137);\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n  "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n  senderAddress,\n  recipientAddress,\n  id,\n]);\n \nconst txn = {\n  to: erc721TokenAddress,\n  data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n  console.log(`Unexpected status: ${txnReceipt.status}`);\n}
\n

You can also enforce a specific way to pay for gas fees, or the openning of a specific Sequence wallet.

\n
import { Session } from '@0xsequence/auth'\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider)\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n  signer: walletEOA,\n  projectAccessKey: '<access_key>'\n  // OPTIONAL: Multiple wallets could be found for the same EOA\n  // to enforce a specific wallet you can use the following callback\n  selectWallet: async (wallets: string[]) => {\n    const found = wallets.find(w => w === EXPECTED_WALLET_ADDRESS)\n    if (!found) throw Error('wallet not found')\n    // Returning the wallet address will make the session use it\n    // returning undefined will make the session create a new wallet\n    return found\n  }\n})\n \nconst signer = session.account.getSigner(137, {\n  // OPTIONAL: You can also enforce a specific way to pay for gas fees\n  // if not provided the sdk will select one for you\n  selectFee: async (\n    _txs: any,\n    options: FeeOption[]\n  ) => {\n    // Find the option to pay with native tokens\n    const found = options.find(o => !o.token.contractAddress)\n    if (!found) throw Error('fee option not found')\n    return found\n  }\n})\n \n// Initialize the contract\nconst usdc = new ethers.Contract(\n  '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC on Polygon\n  ERC_20_ABI,\n  signer\n)\n \n// Send the transaction\nconst txnResponse = await usdc.transfer(recipient, 1)\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n  console.log(`Unexpected status: ${txnReceipt.status}`)\n}
\n

:::caution Triggers migration

\n

Openning a session may trigger a migration of your Sequence wallet to a new version, this could be v1 to v2 or v2 to future versions.

\n

Migration is a one-way process, once your wallet is migrated it cannot be reverted to a previous version.

\n

To catch any unwanted migration, you can use the onMigration callback.\n:::

\n","isPage":false,"text":"\nYour server will need an EOA wallet that will be able to sign messages. It will be the owner of your server-side Sequence\nwallet which will be used to dispatch transactions.\nThis Sequence wallet should have the correct ownership at your contract level, not the EOA.\nAlso, the Sequence wallet should be sufficiently funded in order to pay fees needed by the relayer to dispatch your transactions.\nUsing this approach - versus the next section (with sponsoring) - includes the ability to pay for gas in any available currency by our relayer (e.g. 'MATIC', 'DAI', 'USDC', 'WETH').\nimport { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1: Ethereum Mainnet\n// - 137: Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137);\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n senderAddress,\n recipientAddress,\n id,\n]);\n \nconst txn = {\n to: erc721TokenAddress,\n data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n console.log(`Unexpected status: ${txnReceipt.status}`);\n}\nYou can also enforce a specific way to pay for gas fees, or the openning of a specific Sequence wallet.\nimport { Session } from '@0xsequence/auth'\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider)\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: '<access_key>'\n // OPTIONAL: Multiple wallets could be found for the same EOA\n // to enforce a specific wallet you can use the following callback\n selectWallet: async (wallets: string[]) => {\n const found = wallets.find(w => w === EXPECTED_WALLET_ADDRESS)\n if (!found) throw Error('wallet not found')\n // Returning the wallet address will make the session use it\n // returning undefined will make the session create a new wallet\n return found\n }\n})\n \nconst signer = session.account.getSigner(137, {\n // OPTIONAL: You can also enforce a specific way to pay for gas fees\n // if not provided the sdk will select one for you\n selectFee: async (\n _txs: any,\n options: FeeOption[]\n ) => {\n // Find the option to pay with native tokens\n const found = options.find(o => !o.token.contractAddress)\n if (!found) throw Error('fee option not found')\n return found\n }\n})\n \n// Initialize the contract\nconst usdc = new ethers.Contract(\n '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC on Polygon\n ERC_20_ABI,\n signer\n)\n \n// Send the transaction\nconst txnResponse = await usdc.transfer(recipient, 1)\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n console.log(`Unexpected status: ${txnReceipt.status}`)\n}\n:::caution Triggers migration\nOpenning a session may trigger a migration of your Sequence wallet to a new version, this could be v1 to v2 or v2 to future versions.\nMigration is a one-way process, once your wallet is migrated it cannot be reverted to a previous version.\nTo catch any unwanted migration, you can use the onMigration callback.\n:::\n","title":"Nodejs Server","titles":["Building a Relaying Server"]},"36":{"href":"/guides/templates/02-building-relaying-server#nodejs-server-with-gas-sponsoring-using-sequence-builder","html":"\n

If you want to have your transactions sponsored & paid for with a credit card, you can follow the below steps before beginning your code, at the following link: https://sequence.build/

\n

By sponsoring your transaction, you can now just send the transaction without a fee object and not have to fund the smart contract wallet before relaying any transactions.

\n

:::info Already Deployed Contract\nFor this example, we assume you have a smart contract deployed with a contract address to include in the last step.\n:::

\n","isPage":false,"text":"\nIf you want to have your transactions sponsored & paid for with a credit card, you can follow the below steps before beginning your code, at the following link: https://sequence.build/\nBy sponsoring your transaction, you can now just send the transaction without a fee object and not have to fund the smart contract wallet before relaying any transactions.\n:::info Already Deployed Contract\nFor this example, we assume you have a smart contract deployed with a contract address to include in the last step.\n:::\n","title":"Nodejs Server with Gas Sponsoring using Sequence Builder","titles":["Building a Relaying Server"]},"37":{"href":"/guides/templates/02-building-relaying-server#a-create-dapp","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"A. Create Dapp","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"38":{"href":"/guides/templates/02-building-relaying-server#b-new-dapp","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"B. New Dapp","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"39":{"href":"/guides/templates/02-building-relaying-server#c1-gas-tank","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"C.1 Gas Tank","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"40":{"href":"/guides/templates/02-building-relaying-server#c2-add-gas","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"C.2 Add Gas","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"41":{"href":"/guides/templates/02-building-relaying-server#c3-add-sponsored-address","html":"\n

\"Sequence

\n

The following is example code that implements a relayed transaction, same as the above example (i.e. Nodejs Server) but without fees, taken care of by the Sequence Builder.

\n
import { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n  signer: walletEOA,\n  projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1:     Ethereum Mainnet\n// - 137:   Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137, {\n  // OPTIONAL: This ensures that the transaction is paid for by the gas tank\n  // but if not provided, the gas tank will be used anyway\n  selectFee: async (_txs: any, _options: FeeOption[]) => {\n    return undefined;\n  },\n});\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n  "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n  senderAddress,\n  recipientAddress,\n  id,\n]);\n \nconst txn = {\n  to: erc721TokenAddress,\n  data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n  console.log(`Unexpected status: ${txnReceipt.status}`);\n}
\n","isPage":false,"text":"\n\nThe following is example code that implements a relayed transaction, same as the above example (i.e. Nodejs Server) but without fees, taken care of by the Sequence Builder.\nimport { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1: Ethereum Mainnet\n// - 137: Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137, {\n // OPTIONAL: This ensures that the transaction is paid for by the gas tank\n // but if not provided, the gas tank will be used anyway\n selectFee: async (_txs: any, _options: FeeOption[]) => {\n return undefined;\n },\n});\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n senderAddress,\n recipientAddress,\n id,\n]);\n \nconst txn = {\n to: erc721TokenAddress,\n data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n console.log(`Unexpected status: ${txnReceipt.status}`);\n}\n","title":"C.3 Add Sponsored Address","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"42":{"href":"/guides/templates/02-building-relaying-server#parallel-transactions","html":"\n

If you want to send multiple independent transactions without needing to batch them, you can also send them in distinct nonce spaces.\nUsing distinct nonce spaces for your transactions signals to the relayer that there's no dependency between them and that\nthey can be executed on-chain in any order.

\n

This allows the transactions to be dispatched immediately in an unbuffered way without having to wait for a full batch.\nHere is an example of how to do that:

\n
// Generate random nonce spaces with ~0% probability of collision\nconst randomNonceSpace1 = ethers.BigNumber.from(\n  ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\nconst randomNonceSpace2 = ethers.BigNumber.from(\n  ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\n \n// Create signers for each nonce space\nconst signer1 = session.account.getSigner(137, {\n  nonceSpace: randomNonceSpace1,\n});\n \nconst signer2 = session.account.getSigner(137, {\n  nonceSpace: randomNonceSpace2,\n});\n \n// Generate transactions\nconst txn1 = {\n  to: tokenContract.address,\n  data: erc20Interface.encodeFunctionData("transfer", [recipient1, amount1]),\n};\n \nconst txn2 = {\n  to: tokenContract.address,\n  data: erc20Interface.encodeFunctionData("transfer", [recipient2, amount2]),\n};\n \n// Dispatch transactions, which can now be executed in parallel\nawait Promise.all([\n  signer1.sendTransaction(txn1),\n  signer2.sendTransaction(txn2),\n]);
\n

If batching transactions is not a problem for your use-case, you can call await wallet.sendTransaction(txns).\nYou can read more about batch transactions in Sending Batched Transactions.

","isPage":false,"text":"\nIf you want to send multiple independent transactions without needing to batch them, you can also send them in distinct nonce spaces.\nUsing distinct nonce spaces for your transactions signals to the relayer that there's no dependency between them and that\nthey can be executed on-chain in any order.\nThis allows the transactions to be dispatched immediately in an unbuffered way without having to wait for a full batch.\nHere is an example of how to do that:\n// Generate random nonce spaces with ~0% probability of collision\nconst randomNonceSpace1 = ethers.BigNumber.from(\n ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\nconst randomNonceSpace2 = ethers.BigNumber.from(\n ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\n \n// Create signers for each nonce space\nconst signer1 = session.account.getSigner(137, {\n nonceSpace: randomNonceSpace1,\n});\n \nconst signer2 = session.account.getSigner(137, {\n nonceSpace: randomNonceSpace2,\n});\n \n// Generate transactions\nconst txn1 = {\n to: tokenContract.address,\n data: erc20Interface.encodeFunctionData("transfer", [recipient1, amount1]),\n};\n \nconst txn2 = {\n to: tokenContract.address,\n data: erc20Interface.encodeFunctionData("transfer", [recipient2, amount2]),\n};\n \n// Dispatch transactions, which can now be executed in parallel\nawait Promise.all([\n signer1.sendTransaction(txn1),\n signer2.sendTransaction(txn2),\n]);\nIf batching transactions is not a problem for your use-case, you can call await wallet.sendTransaction(txns).\nYou can read more about batch transactions in Sending Batched Transactions.","title":"Parallel Transactions","titles":["Building a Relaying Server"]},"43":{"href":"/guides/templates/03-mint-collectibles-serverless#mint-collectibles-using-a-gasless-serverless-relayer","html":"\n

Time to complete: 20-30 minutes

\n

The Sequence Relayer can be implemented on a serverless 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.

\n

The following steps will guide you through how to build your hosted minter API in 4 steps:

\n
    \n
  1. Setup Cloudflare environment with wrangler cli and deploy a test
  2. \n
  3. Deploy, sponsor and update Metadata for an ERC1155 contract with Builder
  4. \n
  5. Use EthAuthProof to prevent EOA DDoS
  6. \n
  7. Mint a collectible to wallet
  8. \n
\n

The result, a secure API with the following specs:

\n\n

:::info Difficulty\nYou need basic knowledge of wrangler cli, npm, and Sequence Builder in order to complete this implementation.\n:::

\n","isPage":true,"text":"\nTime to complete: 20-30 minutes\nThe Sequence Relayer can be implemented on a serverless 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.\nThe following steps will guide you through how to build your hosted minter API in 4 steps:\n\nSetup Cloudflare environment with wrangler cli and deploy a test\nDeploy, sponsor and update Metadata for an ERC1155 contract with Builder\nUse EthAuthProof to prevent EOA DDoS\nMint a collectible to wallet\n\nThe result, a secure API with the following specs:\n\nHTTPS GET: returns blockNumber\nHTTPS POST(proof, address): mints a collectible & returns transaction hash\n\n:::info Difficulty\nYou need basic knowledge of wrangler cli, npm, and Sequence Builder in order to complete this implementation.\n:::\n","title":"Mint Collectibles Using a Gasless Serverless Relayer","titles":[]},"44":{"href":"/guides/templates/03-mint-collectibles-serverless#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test","html":"\n

In order to create the project from scratch, first create a project with mkdir, cd into the project, and run pnpm init to create a package.json.

\n

Next, make sure wrangler cli is installed in your project and set the wrangler keyword as an alias in your local bash session.

\n
pnpm install wrangler --save-dev\nalias wrangler='./node_modules/.bin/wrangler'
\n

Create an account on the Cloudflare site and perform a login step to login to your Cloudflare dashboard to connect the Cloudflare platform to your local development environment.

\n
wrangler login
\n

Once logged in, initialize the project in the directory by accepting one of the randomly generated project folder names provided that you like, and follow the prompts to initialize your git tracked typescript "Hello World" Worker application.

\n
wrangler init
\n

To complete this step, you should press enter 4 times after wrangler init with the last step answered as No to decline deployment.

\n

This will clone down a starter repository that can be used to deploy code to the cloud.

\n

:::info Local API Testing\nAt any point in the guide, you can use the wrangler dev command in the project folder for local testing\n:::

\n","isPage":false,"text":"\nIn order to create the project from scratch, first create a project with mkdir, cd into the project, and run pnpm init to create a package.json.\nNext, make sure wrangler cli is installed in your project and set the wrangler keyword as an alias in your local bash session.\npnpm install wrangler --save-dev\nalias wrangler='./node_modules/.bin/wrangler'\nCreate an account on the Cloudflare site and perform a login step to login to your Cloudflare dashboard to connect the Cloudflare platform to your local development environment.\nwrangler login\nOnce logged in, initialize the project in the directory by accepting one of the randomly generated project folder names provided that you like, and follow the prompts to initialize your git tracked typescript "Hello World" Worker application.\nwrangler init\nTo complete this step, you should press enter 4 times after wrangler init with the last step answered as No to decline deployment.\nThis will clone down a starter repository that can be used to deploy code to the cloud.\n:::info Local API Testing\nAt any point in the guide, you can use the wrangler dev command in the project folder for local testing\n:::\n","title":"1. Setup Cloudflare environment with wrangler cli and deploy a test","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"45":{"href":"/guides/templates/03-mint-collectibles-serverless#deploy-test","html":"\n

Finally, cd into the randomly generated project folder, and perform a wrangler deploy command.

\n

This should print a URL, which you can enter in the browser the URL https://<app>.<account>.workers.dev to view the Hello World! result.

\n","isPage":false,"text":"\nFinally, cd into the randomly generated project folder, and perform a wrangler deploy command.\nThis should print a URL, which you can enter in the browser the URL https://<app>.<account>.workers.dev to view the Hello World! result.\n","title":"Deploy Test","titles":["Mint Collectibles Using a Gasless Serverless Relayer","1. Setup Cloudflare environment with wrangler cli and deploy a test",null]},"46":{"href":"/guides/templates/03-mint-collectibles-serverless#2-deploy-sponsor-and-update-metadata-for-an-erc1155-contract-with-builder","html":"\n

First, follow this guide to deploy a contract.

\n

Then, one must update the role access of the contract in the Builder to only receive requests from the minter wallet address, which can be done in 2 steps.

\n

You can do this in Sequence Builder by providing minter permission to your Sequence Wallet Relayer Address.

\n

In order to know what the relayer address you are working with is, one must first either:

\n
    \n
  1. Have one generated for you using this dapp by selecting your network, and generating a wallet keypair with the generate local wallet button
  2. \n
  3. Or, you can print locally the account address produced from an EOA wallet private key using the following code snippet:
  4. \n
\n
import { Session } from "@0xsequence/auth";\nimport { ethers } from "ethers";\n \n(async () => {\n  // Generate a new EOA\n  // const wallet = ethers.Wallet.createRandom()\n  // const privateKey = wallet.privateKey\n \n  // Or, use an existing EOA private key\n  const privateKey = "";\n  const provider = new ethers.providers.JsonRpcProvider(\n    "https://nodes.sequence.app/mainnet"\n  );\n \n  // Create your server EOA\n  const walletEOA = new ethers.Wallet(privateKey, provider);\n \n  // Open a Sequence session, this will find or create\n  // a Sequence wallet controlled by your server EOA\n  const session = await Session.singleSigner({\n    signer: walletEOA,\n    projectAccessKey: "access_key",\n  });\n \n  const signer = session.account.getSigner(1);\n  console.log(`Your relayer wallet address: ${signer.account.address}`);\n})();
\n

To do so, open your project, navigate to the Contracts page, select your Linked contracts and under Write Contract tab expand the grantRole method.

\n

Complete with the following details:

\n

bytes32 role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6

\n

address account: <Generated Sequence Relayer Wallet Address>

\n\n

Where the role string inputted is the result of keccak256("MINTER_ROLE") in solidity or ethers.utils.keccak256(ethers.utils.toUtf8Bytes("MINTER_ROLE")) in javascript

\n

This makes it so that only your specific address can mint from the contract, it will error otherwise.

\n

Complete the role update by clicking write and sign the sponsored transaction.

\n","isPage":false,"text":"\nFirst, follow this guide to deploy a contract.\nThen, one must update the role access of the contract in the Builder to only receive requests from the minter wallet address, which can be done in 2 steps.\nYou can do this in Sequence Builder by providing minter permission to your Sequence Wallet Relayer Address.\nIn order to know what the relayer address you are working with is, one must first either:\n\nHave one generated for you using this dapp by selecting your network, and generating a wallet keypair with the generate local wallet button\nOr, you can print locally the account address produced from an EOA wallet private key using the following code snippet:\n\nimport { Session } from "@0xsequence/auth";\nimport { ethers } from "ethers";\n \n(async () => {\n // Generate a new EOA\n // const wallet = ethers.Wallet.createRandom()\n // const privateKey = wallet.privateKey\n \n // Or, use an existing EOA private key\n const privateKey = "";\n const provider = new ethers.providers.JsonRpcProvider(\n "https://nodes.sequence.app/mainnet"\n );\n \n // Create your server EOA\n const walletEOA = new ethers.Wallet(privateKey, provider);\n \n // Open a Sequence session, this will find or create\n // a Sequence wallet controlled by your server EOA\n const session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: "access_key",\n });\n \n const signer = session.account.getSigner(1);\n console.log(`Your relayer wallet address: ${signer.account.address}`);\n})();\nTo do so, open your project, navigate to the Contracts page, select your Linked contracts and under Write Contract tab expand the grantRole method.\nComplete with the following details:\nbytes32 role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6\naddress account: <Generated Sequence Relayer Wallet Address>\n\nWhere the role string inputted is the result of keccak256("MINTER_ROLE") in solidity or ethers.utils.keccak256(ethers.utils.toUtf8Bytes("MINTER_ROLE")) in javascript\nThis makes it so that only your specific address can mint from the contract, it will error otherwise.\nComplete the role update by clicking write and sign the sponsored transaction.\n","title":"2. Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"47":{"href":"/guides/templates/03-mint-collectibles-serverless#update-metadata","html":"\n

Next, you'll need to update the metadata with your media or assets for your contract, which can be done by following this guide.

\n","isPage":false,"text":"\nNext, you'll need to update the metadata with your media or assets for your contract, which can be done by following this guide.\n","title":"Update metadata","titles":["Mint Collectibles Using a Gasless Serverless Relayer","2. Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder",null]},"48":{"href":"/guides/templates/03-mint-collectibles-serverless#contract-sponsoring","html":"\n

Finally, in order to sponsor the contract follow this guide to sponsor a contract.

\n","isPage":false,"text":"\nFinally, in order to sponsor the contract follow this guide to sponsor a contract.\n","title":"Contract sponsoring","titles":["Mint Collectibles Using a Gasless Serverless Relayer","2. Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder",null]},"49":{"href":"/guides/templates/03-mint-collectibles-serverless#3-use-ethauthproof-to-prevent-eoa-ddos","html":"\n

Now that we have a contract deployed, we can return to the cloudflare worker directory and project, and install ethers and 0xsequence to get access to sequence APIs in order to perform a proof validation that the request is coming from a trusted source, a sequence wallet.

\n
pnpm install 0xsequence @0xsequence/network
\n

Then, we have to add a type of middleware, after we check if it's a POST or GET request. If it's a POST request, verify that the passed in proofString and address are valid, as well as the environment variables.

\n

The code scaffold placed into src/index.ts would look like this, with callContract and getBlockNumber mocked out, using the mentioned verification step of calling verify before any contract call.

\n
import { sequence } from "0xsequence";\nimport { networks, findSupportedNetwork } from "@0xsequence/network";\n \nexport interface Env {\n  PKEY: string; // Private key for EOA wallet\n  CONTRACT_ADDRESS: string; // Deployed ERC1155 or ERC721 contract address\n  PROJECT_ACCESS_KEY: string; // From sequence.build\n  CHAIN_HANDLE: string; // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support\n}\n \n// use the sequence api to verify proof came from a sequence wallet\nconst verify = async (\n  chainId: string,\n  walletAddress: string,\n  ethAuthProofString: string\n): Promise<Boolean> => {\n  const api = new sequence.api.SequenceAPIClient("https://api.sequence.app");\n  const { isValid } = await api.isValidETHAuthProof({\n    chainId,\n    walletAddress,\n    ethAuthProofString,\n  });\n  return isValid;\n};\n \nasync function handleRequest(\n  request: Request,\n  env: Env,\n  ctx: ExecutionContext\n): Promise<Response> {\n  if (env.PKEY === undefined || env.PKEY === "") {\n    return new Response("Make sure PKEY is configured in your environment", {\n      status: 400,\n    });\n  }\n \n  if (env.CONTRACT_ADDRESS === undefined || env.CONTRACT_ADDRESS === "") {\n    return new Response(\n      "Make sure CONTRACT_ADDRESS is configured in your environment",\n      { status: 400 }\n    );\n  }\n \n  if (env.PROJECT_ACCESS_KEY === undefined || env.PROJECT_ACCESS_KEY === "") {\n    return new Response(\n      "Make sure PROJECT_ACCESS_KEY is configured in your environment",\n      { status: 400 }\n    );\n  }\n \n  if (env.CHAIN_HANDLE === undefined || env.CHAIN_HANDLE === "") {\n    return new Response(\n      "Make sure CHAIN_HANDLE is configured in your environment",\n      { status: 400 }\n    );\n  }\n \n  const chainConfig = findSupportedNetwork(env.CHAIN_HANDLE);\n \n  if (chainConfig === undefined) {\n    return new Response("Unsupported network or unknown CHAIN_HANDLE", {\n      status: 400,\n    });\n  }\n \n  // POST request\n  if (request.method === "POST") {\n    // parse the request body as JSON\n    const body = await request.json();\n    const { proof, address, tokenId }: any = body;\n    try {\n      // check that the proof is valid\n      if (await verify(env.CHAIN_HANDLE, address, proof)) {\n        try {\n          // mocked call\n          const res = await callContract(request, env, address, tokenId);\n          return new Response(`${res.hash}`, { status: 200 });\n        } catch (err: any) {\n          console.log(err);\n          return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n            status: 400,\n          });\n        }\n      } else {\n        return new Response(`Unauthorized`, { status: 401 });\n      }\n    } catch (err: any) {\n      return new Response(`Unauthorized ${JSON.stringify(err)}`, {\n        status: 401,\n      });\n    }\n  }\n  // GET request\n  else {\n    try {\n      // mocked call\n      const res = await getBlockNumber(env.CHAIN_HANDLE, request);\n      return new Response(`Block Number: ${res}`);\n    } catch (err: any) {\n      return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n        status: 500,\n      });\n    }\n  }\n}\n \nconst getBlockNumber = async (\n  chainId: string,\n  request: Request\n): Promise<number> => {\n  return chainId;\n};\n \nconst callContract = async (\n  request: Request,\n  env: Env,\n  address: string,\n  tokenId: number\n): Promise<ethers.providers.TransactionResponse> => {\n  return { hash: "0x" } as any;\n};\n \nexport default {\n  async fetch(request: Request, env: Env, ctx: ExecutionContext) {\n    // Process the request and create a response\n    const response = await handleRequest(request, env, ctx);\n \n    // Set CORS headers\n    response.headers.set("Access-Control-Allow-Origin", "*");\n    response.headers.set(\n      "Access-Control-Allow-Methods",\n      "GET, POST, PUT, DELETE, OPTIONS"\n    );\n    response.headers.set("Access-Control-Allow-Headers", "Content-Type");\n \n    // return response\n    return response;\n  },\n};
\n","isPage":false,"text":"\nNow that we have a contract deployed, we can return to the cloudflare worker directory and project, and install ethers and 0xsequence to get access to sequence APIs in order to perform a proof validation that the request is coming from a trusted source, a sequence wallet.\npnpm install 0xsequence @0xsequence/network\nThen, we have to add a type of middleware, after we check if it's a POST or GET request. If it's a POST request, verify that the passed in proofString and address are valid, as well as the environment variables.\nThe code scaffold placed into src/index.ts would look like this, with callContract and getBlockNumber mocked out, using the mentioned verification step of calling verify before any contract call.\nimport { sequence } from "0xsequence";\nimport { networks, findSupportedNetwork } from "@0xsequence/network";\n \nexport interface Env {\n PKEY: string; // Private key for EOA wallet\n CONTRACT_ADDRESS: string; // Deployed ERC1155 or ERC721 contract address\n PROJECT_ACCESS_KEY: string; // From sequence.build\n CHAIN_HANDLE: string; // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support\n}\n \n// use the sequence api to verify proof came from a sequence wallet\nconst verify = async (\n chainId: string,\n walletAddress: string,\n ethAuthProofString: string\n): Promise<Boolean> => {\n const api = new sequence.api.SequenceAPIClient("https://api.sequence.app");\n const { isValid } = await api.isValidETHAuthProof({\n chainId,\n walletAddress,\n ethAuthProofString,\n });\n return isValid;\n};\n \nasync function handleRequest(\n request: Request,\n env: Env,\n ctx: ExecutionContext\n): Promise<Response> {\n if (env.PKEY === undefined || env.PKEY === "") {\n return new Response("Make sure PKEY is configured in your environment", {\n status: 400,\n });\n }\n \n if (env.CONTRACT_ADDRESS === undefined || env.CONTRACT_ADDRESS === "") {\n return new Response(\n "Make sure CONTRACT_ADDRESS is configured in your environment",\n { status: 400 }\n );\n }\n \n if (env.PROJECT_ACCESS_KEY === undefined || env.PROJECT_ACCESS_KEY === "") {\n return new Response(\n "Make sure PROJECT_ACCESS_KEY is configured in your environment",\n { status: 400 }\n );\n }\n \n if (env.CHAIN_HANDLE === undefined || env.CHAIN_HANDLE === "") {\n return new Response(\n "Make sure CHAIN_HANDLE is configured in your environment",\n { status: 400 }\n );\n }\n \n const chainConfig = findSupportedNetwork(env.CHAIN_HANDLE);\n \n if (chainConfig === undefined) {\n return new Response("Unsupported network or unknown CHAIN_HANDLE", {\n status: 400,\n });\n }\n \n // POST request\n if (request.method === "POST") {\n // parse the request body as JSON\n const body = await request.json();\n const { proof, address, tokenId }: any = body;\n try {\n // check that the proof is valid\n if (await verify(env.CHAIN_HANDLE, address, proof)) {\n try {\n // mocked call\n const res = await callContract(request, env, address, tokenId);\n return new Response(`${res.hash}`, { status: 200 });\n } catch (err: any) {\n console.log(err);\n return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n status: 400,\n });\n }\n } else {\n return new Response(`Unauthorized`, { status: 401 });\n }\n } catch (err: any) {\n return new Response(`Unauthorized ${JSON.stringify(err)}`, {\n status: 401,\n });\n }\n }\n // GET request\n else {\n try {\n // mocked call\n const res = await getBlockNumber(env.CHAIN_HANDLE, request);\n return new Response(`Block Number: ${res}`);\n } catch (err: any) {\n return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n status: 500,\n });\n }\n }\n}\n \nconst getBlockNumber = async (\n chainId: string,\n request: Request\n): Promise<number> => {\n return chainId;\n};\n \nconst callContract = async (\n request: Request,\n env: Env,\n address: string,\n tokenId: number\n): Promise<ethers.providers.TransactionResponse> => {\n return { hash: "0x" } as any;\n};\n \nexport default {\n async fetch(request: Request, env: Env, ctx: ExecutionContext) {\n // Process the request and create a response\n const response = await handleRequest(request, env, ctx);\n \n // Set CORS headers\n response.headers.set("Access-Control-Allow-Origin", "*");\n response.headers.set(\n "Access-Control-Allow-Methods",\n "GET, POST, PUT, DELETE, OPTIONS"\n );\n response.headers.set("Access-Control-Allow-Headers", "Content-Type");\n \n // return response\n return response;\n },\n};\n","title":"3. Use EthAuthProof to prevent EOA DDoS","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"50":{"href":"/guides/templates/03-mint-collectibles-serverless#add-cloudflare-environment-variables","html":"\n

Then, pass in the environment variables for your build by updating the [vars] section in your wrangler.toml.

\n
[vars]\nPKEY = "" # Private key for EOA wallet\nCONTRACT_ADDRESS = "" # // Deployed ERC1155 or ERC721 contract address\nPROJECT_ACCESS_KEY = "" # From sequence.build\nCHAIN_HANDLE = "" # // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support
\n","isPage":false,"text":"\nThen, pass in the environment variables for your build by updating the [vars] section in your wrangler.toml.\n[vars]\nPKEY = "" # Private key for EOA wallet\nCONTRACT_ADDRESS = "" # // Deployed ERC1155 or ERC721 contract address\nPROJECT_ACCESS_KEY = "" # From sequence.build\nCHAIN_HANDLE = "" # // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support\n","title":"Add cloudflare environment variables","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"51":{"href":"/guides/templates/03-mint-collectibles-serverless#implement-window-object-in-wrangler-template","html":"\n

It should be noted, if you try to deploy this you'll get a missing window object required by the web3 modules.

\n

To prevent this, add the following line to your wrangler.toml file to make the environment compatible.

\n
...\nnode_compat = true # add this line\n...
\n","isPage":false,"text":"\nIt should be noted, if you try to deploy this you'll get a missing window object required by the web3 modules.\nTo prevent this, add the following line to your wrangler.toml file to make the environment compatible.\n...\nnode_compat = true # add this line\n...\n","title":"Implement window object in wrangler template","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"52":{"href":"/guides/templates/03-mint-collectibles-serverless#testing-the-deploy","html":"\n

You can now redeploy using wrangler deploy

\n

And perform a curl request to test your endpoint like such:

\n
curl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'\n\n... invalid proof string ...\n\n# and if you replace with actual proof (from a wallet client login) and address on polygon, it should return\nsuccess
\n

You can acquire your wallet address proof by using this dapp and follow the below steps.

\n","isPage":false,"text":"\nYou can now redeploy using wrangler deploy\nAnd perform a curl request to test your endpoint like such:\ncurl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'\n\n... invalid proof string ...\n\n# and if you replace with actual proof (from a wallet client login) and address on polygon, it should return\nsuccess\nYou can acquire your wallet address proof by using this dapp and follow the below steps.\n","title":"Testing the deploy","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"53":{"href":"/guides/templates/03-mint-collectibles-serverless#using-the-ethauthproof-viewer-dapp","html":"\n

When you arrive on the page, the first thing you should do is select a network.

\n

Then you have an option to either connect and generate the Proof, or, generate a local wallet

\n

\"ETHAuthProof

\n

Press the connect button and then copy to clipboard.

\n

\"ETHAuthProof

\n

It should be noted, it is best not to share this ETHAuthProof with anyone as this means someone can prove ownership of your wallet and interact with specific APIs.

\n

Finally, replace the url with your app from this step, the <some_proof> with the generated value copied from the viewer dapp, and <some_address> with your wallet address and it should return just the mocked 0x string.

\n
curl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'
\n","isPage":false,"text":"\nWhen you arrive on the page, the first thing you should do is select a network.\nThen you have an option to either connect and generate the Proof, or, generate a local wallet\n\nPress the connect button and then copy to clipboard.\n\nIt should be noted, it is best not to share this ETHAuthProof with anyone as this means someone can prove ownership of your wallet and interact with specific APIs.\nFinally, replace the url with your app from this step, the <some_proof> with the generated value copied from the viewer dapp, and <some_address> with your wallet address and it should return just the mocked 0x string.\ncurl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'\n","title":"Using the ETHAuthProof Viewer dapp","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"54":{"href":"/guides/templates/03-mint-collectibles-serverless#4-mint-a-collectible-to-wallet","html":"\n

Finally, to deploy and mint a collectible from the sponsored contract address, we install the following packages

\n
pnpm install @0xsequence/auth ethers@5.7.2
\n

and implement the callContract and getBlockNumber methods previously mocked out as follows:

\n
import { ethers } from 'ethers'\nimport { Session, SessionSettings } from '@0xsequence/auth'\n \n...\n \nconst getBlockNumber = async (chainId: string, request: Request): Promise<number> => {\n\tconst nodeUrl = `https://nodes.sequence.app/${chainId}`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n\treturn await provider.getBlockNumber()\n}\n \nconst callContract = async (request: Request, env: Env, address: string, tokenId: number): Promise<ethers.providers.TransactionResponse> => {\n \n\tconst nodeUrl = `https://nodes.sequence.app/${env.CHAIN_HANDLE}`\n\tconst relayerUrl = `https://{env.CHAIN_HANDLE}-relayer.sequence.app`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n    const contractAddress = env.CONTRACT_ADDRESS\n \n    // create EOA from private key\n\tconst walletEOA = new ethers.Wallet(env.PKEY, provider);\n \n\t// instantiate settings\n\tconst settings: Partial<SessionSettings> = {\n\t\tnetworks: [{\n\t\t\t...networks[findSupportedNetwork(env.CHAIN_HANDLE)!.chainId],\n\t\t\trpcUrl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl,\n\t\t\tprovider: provider,\n\t\t\trelayer: {\n\t\t\t\turl: relayerUrl,\n\t\t\t\tprovider: {\n\t\t\t\t\turl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t}\n \n    // create a single signer sequence wallet session\n\tconst session = await Session.singleSigner({\n\t\tsettings: settings,\n\t\tsigner: walletEOA,\n\t\tprojectAccessKey: env.PROJECT_ACCESS_KEY\n\t})\n \n\t// get signer\n\tconst signer = session.account.getSigner(findSupportedNetwork(env.CHAIN_HANDLE)!.chainId)\n \n\t// create interface from partial abi\n\tconst collectibleInterface = new ethers.utils.Interface([\n\t\t'function mint(address to, uint256 tokenId, uint256 amount, bytes data)'\n\t])\n \n\t// create calldata\n\tconst data = collectibleInterface.encodeFunctionData(\n\t\t'mint', [address, tokenId, 1, "0x00"]\n\t)\n \n\t// create transaction object\n\tconst txn = { to: contractAddress, data }\n \n\ttry {\n\t\treturn await signer.sendTransaction(txn)\n\t} catch (err) {\n\t\tthrow err\n\t}\n}
\n

Once these steps are complete, you can redeploy and test with the steps outlined in this prior step, and this time the POST request should return a transaction hash for the completed mint and the GET request would return a block number.

\n

If you want to browse the full code, see an example implementation here

","isPage":false,"text":"\nFinally, to deploy and mint a collectible from the sponsored contract address, we install the following packages\npnpm install @0xsequence/auth ethers@5.7.2\nand implement the callContract and getBlockNumber methods previously mocked out as follows:\nimport { ethers } from 'ethers'\nimport { Session, SessionSettings } from '@0xsequence/auth'\n \n...\n \nconst getBlockNumber = async (chainId: string, request: Request): Promise<number> => {\n\tconst nodeUrl = `https://nodes.sequence.app/${chainId}`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n\treturn await provider.getBlockNumber()\n}\n \nconst callContract = async (request: Request, env: Env, address: string, tokenId: number): Promise<ethers.providers.TransactionResponse> => {\n \n\tconst nodeUrl = `https://nodes.sequence.app/${env.CHAIN_HANDLE}`\n\tconst relayerUrl = `https://{env.CHAIN_HANDLE}-relayer.sequence.app`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n const contractAddress = env.CONTRACT_ADDRESS\n \n // create EOA from private key\n\tconst walletEOA = new ethers.Wallet(env.PKEY, provider);\n \n\t// instantiate settings\n\tconst settings: Partial<SessionSettings> = {\n\t\tnetworks: [{\n\t\t\t...networks[findSupportedNetwork(env.CHAIN_HANDLE)!.chainId],\n\t\t\trpcUrl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl,\n\t\t\tprovider: provider,\n\t\t\trelayer: {\n\t\t\t\turl: relayerUrl,\n\t\t\t\tprovider: {\n\t\t\t\t\turl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t}\n \n // create a single signer sequence wallet session\n\tconst session = await Session.singleSigner({\n\t\tsettings: settings,\n\t\tsigner: walletEOA,\n\t\tprojectAccessKey: env.PROJECT_ACCESS_KEY\n\t})\n \n\t// get signer\n\tconst signer = session.account.getSigner(findSupportedNetwork(env.CHAIN_HANDLE)!.chainId)\n \n\t// create interface from partial abi\n\tconst collectibleInterface = new ethers.utils.Interface([\n\t\t'function mint(address to, uint256 tokenId, uint256 amount, bytes data)'\n\t])\n \n\t// create calldata\n\tconst data = collectibleInterface.encodeFunctionData(\n\t\t'mint', [address, tokenId, 1, "0x00"]\n\t)\n \n\t// create transaction object\n\tconst txn = { to: contractAddress, data }\n \n\ttry {\n\t\treturn await signer.sendTransaction(txn)\n\t} catch (err) {\n\t\tthrow err\n\t}\n}\nOnce these steps are complete, you can redeploy and test with the steps outlined in this prior step, and this time the POST request should return a transaction hash for the completed mint and the GET request would return a block number.\nIf you want to browse the full code, see an example implementation here","title":"4. Mint a collectible to wallet","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"55":{"href":"/guides/templates/template-embedded-wallet#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"56":{"href":"/guides/templates/template-embedded-wallet#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out seamless UX of our embedded wallet at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"57":{"href":"/guides/templates/template-embedded-wallet#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our embedded wallet.\n","title":"Template","titles":["Quickstart"]},"58":{"href":"/guides/templates/template-embedded-wallet#getting-started","html":"\n","isPage":false,"text":"\n","title":"Getting Started","titles":["Quickstart"]},"59":{"href":"/guides/templates/template-embedded-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 TODO add link 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 TODO add link Unity SDK documentation\n","title":"SDK Installation","titles":["Quickstart","Getting Started"]},"60":{"href":"/guides/templates/template-embedded-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"]},"61":{"href":"/guides/templates/template-embedded-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"]},"62":{"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]},"63":{"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]},"64":{"href":"/sdk/sequence-kit/01-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":[]},"65":{"href":"/sdk/sequence-kit/01-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 embedded 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"]},"66":{"href":"/sdk/sequence-kit/01-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":[]},"67":{"href":"/sdk/sequence-kit/02-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":[]},"68":{"href":"/sdk/sequence-kit/02-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"]},"69":{"href":"/sdk/sequence-kit/02-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":[]},"70":{"href":"/sdk/sequence-kit/02-getting-started#setting-up-the-embedded-wallet-wrapper","html":"
\n

To install the optional embedded 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 embedded 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":[]},"71":{"href":"/sdk/sequence-kit/02-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":[]},"72":{"href":"/sdk/sequence-kit/02-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":[]},"73":{"href":"/sdk/sequence-kit/02-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":[]},"74":{"href":"/sdk/sequence-kit/03-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":[]},"75":{"href":"/sdk/sequence-kit/03-configuration#available-options","html":"
\n","isPage":false,"text":"\n","title":"Available Options","titles":[]},"76":{"href":"/sdk/sequence-kit/03-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"]},"77":{"href":"/sdk/sequence-kit/03-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"]},"78":{"href":"/sdk/sequence-kit/03-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"]},"79":{"href":"/sdk/sequence-kit/03-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)"]},"80":{"href":"/sdk/sequence-kit/03-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)"]},"81":{"href":"/sdk/sequence-kit/03-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)"]},"82":{"href":"/sdk/sequence-kit/03-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)"]},"83":{"href":"/sdk/sequence-kit/03-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)"]},"84":{"href":"/sdk/sequence-kit/03-configuration#displayedassets","html":"\n
TypeDefault
[{ contractAddress: string, chainId: number }, ...]undefined
\n

If provided, this will determine which assets are to be displayed in the embedded 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 embedded 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"]},"85":{"href":"/sdk/sequence-kit/04-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":[]},"86":{"href":"/sdk/sequence-kit/04-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":[]},"87":{"href":"/sdk/sequence-kit/04-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"]},"88":{"href":"/sdk/sequence-kit/04-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"]},"89":{"href":"/sdk/sequence-kit/04-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"]},"90":{"href":"/sdk/sequence-kit/04-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"]},"91":{"href":"/sdk/sequence-kit/05-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":[]},"92":{"href":"/sdk/sequence-kit/05-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"]},"93":{"href":"/sdk/sequence-kit/05-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":[]},"94":{"href":"/sdk/sequence-kit/05-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":[]},"95":{"href":"/sdk/typescript/01-overview#wallet","html":"\n

Sequence Wallet gives you a friendly, non-custodial wallet for your users with multi-chain support and seamless integration.

\n
\n

Most wallets for Ethereum have a single private key that has full control over a wallet, i.e. an Externally Owned Account (EOAs).\nHowever, a Sequence wallet is a Smart Contract that is deployed on the blockchain and which can be controlled by multiple private keys.\nThese keys are meant to be controlled by the wallet owner and provide added security since more than one of these keys would need to be\ncompromised for the wallet to be compromised.

","isPage":true,"text":"\nSequence Wallet gives you a friendly, non-custodial wallet for your users with multi-chain support and seamless integration.\n\nMost wallets for Ethereum have a single private key that has full control over a wallet, i.e. an Externally Owned Account (EOAs).\nHowever, a Sequence wallet is a Smart Contract that is deployed on the blockchain and which can be controlled by multiple private keys.\nThese keys are meant to be controlled by the wallet owner and provide added security since more than one of these keys would need to be\ncompromised for the wallet to be compromised.","title":"Wallet","titles":[]},"96":{"href":"/sdk/typescript/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"97":{"href":"/sdk/typescript/02-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"]},"98":{"href":"/sdk/typescript/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template using SequenceKit\n","title":"Template","titles":["Quickstart"]},"99":{"href":"/sdk/typescript/02-quickstart#install-for-existing-project","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

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":"\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.\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 for existing project","titles":["Quickstart"]},"100":{"href":"/sdk/typescript/02-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 for existing project",null]},"101":{"href":"/sdk/typescript/04-platforms#platforms","html":"\n","isPage":true,"text":"\n","title":"Platforms","titles":[]},"102":{"href":"/sdk/typescript/04-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"]},"103":{"href":"/sdk/typescript/04-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"]},"104":{"href":"/sdk/typescript/04-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"]},"105":{"href":"/sdk/typescript/05-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":[]},"106":{"href":"/sdk/typescript/06-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":[]},"107":{"href":"/sdk/typescript/06-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"]},"108":{"href":"/sdk/typescript/06-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"]},"109":{"href":"/sdk/typescript/06-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"]},"110":{"href":"/sdk/typescript/06-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"]},"111":{"href":"/sdk/unity/01-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":[]},"112":{"href":"/sdk/unity/01-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"]},"113":{"href":"/sdk/unity/02-installation#installation","html":"\n","isPage":true,"text":"\n","title":"Installation","titles":[]},"114":{"href":"/sdk/unity/02-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"]},"115":{"href":"/sdk/unity/02-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"]},"116":{"href":"/sdk/unity/02-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"]},"117":{"href":"/sdk/unity/03-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":[]},"118":{"href":"/sdk/unity/04-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":[]},"119":{"href":"/sdk/unity/04-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"]},"120":{"href":"/sdk/unity/04-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"]},"121":{"href":"/sdk/unity/04-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"]},"122":{"href":"/sdk/unity/04-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"]},"123":{"href":"/sdk/unity/04-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"]},"124":{"href":"/sdk/unity/04-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"]},"125":{"href":"/sdk/unity/04-authentication#webgl","html":"\n

Coming soon.

\n","isPage":false,"text":"\nComing soon.\n","title":"WebGL","titles":["Authentication","2. Social Sign in"]},"126":{"href":"/sdk/unity/04-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"]},"127":{"href":"/sdk/unity/05-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":[]},"128":{"href":"/sdk/unity/05-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"]},"129":{"href":"/sdk/unity/05-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"]},"130":{"href":"/sdk/unity/05-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"]},"131":{"href":"/sdk/unity/05-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"]},"132":{"href":"/sdk/unity/05-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"]},"133":{"href":"/sdk/unity/05-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"]},"134":{"href":"/sdk/unity/05-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"]},"135":{"href":"/sdk/unity/05-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"]},"136":{"href":"/sdk/unity/05-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"]},"137":{"href":"/sdk/unity/06-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);
\n

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);\nChainIndexer 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":[]},"138":{"href":"/sdk/unity/07-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":[]},"139":{"href":"/sdk/unity/08-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":[]},"140":{"href":"/sdk/unity/09-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":[]},"141":{"href":"/sdk/unity/09-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"]},"142":{"href":"/sdk/unity/09-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"]},"143":{"href":"/sdk/unity/09-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"]},"144":{"href":"/sdk/unity/09-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"]},"145":{"href":"/sdk/unreal/01-overview#introduction","html":"\n

The Sequence Unreal In-Game Wallet SDK provides full Sequence In-Game 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 In-Game Wallet SDK provides full Sequence In-Game 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":[]},"146":{"href":"/sdk/unreal/01-overview#requirements","html":"\n","isPage":false,"text":"\n\nUnreal 5.2 or later\nAndroid\niOS\nPC standalone\nMac standalone\n","title":"Requirements","titles":["Introduction"]},"147":{"href":"/sdk/unreal/02-installation#installation","html":"\n","isPage":true,"text":"\n","title":"Installation","titles":[]},"148":{"href":"/sdk/unreal/02-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"]},"149":{"href":"/sdk/unreal/02-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"]},"150":{"href":"/sdk/unreal/03-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":[]},"151":{"href":"/sdk/unreal/04-authentication#authentication","html":"\n","isPage":true,"text":"\n","title":"Authentication","titles":[]},"152":{"href":"/sdk/unreal/04-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]},"153":{"href":"/sdk/unreal/04-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]},"154":{"href":"/sdk/unreal/04-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]},"155":{"href":"/sdk/unreal/04-authentication#social-signin-based-authentication-on-mobile","html":"\n

WIP

","isPage":false,"text":"\nWIP","title":"Social Signin based Authentication on Mobile","titles":["Authentication",null]},"156":{"href":"/sdk/unreal/05-api-integration#api-integration","html":"\n","isPage":true,"text":"\n","title":"API Integration","titles":[]},"157":{"href":"/sdk/unreal/05-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]},"158":{"href":"/sdk/unreal/05-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]},"159":{"href":"/sdk/unreal/05-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]},"160":{"href":"/sdk/unreal/05-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]},"161":{"href":"/sdk/unreal/06-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":[]},"162":{"href":"/sdk/unreal/06-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]},"163":{"href":"/sdk/unreal/06-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]},"164":{"href":"/sdk/unreal/06-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]},"165":{"href":"/solutions/indexer/02-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\nOur Indexer service is now 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":[]},"166":{"href":"/solutions/indexer/02-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 endpointsSequence Indexer offers the same API across a variety of EVM networks. Make sure\nto check the Indexer endpoints and use the corresponding host for your dapp/game.\nFor example, on Ethereum mainnet the Sequence Indexer endpoint is https://mainnet-indexer.sequence.app\nand 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"]},"167":{"href":"/solutions/indexer/02-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

This code requires an API Access Key from Sequence Builder

\n

then in your app (using your API_Access_Key),

\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\nthen in your app (using your API_Access_Key),\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"]},"168":{"href":"/solutions/indexer/02-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/indexer#supported-networks--endpoints 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)
\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/indexer#supported-networks--endpoints 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)\n\n","title":"Go Installation","titles":["Indexer Installation","Installation"]},"169":{"href":"/solutions/indexer/02-installation#unity-or-unreal-installation","html":"\n

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

\n
","isPage":false,"text":"\nThe Sequence Indexer is integrated directly inside of the respective Sequence Web3 Unity and Sequence Web3 Unreal SDKs.\n","title":"Unity or Unreal Installation","titles":["Indexer Installation","Installation"]},"170":{"href":"/solutions/technical-references/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":[]},"171":{"href":"/solutions/technical-references/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"]},"172":{"href":"/sdk/typescript/03-guides/01-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":[]},"173":{"href":"/sdk/typescript/03-guides/01-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"]},"174":{"href":"/sdk/typescript/03-guides/01-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"]},"175":{"href":"/sdk/typescript/03-guides/01-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]},"176":{"href":"/sdk/typescript/03-guides/01-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]},"177":{"href":"/sdk/typescript/03-guides/01-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]},"178":{"href":"/sdk/typescript/03-guides/01-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]},"179":{"href":"/sdk/typescript/03-guides/01-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]},"180":{"href":"/sdk/typescript/03-guides/01-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]},"181":{"href":"/sdk/typescript/03-guides/01-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]},"182":{"href":"/sdk/typescript/03-guides/01-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]},"183":{"href":"/sdk/typescript/03-guides/01-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]},"184":{"href":"/sdk/typescript/03-guides/01-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]},"185":{"href":"/sdk/typescript/03-guides/01-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]},"186":{"href":"/sdk/typescript/03-guides/01-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]},"187":{"href":"/sdk/typescript/03-guides/01-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]},"188":{"href":"/sdk/typescript/03-guides/01-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]},"189":{"href":"/sdk/typescript/03-guides/01-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]},"190":{"href":"/sdk/typescript/03-guides/01-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]},"191":{"href":"/sdk/typescript/03-guides/01-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]},"192":{"href":"/sdk/typescript/03-guides/01-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]},"193":{"href":"/sdk/typescript/03-guides/01-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"]},"194":{"href":"/sdk/typescript/03-guides/01-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"]},"195":{"href":"/sdk/typescript/03-guides/01-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"]},"196":{"href":"/sdk/typescript/03-guides/02-auth-address#authenticate-users-with-message-signature","html":"\n","isPage":true,"text":"\n","title":"Authenticate Users with Message Signature","titles":[]},"197":{"href":"/sdk/typescript/03-guides/02-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"]},"198":{"href":"/sdk/typescript/03-guides/02-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"]},"199":{"href":"/sdk/typescript/03-guides/02-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"]},"200":{"href":"/sdk/typescript/03-guides/03-sign-message#todo---replace-with-code-groups-from-vocs","html":"","isPage":true,"text":"","title":"TODO - Replace with Code Groups from Vocs","titles":[]},"201":{"href":"/sdk/typescript/03-guides/04-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":[]},"202":{"href":"/sdk/typescript/03-guides/04-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":[]},"203":{"href":"/sdk/typescript/03-guides/04-session-keys#using-session-keys-with-sequence","html":"
\n","isPage":false,"text":"\n","title":"Using Session keys with Sequence","titles":[]},"204":{"href":"/sdk/typescript/03-guides/04-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]},"205":{"href":"/sdk/typescript/03-guides/04-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]},"206":{"href":"/sdk/typescript/03-guides/04-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]},"207":{"href":"/sdk/typescript/03-guides/04-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]},"208":{"href":"/sdk/typescript/03-guides/04-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]},"209":{"href":"/sdk/typescript/03-guides/04-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]},"210":{"href":"/sdk/typescript/03-guides/05-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":[]},"211":{"href":"/sdk/typescript/03-guides/06-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":[]},"212":{"href":"/sdk/typescript/03-guides/07-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":[]},"213":{"href":"/sdk/typescript/03-guides/08-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":[]},"214":{"href":"/sdk/typescript/03-guides/09-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":[]},"215":{"href":"/sdk/typescript/03-guides/10-building-backends#building-backends-with-sequence","html":"\n","isPage":true,"text":"\n","title":"Building Backends with Sequence","titles":[]},"216":{"href":"/sdk/typescript/03-guides/10-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]},"217":{"href":"/sdk/typescript/03-guides/10-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]},"218":{"href":"/sdk/typescript/03-guides/10-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]},"219":{"href":"/sdk/typescript/03-guides/10-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]},"220":{"href":"/sdk/typescript/connectors/01-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":[]},"221":{"href":"/sdk/typescript/connectors/02-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":[]},"222":{"href":"/sdk/typescript/connectors/02-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 embedded 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"]},"223":{"href":"/sdk/typescript/connectors/02-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":[]},"224":{"href":"/sdk/typescript/connectors/03-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":[]},"225":{"href":"/sdk/typescript/connectors/03-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"]},"226":{"href":"/sdk/typescript/connectors/03-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"]},"227":{"href":"/sdk/typescript/connectors/03-wagmi#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using Wagmi"]},"228":{"href":"/sdk/typescript/connectors/03-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"]},"229":{"href":"/sdk/typescript/connectors/03-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"]},"230":{"href":"/sdk/typescript/connectors/03-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"]},"231":{"href":"/sdk/typescript/connectors/03-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"]},"232":{"href":"/sdk/typescript/connectors/03-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"]},"233":{"href":"/sdk/typescript/connectors/03-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"]},"234":{"href":"/sdk/typescript/connectors/04-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":[]},"235":{"href":"/sdk/typescript/connectors/04-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"]},"236":{"href":"/sdk/typescript/connectors/04-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"]},"237":{"href":"/sdk/typescript/connectors/04-rainbow-kit#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using RainbowKit"]},"238":{"href":"/sdk/typescript/connectors/04-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"]},"239":{"href":"/sdk/typescript/connectors/04-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"]},"240":{"href":"/sdk/typescript/connectors/04-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"]},"241":{"href":"/sdk/typescript/connectors/04-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"]},"242":{"href":"/sdk/typescript/connectors/04-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"]},"243":{"href":"/sdk/typescript/connectors/04-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"]},"244":{"href":"/sdk/typescript/connectors/05-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":[]},"245":{"href":"/sdk/typescript/connectors/05-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"]},"246":{"href":"/sdk/typescript/connectors/05-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"]},"247":{"href":"/sdk/typescript/connectors/05-web3-onboard#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using Web3-Onboard"]},"248":{"href":"/sdk/typescript/connectors/05-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"]},"249":{"href":"/sdk/typescript/connectors/05-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"]},"250":{"href":"/sdk/typescript/connectors/05-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"]},"251":{"href":"/sdk/typescript/connectors/06-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":[]},"252":{"href":"/sdk/typescript/connectors/06-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"]},"253":{"href":"/sdk/typescript/connectors/06-web3-react-v6#usage","html":"\n","isPage":false,"text":"\n","title":"Usage","titles":["Using Web3-React V6"]},"254":{"href":"/sdk/typescript/connectors/06-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"]},"255":{"href":"/sdk/typescript/connectors/06-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"]},"256":{"href":"/sdk/typescript/connectors/06-web3-react-v6#options","html":"\n","isPage":false,"text":"\n","title":"Options","titles":["Using Web3-React V6"]},"257":{"href":"/sdk/typescript/connectors/06-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"]},"258":{"href":"/sdk/typescript/connectors/06-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"]},"259":{"href":"/sdk/typescript/connectors/06-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"]},"260":{"href":"/sdk/typescript/connectors/07-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":[]},"261":{"href":"/sdk/typescript/connectors/07-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"]},"262":{"href":"/sdk/typescript/connectors/07-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"]},"263":{"href":"/sdk/typescript/connectors/08-FAQ#nextjs","html":"\n","isPage":true,"text":"\n","title":"NextJs","titles":[null]},"264":{"href":"/sdk/typescript/connectors/08-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"]},"265":{"href":"/sdk/typescript/connectors/08-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"]},"266":{"href":"/sdk/typescript/connectors/08-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"]},"267":{"href":"/sdk/unity/Advanced/01-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":[]},"268":{"href":"/sdk/unity/Advanced/01-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"]},"269":{"href":"/sdk/unity/Advanced/02-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":[]},"270":{"href":"/sdk/unity/Advanced/02-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"]},"271":{"href":"/sdk/unity/Advanced/02-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"]},"272":{"href":"/sdk/unity/Advanced/02-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"]},"273":{"href":"/sdk/unity/Advanced/02-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"]},"274":{"href":"/sdk/unity/Advanced/02-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"]},"275":{"href":"/sdk/unity/Advanced/02-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"]},"276":{"href":"/sdk/unity/Advanced/02-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"]},"277":{"href":"/sdk/unity/Advanced/02-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"]},"278":{"href":"/sdk/unity/Advanced/02-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"]},"279":{"href":"/sdk/unity/Advanced/03-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":[]},"280":{"href":"/sdk/unity/Advanced/03-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"]},"281":{"href":"/sdk/unity/Advanced/03-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"]},"282":{"href":"/sdk/unity/Advanced/03-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"]},"283":{"href":"/sdk/unity/Advanced/03-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"]},"284":{"href":"/sdk/unity/Advanced/03-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"]},"285":{"href":"/sdk/unity/Advanced/03-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"]},"286":{"href":"/sdk/unity/Advanced/03-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"]},"287":{"href":"/sdk/unity/Advanced/03-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"]},"288":{"href":"/sdk/unity/Advanced/03-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"]},"289":{"href":"/sdk/unity/Advanced/03-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"]},"290":{"href":"/sdk/unity/Advanced/03-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"]},"291":{"href":"/sdk/unity/Advanced/03-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"]},"292":{"href":"/sdk/unity/Advanced/03-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"]},"293":{"href":"/sdk/unity/Advanced/03-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"]},"294":{"href":"/sdk/unity/Advanced/03-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"]},"295":{"href":"/sdk/unity/Advanced/03-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"]},"296":{"href":"/sdk/unity/Advanced/03-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"]},"297":{"href":"/sdk/unity/Advanced/03-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"]},"298":{"href":"/sdk/unity/Advanced/04-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":[]},"299":{"href":"/sdk/unity/Advanced/05-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":[]},"300":{"href":"/sdk/unity/Advanced/05-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"]},"301":{"href":"/sdk/unity/Advanced/05-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"]},"302":{"href":"/sdk/unity/Advanced/05-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"]},"303":{"href":"/sdk/unity/Advanced/05-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"]},"304":{"href":"/sdk/unity/Advanced/06-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":[]},"305":{"href":"/sdk/unity/Advanced/06-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":[]},"306":{"href":"/solutions/collectibles/metadata/800-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":[]},"307":{"href":"/solutions/collectibles/metadata/800-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"]},"308":{"href":"/solutions/collectibles/metadata/800-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"]},"309":{"href":"/solutions/collectibles/metadata/800-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"]},"310":{"href":"/solutions/collectibles/metadata/800-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"]},"311":{"href":"/solutions/collectibles/metadata/800-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"]},"312":{"href":"/solutions/collectibles/metadata/800-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"]},"313":{"href":"/solutions/collectibles/metadata/800-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"]},"314":{"href":"/solutions/collectibles/metadata/800-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"]},"315":{"href":"/solutions/collectibles/metadata/800-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"]},"316":{"href":"/solutions/collectibles/metadata/800-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"]},"317":{"href":"/solutions/collectibles/metadata/800-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"]},"318":{"href":"/solutions/collectibles/metadata/800-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"]},"319":{"href":"/solutions/collectibles/metadata/800-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"]},"320":{"href":"/solutions/marketplaces/orderbook/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"321":{"href":"/solutions/marketplaces/orderbook/02-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"]},"322":{"href":"/solutions/marketplaces/orderbook/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our Orderbook API.\n","title":"Template","titles":["Quickstart"]},"323":{"href":"/solutions/marketplaces/orderbook/02-quickstart#try-an-api-call","html":"\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}'
","isPage":false,"text":"\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}'","title":"Try an API Call","titles":["Quickstart"]},"324":{"href":"/solutions/payments/onramps/01-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":[]},"325":{"href":"/solutions/technical-references/wallet-contracts/01-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":[]},"326":{"href":"/solutions/technical-references/wallet-contracts/01-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?"]},"327":{"href":"/solutions/technical-references/wallet-contracts/01-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"]},"328":{"href":"/solutions/technical-references/wallet-contracts/01-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"]},"329":{"href":"/solutions/technical-references/wallet-contracts/01-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?"]},"330":{"href":"/solutions/technical-references/wallet-contracts/01-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"]},"331":{"href":"/solutions/technical-references/wallet-contracts/01-why#examples","html":"\n","isPage":false,"text":"\n\nSequence\nGnosis Safe\nArgent\n","title":"Examples","titles":["Why smart contracts wallets?"]},"332":{"href":"/solutions/technical-references/wallet-contracts/05-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":[]},"333":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"334":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"335":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"336":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"337":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"338":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"339":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"340":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"341":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"342":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"343":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"344":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"345":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"346":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"347":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"348":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"349":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"350":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"351":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"352":{"href":"/solutions/technical-references/wallet-contracts/05-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"]},"353":{"href":"/solutions/technical-references/wallet-contracts/06-main-module-upgradeable#mainmoduleupgradeable--configuration-migration","html":"","isPage":true,"text":"","title":"MainModuleUpgradeable & configuration migration","titles":[]},"354":{"href":"/solutions/technical-references/wallet-contracts/07-transaction-encoding#transaction-encoding","html":"","isPage":true,"text":"","title":"Transaction encoding","titles":[]},"355":{"href":"/solutions/technical-references/wallet-contracts/08-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":[]},"356":{"href":"/solutions/technical-references/wallet-contracts/08-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"]},"357":{"href":"/solutions/technical-references/wallet-contracts/08-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"]},"358":{"href":"/solutions/technical-references/wallet-contracts/08-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"]},"359":{"href":"/solutions/technical-references/wallet-contracts/09-nested-transaction-batching#nested-transaction-batching","html":"","isPage":true,"text":"","title":"Nested Transaction Batching","titles":[]},"360":{"href":"/solutions/technical-references/wallet-contracts/10-guest-module#guestmodule-and-on-demand-deployment","html":"","isPage":true,"text":"","title":"GuestModule and on-demand deployment","titles":[]},"361":{"href":"/solutions/technical-references/wallet-contracts/11-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":[]},"362":{"href":"/solutions/technical-references/wallet-contracts/12-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":[]},"363":{"href":"/solutions/technical-references/wallet-contracts/12-contract-audits#quantstamp","html":"\n\n","isPage":false,"text":"\n\nJuly 2nd, 2020\nFeb 24th, 2021\n\n","title":"Quantstamp","titles":["Contract Audits"]},"364":{"href":"/solutions/technical-references/wallet-contracts/12-contract-audits#consensys-diligence","html":"\n\n","isPage":false,"text":"\n\nMay 2020\n\n","title":"Consensys Diligence","titles":["Contract Audits"]},"365":{"href":"/solutions/technical-references/wallet-contracts/12-contract-audits#zellic","html":"\n","isPage":false,"text":"\n\nMarch 2023\n","title":"Zellic","titles":["Contract Audits"]},"366":{"href":"/solutions/wallets/embedded-wallet/01-overview#sequence-embedded-wallet","html":"\n

Sequence Embedded Wallet (or Wallet-as-a-Service) enables the creation, management and usage of fully functional EVM compatible wallets. These 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.

\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.

\n","isPage":true,"text":"\nSequence Embedded Wallet (or Wallet-as-a-Service) enables the creation, management and usage of fully functional EVM compatible wallets. These 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.\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.\n","title":"Sequence Embedded Wallet","titles":[]},"367":{"href":"/solutions/wallets/embedded-wallet/01-overview#architecture-overview","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":"Architecture overview","titles":["Sequence Embedded Wallet"]},"368":{"href":"/solutions/wallets/embedded-wallet/01-overview#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 (coming soon), 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 (coming soon), so you can rest assured that it hasn't been tampered with.\n","title":"Signer 1: Sequence Auth","titles":["Sequence Embedded Wallet","Architecture overview"]},"369":{"href":"/solutions/wallets/embedded-wallet/01-overview#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":["Sequence Embedded Wallet","Architecture overview"]},"370":{"href":"/solutions/wallets/embedded-wallet/01-overview#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
","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","title":"Threat model","titles":["Sequence Embedded Wallet"]},"371":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"372":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out seamless UX of our embedded wallet at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"373":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our embedded wallet.\n","title":"Template","titles":["Quickstart"]},"374":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#getting-started","html":"\n","isPage":false,"text":"\n","title":"Getting Started","titles":["Quickstart"]},"375":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#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 TODO add link 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 TODO add link Unity SDK documentation\n","title":"SDK Installation","titles":["Quickstart","Getting Started"]},"376":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#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"]},"377":{"href":"/solutions/wallets/embedded-wallet/02-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  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\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 {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\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"]},"378":{"href":"/solutions/wallets/embedded-wallet/03-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":[]},"379":{"href":"/solutions/wallets/embedded-wallet/03-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  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\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 {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\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"]},"380":{"href":"/solutions/wallets/embedded-wallet/03-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 \n// Define the user's email address\nconst email = "user@example.com";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \n// This will send an email to the user with an OTP\nconst { instance } = await waas.email.initiateAuth({ email });\n \n// Obtain the OTP from the user\nconst answer = "123456";\n \nconst sessionHash = await sequence.getSessionHash();\nconst { idToken } = await waas.email.finalizeAuth({\n  instance,\n  answer,\n  email,\n  sessionHash,\n});\n \n// Log in using the idToken, as usual\nawait waas.signIn({ idToken }, "Apple Vision Pro - Chrome");
\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 \n// Define the user's email address\nconst email = "user@example.com";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \n// This will send an email to the user with an OTP\nconst { instance } = await waas.email.initiateAuth({ email });\n \n// Obtain the OTP from the user\nconst answer = "123456";\n \nconst sessionHash = await sequence.getSessionHash();\nconst { idToken } = await waas.email.finalizeAuth({\n instance,\n answer,\n email,\n sessionHash,\n});\n \n// Log in using the idToken, as usual\nawait waas.signIn({ idToken }, "Apple Vision Pro - Chrome");\n","title":"Email Sign In / Sign Up","titles":["Session Management","Sign in / Sign Up"]},"381":{"href":"/solutions/wallets/embedded-wallet/03-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  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\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 {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\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"]},"382":{"href":"/solutions/wallets/embedded-wallet/03-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  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\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 {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\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"]},"383":{"href":"/solutions/wallets/embedded-wallet/03-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  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\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 {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\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"]},"384":{"href":"/solutions/wallets/embedded-wallet/05-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":[]},"385":{"href":"/solutions/wallets/embedded-wallet/05-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]},"386":{"href":"/solutions/wallets/embedded-wallet/05-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]},"387":{"href":"/solutions/wallets/embedded-wallet/05-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"]},"388":{"href":"/solutions/wallets/embedded-wallet/05-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"]},"389":{"href":"/solutions/wallets/embedded-wallet/05-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"]},"390":{"href":"/solutions/wallets/embedded-wallet/05-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"]},"391":{"href":"/solutions/wallets/embedded-wallet/05-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"]},"392":{"href":"/solutions/wallets/embedded-wallet/06-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":[]},"393":{"href":"/solutions/wallets/embedded-wallet/06-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: "mumbai",\n  },\n  defaults.TEST\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 [Transaction Receipt Response] 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: "mumbai",\n },\n defaults.TEST\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 [Transaction Receipt Response] 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"]},"394":{"href":"/solutions/wallets/embedded-wallet/06-transaction-receipts#failed-transaction-response","html":"\n

An Embedded 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 TODO: link to wallet API [Transaction Receipt Response] 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: "mumbai",\n  },\n  defaults.TEST\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 Embedded 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 TODO: link to wallet API [Transaction Receipt Response] 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: "mumbai",\n },\n defaults.TEST\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"]},"395":{"href":"/solutions/wallets/universal-wallet/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"396":{"href":"/solutions/wallets/universal-wallet/02-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"]},"397":{"href":"/solutions/wallets/universal-wallet/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template using SequenceKit\n","title":"Template","titles":["Quickstart"]},"398":{"href":"/solutions/wallets/universal-wallet/02-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"]},"399":{"href":"/solutions/wallets/universal-wallet/02-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]},"400":{"href":"/solutions/wallets/universal-wallet/04-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":[]},"401":{"href":"/solutions/wallets/universal-wallet/04-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 embedded 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"]},"402":{"href":"/solutions/wallets/universal-wallet/04-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":[]},"403":{"href":"/solutions/wallets/universal-wallet/05-platforms#platforms","html":"\n","isPage":true,"text":"\n","title":"Platforms","titles":[]},"404":{"href":"/solutions/wallets/universal-wallet/05-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"]},"405":{"href":"/solutions/wallets/universal-wallet/05-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"]},"406":{"href":"/solutions/wallets/universal-wallet/05-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"]},"407":{"href":"/solutions/wallets/universal-wallet/06-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":[]},"408":{"href":"/solutions/wallets/universal-wallet/07-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":[]},"409":{"href":"/solutions/wallets/universal-wallet/07-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"]},"410":{"href":"/solutions/wallets/universal-wallet/07-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"]},"411":{"href":"/solutions/wallets/universal-wallet/07-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"]},"412":{"href":"/solutions/wallets/universal-wallet/07-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"]},"413":{"href":"/solutions/wallets/universal-wallet/examples/02-auth-address#authenticate-users-with-message-signature","html":"\n","isPage":true,"text":"\n","title":"Authenticate Users with Message Signature","titles":[]},"414":{"href":"/solutions/wallets/universal-wallet/examples/02-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"]},"415":{"href":"/solutions/wallets/universal-wallet/examples/02-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"]},"416":{"href":"/solutions/wallets/universal-wallet/examples/02-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"]},"417":{"href":"/solutions/wallets/universal-wallet/examples/04-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":[]},"418":{"href":"/solutions/wallets/universal-wallet/examples/04-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":[]},"419":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#using-session-keys-with-sequence","html":"
\n","isPage":false,"text":"\n","title":"Using Session keys with Sequence","titles":[]},"420":{"href":"/solutions/wallets/universal-wallet/examples/04-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]},"421":{"href":"/solutions/wallets/universal-wallet/examples/04-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]},"422":{"href":"/solutions/wallets/universal-wallet/examples/04-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]},"423":{"href":"/solutions/wallets/universal-wallet/examples/04-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]},"424":{"href":"/solutions/wallets/universal-wallet/examples/04-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]},"425":{"href":"/solutions/wallets/universal-wallet/examples/04-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]},"426":{"href":"/solutions/wallets/universal-wallet/examples/05-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":[]},"427":{"href":"/solutions/wallets/universal-wallet/examples/06-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":[]},"428":{"href":"/solutions/wallets/universal-wallet/examples/07-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":[]},"429":{"href":"/solutions/wallets/universal-wallet/examples/08-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":[]},"430":{"href":"/solutions/wallets/universal-wallet/examples/09-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":[]},"431":{"href":"/solutions/wallets/universal-wallet/examples/10-building-backends#building-backends-with-sequence","html":"\n","isPage":true,"text":"\n","title":"Building Backends with Sequence","titles":[]},"432":{"href":"/solutions/wallets/universal-wallet/examples/10-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]},"433":{"href":"/solutions/wallets/universal-wallet/examples/10-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]},"434":{"href":"/solutions/wallets/universal-wallet/examples/10-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]},"435":{"href":"/solutions/wallets/universal-wallet/examples/10-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]}},"dirtCount":0,"index":[["zellic",{"0":{"365":1}}],["zero",{"0":{"348":1,"349":1},"2":{"344":4,"348":1,"349":1,"350":2}}],["911",{"2":{"316":1}}],["9",{"0":{"316":1}}],["qmw5gvygwb98gsn8vjtrwu4pln6jryexnxzknwpphvwtdm",{"2":{"316":1}}],["qmdjzqexj2wnny7pnnn4kauzckjh4va5xhoxmmis919ev3",{"2":{"309":1}}],["qr",{"2":{"195":2}}],["quantstamp",{"0":{"363":1},"2":{"362":1}}],["quantityraw",{"2":{"90":1}}],["quicker",{"2":{"144":1}}],["quickly",{"2":{"57":1,"98":1,"322":1,"373":1,"397":1}}],["quickstart",{"0":{"55":1,"96":1,"320":1,"371":1,"395":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"97":1,"98":1,"99":1,"100":1,"321":1,"322":1,"323":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"396":1,"397":1,"398":1,"399":1}}],["quot",{"2":{"6":4,"33":16,"35":8,"41":8,"42":4,"44":2,"46":14,"49":40,"50":8,"52":12,"53":12,"54":2,"99":13,"100":4,"114":8,"115":14,"116":4,"118":2,"124":58,"128":8,"129":10,"135":12,"138":2,"139":2,"142":2,"143":2,"152":14,"164":2,"168":8,"171":8,"173":38,"184":2,"185":2,"186":12,"187":2,"188":6,"189":4,"190":2,"195":2,"198":2,"226":6,"266":8,"267":2,"268":2,"281":4,"282":4,"285":4,"287":4,"289":4,"291":6,"300":8,"302":4,"308":12,"309":12,"312":2,"313":2,"318":4,"319":2,"323":32,"336":6,"356":4,"358":2,"362":6,"377":4,"379":14,"380":10,"381":26,"382":86,"383":6,"388":2,"389":6,"390":6,"391":6,"393":74,"394":76,"398":13,"399":4,"415":2}}],["queried",{"2":{"351":1,"352":1}}],["queries",{"2":{"32":1,"167":1,"168":1,"299":1}}],["querycontractmessagesender",{"2":{"302":1}}],["querycontract",{"2":{"302":2}}],["queryclientprovider",{"2":{"69":3,"70":5,"86":2,"93":2}}],["queryclient",{"2":{"69":4,"70":5,"86":1,"93":1}}],["querying",{"0":{"302":1},"2":{"33":1,"299":1,"302":1,"304":1}}],["query",{"0":{"10":1,"12":1},"2":{"5":1,"30":3,"68":3,"69":1,"70":1,"165":1,"167":1,"168":1,"302":3}}],["questions",{"2":{"199":1,"220":1,"416":1}}],["question",{"2":{"2":1}}],["🌄",{"2":{"166":1}}],["815189234z",{"2":{"382":1}}],["815189174z",{"2":{"382":1}}],["819722082z",{"2":{"382":1}}],["8545",{"2":{"336":1}}],["8",{"0":{"315":1},"2":{"124":2}}],["6492",{"2":{"199":1,"416":1}}],["6f1",{"2":{"112":1}}],["6",{"0":{"209":1,"313":1,"425":1},"2":{"105":1,"119":1,"324":1,"407":1}}],["66597",{"2":{"90":1}}],["^5",{"2":{"99":1,"398":1}}],["^1",{"2":{"99":1,"398":1}}],["❤️",{"2":{"94":1}}],["yet",{"2":{"144":1,"349":1,"352":1}}],["yes",{"2":{"115":1}}],["y",{"2":{"111":1,"145":1}}],["yarn",{"2":{"68":1,"86":1,"99":1,"167":1,"171":1,"225":1,"231":1,"235":1,"242":1,"245":1,"398":1}}],["you",{"2":{"4":1,"6":4,"30":1,"31":1,"32":1,"34":2,"35":5,"36":4,"42":4,"43":3,"44":3,"45":1,"46":4,"47":1,"51":2,"52":3,"53":3,"54":2,"59":1,"60":2,"61":2,"63":1,"66":1,"67":1,"68":1,"71":1,"73":1,"74":1,"91":2,"92":3,"93":2,"95":1,"99":3,"105":2,"112":1,"114":5,"115":6,"116":8,"117":4,"118":2,"121":1,"122":1,"124":4,"126":5,"127":6,"128":3,"129":3,"130":5,"131":3,"132":5,"133":3,"134":5,"135":13,"136":3,"137":1,"138":4,"139":8,"140":4,"142":1,"143":5,"144":4,"148":4,"149":2,"150":7,"152":5,"153":3,"154":5,"157":4,"159":7,"160":2,"162":1,"163":1,"164":2,"165":1,"166":3,"167":3,"168":2,"170":2,"172":2,"173":9,"195":1,"198":4,"199":4,"209":1,"210":1,"211":2,"212":1,"213":1,"214":1,"218":1,"219":4,"220":6,"223":1,"225":1,"231":1,"242":1,"267":2,"271":2,"272":1,"276":3,"277":3,"278":2,"279":4,"281":2,"298":1,"299":4,"300":7,"301":2,"302":3,"303":2,"304":4,"305":2,"307":1,"308":4,"311":1,"314":1,"315":4,"316":4,"317":1,"318":1,"319":5,"324":2,"366":1,"368":3,"369":2,"375":1,"376":2,"377":2,"378":3,"380":1,"381":2,"386":1,"391":1,"398":2,"402":1,"407":2,"415":4,"416":4,"425":1,"426":1,"427":2,"428":1,"429":1,"430":1,"434":1,"435":4}}],["yourself",{"2":{"368":1,"378":1}}],["yoursite",{"2":{"173":2,"185":1}}],["yourcallshowauthfailurescreen",{"2":{"152":1}}],["yourcallreadytoreceivecode",{"2":{"152":1}}],["your",{"0":{"94":1,"173":1,"193":1,"221":1,"308":1,"310":1,"313":1,"400":1},"1":{"222":1,"401":1},"2":{"2":1,"5":1,"6":3,"7":1,"8":2,"13":1,"30":3,"32":1,"33":4,"34":2,"35":11,"36":3,"41":3,"42":2,"43":1,"44":5,"46":7,"47":2,"49":4,"50":2,"51":1,"52":4,"53":5,"64":2,"65":3,"66":1,"67":1,"69":3,"86":1,"92":2,"93":2,"94":2,"95":1,"99":4,"103":1,"111":1,"114":3,"115":2,"116":3,"117":3,"118":2,"124":1,"126":1,"129":2,"130":1,"132":1,"134":1,"135":1,"136":1,"139":4,"140":2,"142":2,"143":3,"144":1,"150":5,"152":1,"153":4,"154":1,"157":4,"159":1,"161":1,"162":1,"164":2,"165":2,"166":2,"167":2,"168":1,"170":2,"171":2,"172":2,"173":8,"185":1,"195":1,"198":4,"199":5,"219":3,"220":2,"221":2,"222":3,"223":1,"267":1,"279":3,"280":1,"298":1,"304":2,"305":1,"307":1,"308":2,"309":2,"310":2,"311":1,"312":3,"313":2,"314":1,"315":3,"317":2,"318":1,"319":1,"356":1,"357":1,"368":1,"369":1,"378":1,"379":1,"386":1,"398":4,"400":2,"401":3,"402":1,"405":1,"415":4,"416":5,"435":3}}],["🖼️",{"2":{"65":1,"222":1,"401":1}}],["👛",{"2":{"65":1,"222":1,"401":1}}],["🔐🪪",{"2":{"65":1,"222":1,"401":1}}],["⛓️",{"2":{"65":1,"222":1,"401":1}}],["🪙",{"2":{"65":1,"222":1,"401":1}}],["🦊",{"2":{"65":1,"222":1,"401":1}}],["🧰",{"2":{"64":1,"221":1,"400":1}}],["\tmessage",{"2":{"357":1}}],["\tdomain",{"2":{"357":1}}],["\tprimarytype",{"2":{"357":1}}],["\ttypes",{"2":{"357":1}}],["\ttry",{"2":{"54":1}}],["\tverifiedonly",{"2":{"168":1}}],["\t\tcount",{"2":{"357":1}}],["\t\tchainid",{"2":{"357":1}}],["\t\twallet",{"2":{"357":1}}],["\t\tverifyingcontract",{"2":{"357":1}}],["\t\tversion",{"2":{"357":1}}],["\t\tname",{"2":{"357":2}}],["\t\tnetworks",{"2":{"54":1}}],["\t\tperson",{"2":{"357":1}}],["\t\tposition",{"2":{"74":1}}],["\t\tprojectaccesskey",{"2":{"54":1}}],["\t\tdefaulttheme",{"2":{"74":1}}],["\t\tthrow",{"2":{"54":1}}],["\t\treturn",{"2":{"54":1}}],["\t\tsigner",{"2":{"54":1}}],["\t\tsettings",{"2":{"54":1}}],["\t\t",{"2":{"54":3,"74":1,"357":1}}],["\t\t\t\t",{"2":{"54":1}}],["\t\t\t\t\turl",{"2":{"54":1}}],["\t\t\t\tprovider",{"2":{"54":1}}],["\t\t\t\turl",{"2":{"54":1}}],["\t\t\trelayer",{"2":{"54":1}}],["\t\t\trpcurl",{"2":{"54":1}}],["\t\t\tprovider",{"2":{"54":1}}],["\t\t\t",{"2":{"54":2,"357":3}}],["\t",{"2":{"54":11,"74":1,"168":1,"357":3}}],["\treturn",{"2":{"54":1}}],["\tconst",{"2":{"54":12}}],["7908",{"2":{"394":1}}],["712",{"0":{"357":1},"2":{"357":1}}],["7f1",{"2":{"124":2}}],["7",{"0":{"314":1},"2":{"54":1,"68":3,"99":1,"100":1,"398":1,"399":1}}],["721",{"0":{"212":1,"428":1},"2":{"32":1,"212":2,"428":2}}],["5931",{"2":{"394":1}}],["50",{"2":{"382":3}}],["500",{"2":{"49":1}}],["5",{"0":{"208":1,"312":1,"424":1},"2":{"54":1,"68":3,"100":1,"127":1,"146":1,"230":1,"240":1,"323":1,"399":1}}],["09t18",{"2":{"382":2}}],["03",{"2":{"382":3}}],["02t18",{"2":{"382":4}}],["0a1",{"2":{"124":1}}],["0b3",{"2":{"124":1}}],["0",{"0":{"231":1,"242":1},"2":{"52":1,"53":1,"99":3,"111":3,"114":1,"124":2,"135":2,"143":1,"145":3,"225":2,"231":3,"242":3,"323":1,"336":1,"349":1,"352":1,"358":1,"369":1,"383":1,"393":2,"394":1,"398":3}}],["0x839ee023b21f4ffe2294025de0ac30ba7278d6fd",{"2":{"394":2}}],["0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334",{"2":{"33":1}}],["0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",{"2":{"393":1}}],["0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7",{"2":{"323":1}}],["0x153824576d03629b264683b430bbf9acea1d0975",{"2":{"394":1}}],["0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881",{"2":{"393":1}}],["0x1626ba7e",{"2":{"358":2}}],["0x1693ffc74edbb50d6138517fe5cd64fd1c917709",{"2":{"323":1}}],["0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",{"2":{"393":2,"394":1}}],["0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",{"2":{"393":1}}],["0xf9d09d634fb818b05149329c1dccfaea53639d96",{"2":{"361":1}}],["0x27cabc9700ee6db2797b6ac1e1ece81c72a2cd8d",{"2":{"389":1}}],["0x2791bca1f2de4661ed88a30c99a7a9449aa84174",{"2":{"35":1,"89":1}}],["0x6b175474e89094c44da98b954eedeac495271d0f",{"2":{"389":1}}],["0x63a21cca14ed7454b9cf6466af422b5c597c6b57",{"2":{"379":1}}],["0x631998e91476da5b870d741192fc5cbc55f5a52e",{"2":{"33":1,"90":1}}],["0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",{"2":{"382":2}}],["0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",{"2":{"393":1}}],["0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",{"2":{"382":2}}],["0x596af90cecdbf9a768886e771178fd5561dd27ab",{"2":{"336":1}}],["0xe6b9b21c077f382333220a072e4c44280b873907",{"2":{"361":1}}],["0xd72c236be524ec24f72329317e2785e687105b69",{"2":{"393":1}}],["0xd6043fe6f06d90ec2cb36ca5cd1b193a8515f350",{"2":{"379":1}}],["0xd130b43062d875a4b7af3f8fc036bc6e9d3e1b3e",{"2":{"361":1}}],["0xd01f11855bccb95f88d7a48492f66410d4637313",{"2":{"361":1}}],["0x7efe6ce415956c5f80c6530cc6cc81b4808f6118",{"2":{"361":1}}],["0x061150e5574716dbb1a2cdf54b3dce9f94395f65",{"2":{"391":1}}],["0x02390f3e6e5fd1c6786cb78fd3027c117a9955a7",{"2":{"361":1}}],["0x0",{"2":{"358":1}}],["0x0000000000000000000000000000000000000000000000000000000000000000",{"2":{"393":1}}],["0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",{"2":{"393":1}}],["0x00",{"2":{"54":1,"317":1,"394":1}}],["0xcccccccccccccccccccccccccccccccccccccccc",{"2":{"357":1}}],["0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",{"2":{"357":1}}],["0xb537a160472183f2150d42eb1c3dd6684a55f74c",{"2":{"323":1}}],["0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7",{"2":{"319":1}}],["0x9766bf76b2e3e7bcb8c61410a3fc873f1e89b43f",{"2":{"128":2}}],["0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",{"2":{"46":1}}],["0x",{"2":{"49":1,"53":1,"213":3,"214":1,"390":1,"394":1,"429":3,"430":1}}],["0xsequence",{"0":{"173":1},"2":{"33":1,"35":2,"41":1,"46":1,"49":5,"54":2,"59":1,"61":1,"62":2,"68":10,"69":2,"70":4,"71":1,"72":1,"86":4,"87":1,"91":1,"93":1,"99":8,"100":3,"114":1,"167":5,"168":2,"172":1,"173":3,"198":1,"199":4,"204":1,"216":1,"217":2,"224":1,"225":5,"226":1,"231":4,"234":1,"235":5,"236":1,"242":4,"244":1,"245":2,"252":2,"254":1,"260":1,"262":1,"266":1,"356":1,"357":2,"375":1,"377":1,"379":1,"380":1,"381":1,"382":1,"383":1,"393":1,"394":1,"398":7,"399":3,"415":1,"416":4,"420":1,"432":1,"433":2}}],["||",{"2":{"49":4}}],["x19ethereum",{"2":{"356":1}}],["xattr",{"2":{"164":1}}],["xcodeproj",{"2":{"164":3}}],["xcode",{"0":{"164":1},"2":{"164":2}}],["xmlns",{"2":{"124":4}}],["xml",{"2":{"124":6}}],["x",{"0":{"231":1,"242":1},"2":{"52":1,"53":1,"111":1,"145":1,"157":1,"167":1,"231":1,"233":1,"242":1,"319":1,"369":2}}],["xyz",{"2":{"49":1,"50":1,"137":1,"167":1,"168":1}}],["x27",{"2":{"2":1,"6":1,"8":1,"33":1,"35":18,"42":1,"43":1,"44":2,"47":1,"49":2,"51":1,"52":2,"53":2,"54":8,"60":1,"61":6,"62":1,"66":1,"69":18,"70":22,"71":5,"72":2,"74":5,"76":4,"82":9,"83":9,"86":2,"87":2,"89":6,"90":6,"92":6,"93":17,"108":1,"111":2,"112":1,"114":1,"115":2,"116":2,"117":1,"121":1,"122":1,"124":8,"126":6,"127":1,"129":1,"130":4,"131":1,"132":4,"134":4,"135":7,"138":1,"139":3,"140":1,"142":1,"143":3,"144":1,"145":1,"150":3,"152":3,"153":2,"154":2,"157":5,"158":1,"159":1,"160":1,"166":2,"167":8,"168":1,"172":3,"173":5,"175":2,"177":1,"180":1,"195":2,"197":1,"198":5,"199":16,"202":2,"204":4,"205":2,"206":1,"207":4,"208":2,"209":4,"211":10,"212":10,"213":16,"214":17,"217":1,"219":3,"220":2,"223":1,"236":10,"246":4,"249":1,"254":4,"255":4,"265":4,"266":3,"267":1,"279":1,"281":1,"300":6,"302":3,"304":1,"308":1,"310":3,"317":1,"318":1,"323":4,"329":2,"332":1,"334":1,"336":4,"337":2,"338":1,"343":1,"344":5,"345":1,"348":1,"349":2,"350":2,"351":1,"352":1,"356":2,"357":28,"358":1,"361":12,"368":3,"369":3,"370":2,"376":1,"377":2,"378":1,"379":1,"380":1,"381":8,"386":2,"388":1,"402":1,"410":1,"414":1,"415":5,"416":16,"418":2,"420":4,"421":2,"422":1,"423":4,"424":2,"425":4,"427":10,"428":10,"429":16,"430":17,"433":1,"435":3}}],["~0",{"2":{"42":1}}],["2123",{"2":{"382":2}}],["22",{"2":{"382":3}}],["230",{"2":{"381":1}}],["24th",{"2":{"363":1}}],["2nd",{"2":{"363":1}}],["2fa",{"2":{"119":2}}],["2",{"0":{"40":1,"46":1,"120":1,"205":1,"271":1,"309":1,"369":1,"421":1},"1":{"47":1,"48":1,"121":1,"122":1,"123":1,"124":1,"125":1},"2":{"46":1,"54":1,"68":3,"114":1,"124":2,"146":1,"269":1,"308":1,"323":1,"367":2,"369":2}}],["2020",{"2":{"363":1,"364":1}}],["2023",{"2":{"124":4,"365":1,"382":4}}],["2022",{"2":{"124":3}}],["2021",{"2":{"112":1,"124":1,"363":1}}],["200000000000000000000",{"2":{"389":1}}],["200",{"2":{"49":1,"191":1,"389":1}}],["20",{"0":{"211":1,"427":1},"2":{"35":1,"42":2,"43":1,"211":3,"212":1,"213":1,"427":3,"428":1,"429":1}}],["`failedtransactionresponse`",{"2":{"394":1}}],["`wallet",{"2":{"381":1}}],["`authorize",{"2":{"206":1,"422":1}}],["`invalid",{"2":{"199":1,"416":1}}],["`proof",{"2":{"199":1,"416":1}}],["`senttransactionresponse`",{"2":{"394":1}}],["`sequenceconfig`",{"2":{"124":2}}],["`something",{"2":{"49":2}}],["`https",{"2":{"54":3}}],["`block",{"2":{"49":1}}],["`unauthorized",{"2":{"49":1}}],["`unauthorized`",{"2":{"49":1}}],["`unexpected",{"2":{"35":2,"41":1}}],["`$",{"2":{"49":1,"61":2,"377":2,"379":2,"380":2,"381":2,"382":2,"383":2,"393":2,"394":2}}],["`your",{"2":{"46":1}}],["`",{"2":{"35":2,"41":1,"46":1,"49":5,"54":2,"61":2,"152":4,"157":6,"160":4,"199":1,"206":1,"377":2,"379":2,"380":2,"381":3,"382":2,"383":2,"393":2,"394":2,"416":1,"422":1}}],["$",{"2":{"35":2,"41":1,"46":1,"49":4,"54":2,"199":2,"381":1,"416":2}}],["42",{"2":{"382":4}}],["42161",{"2":{"35":1,"41":1,"389":1,"393":1}}],["401",{"2":{"49":2}}],["400",{"2":{"49":6}}],["4",{"0":{"54":1,"207":1,"311":1,"423":1},"2":{"43":1,"44":1,"323":1,"357":1}}],["486",{"2":{"6":8}}],["=0",{"2":{"233":1}}],["===",{"2":{"35":1,"49":10,"209":1,"425":1}}],["=",{"0":{"231":1,"242":1},"2":{"35":20,"41":9,"42":6,"46":8,"49":14,"50":4,"51":1,"54":17,"61":1,"69":8,"70":10,"71":6,"72":5,"74":1,"86":2,"87":6,"88":1,"89":2,"92":4,"93":3,"130":2,"132":2,"134":2,"137":1,"139":2,"152":7,"157":2,"160":2,"167":2,"168":5,"171":3,"173":11,"174":1,"197":2,"198":2,"199":6,"204":3,"205":3,"206":2,"207":3,"208":2,"209":1,"210":3,"211":12,"212":13,"213":13,"214":13,"225":1,"226":2,"231":1,"236":1,"242":1,"246":3,"254":2,"255":5,"265":3,"266":3,"270":2,"271":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":2,"279":1,"281":2,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":2,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":2,"299":1,"300":10,"302":6,"303":2,"304":7,"336":4,"344":1,"349":1,"350":1,"356":3,"357":4,"358":1,"361":1,"377":1,"379":3,"380":6,"381":14,"382":2,"383":2,"387":1,"388":2,"389":2,"390":1,"391":2,"393":2,"394":2,"414":2,"415":2,"416":6,"420":3,"421":3,"422":2,"423":3,"424":2,"425":1,"426":3,"427":12,"428":13,"429":13,"430":13}}],["ripped",{"2":{"115":1}}],["risks",{"2":{"110":1,"412":1}}],["right",{"2":{"77":3,"111":1,"143":1}}],["range",{"2":{"285":1}}],["randomly",{"2":{"44":1,"45":1}}],["randomnoncespace2",{"2":{"42":2}}],["randomnoncespace1",{"2":{"42":2}}],["randombytes",{"2":{"42":2,"205":1,"421":1}}],["random",{"2":{"42":1,"270":1,"343":1}}],["rainbow",{"2":{"234":1,"236":1,"328":1}}],["rainbowkit",{"0":{"234":1},"1":{"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1},"2":{"220":1,"228":1,"234":3,"235":3,"236":3,"238":1,"241":1,"243":1}}],["ration",{"2":{"185":1}}],["ratio",{"2":{"173":2}}],["rather",{"2":{"127":1,"299":1}}],["raw",{"2":{"128":2}}],["rawtransactions",{"2":{"130":1,"132":1,"134":1}}],["rawtransaction",{"0":{"128":1},"2":{"128":1,"130":2,"132":2,"134":2,"136":2}}],["ramp",{"2":{"105":5,"173":2,"189":1,"324":5,"407":5}}],["ramps",{"0":{"105":1,"324":1,"407":1}}],["rotation",{"2":{"330":1}}],["rotate",{"2":{"157":1}}],["root",{"2":{"117":1,"381":1}}],["router=",{"2":{"381":1}}],["routerprovider",{"2":{"381":2}}],["router",{"2":{"232":6,"233":2,"241":6,"243":2,"381":7}}],["route",{"2":{"116":1,"299":1}}],["robust",{"2":{"64":1,"221":1,"400":1}}],["role",{"2":{"46":6}}],["runtime",{"2":{"332":1}}],["runs",{"2":{"173":2}}],["running",{"2":{"164":1,"174":1,"266":1}}],["run",{"2":{"44":1,"112":1,"164":4,"172":1}}],["rpcurl",{"2":{"54":2,"171":2,"199":3,"416":3}}],["rpc",{"2":{"33":3,"166":2,"170":2,"171":2,"279":2,"323":1,"366":1}}],["revertreason",{"2":{"393":2}}],["revert",{"2":{"346":1}}],["revertonerror",{"0":{"346":1},"2":{"344":2,"346":1,"349":1,"350":1}}],["reverted",{"2":{"35":1,"393":1}}],["rejected",{"2":{"335":1,"343":1}}],["rewrite",{"2":{"304":2}}],["retrieving",{"0":{"351":1,"352":1},"1":{"352":1}}],["retrieve",{"2":{"173":1,"209":1,"210":1,"425":1,"426":1}}],["returns",{"2":{"43":2,"130":1,"132":1,"134":1,"273":1,"338":1,"352":1,"358":1,"382":1,"387":1,"388":4,"389":2}}],["returning",{"2":{"35":2,"391":1}}],["return",{"0":{"340":1},"2":{"6":1,"35":2,"41":1,"49":17,"52":1,"53":1,"54":2,"69":1,"70":2,"71":1,"72":1,"86":1,"87":1,"92":2,"93":1,"128":1,"179":1,"265":2,"266":2,"292":1,"297":1,"302":1,"351":1,"358":5,"381":3,"391":1,"392":1,"393":1}}],["returned",{"2":{"6":2,"33":1,"120":1,"159":1,"183":1,"198":1,"356":1,"357":1,"394":1,"415":1}}],["reflect",{"2":{"195":1}}],["refreshedat",{"2":{"382":2}}],["refreshes",{"2":{"143":1}}],["refresh",{"0":{"181":1},"2":{"181":2,"319":3}}],["referencing",{"2":{"335":1,"343":1,"348":1}}],["references",{"2":{"167":1,"362":1}}],["reference",{"2":{"118":1,"130":1,"132":1,"134":1,"166":2}}],["referred",{"2":{"133":1}}],["refer",{"2":{"59":1,"69":1,"92":1,"99":1,"161":1,"162":1,"375":1}}],["reduce",{"2":{"202":1,"418":1}}],["reducing",{"2":{"157":1}}],["redirect",{"2":{"176":1}}],["reddit",{"2":{"126":1,"127":1,"138":1,"139":1}}],["redeploy",{"2":{"52":1,"54":1}}],["remember",{"2":{"164":1,"379":1}}],["removing",{"2":{"135":1}}],["removed",{"2":{"110":1,"412":1}}],["remove",{"2":{"110":1,"412":1}}],["remoteconfigtracker",{"2":{"199":1,"416":1}}],["remotely",{"2":{"172":1}}],["remote",{"0":{"16":1,"22":1},"2":{"199":1,"356":1,"357":1,"416":1}}],["remaining",{"2":{"107":1,"409":1}}],["registers",{"2":{"164":1}}],["registersession",{"2":{"157":1,"159":1}}],["registering",{"2":{"158":1}}],["registered",{"2":{"153":1,"159":1}}],["register",{"2":{"120":2,"157":2}}],["registry",{"2":{"30":1}}],["region",{"2":{"105":1,"324":1,"407":1}}],["relevant",{"2":{"393":1}}],["release",{"2":{"116":1}}],["reload",{"2":{"319":1}}],["rely",{"2":{"93":1}}],["relayed",{"2":{"41":1}}],["relayerurl",{"2":{"54":2}}],["relayer",{"0":{"8":1,"43":1},"1":{"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1},"2":{"8":6,"13":2,"35":2,"42":1,"43":2,"46":4,"54":1}}],["relaying",{"0":{"34":1},"1":{"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1},"2":{"36":1,"219":1,"435":1}}],["represents",{"2":{"349":1}}],["represented",{"2":{"128":2}}],["reports",{"2":{"362":1}}],["repo",{"2":{"193":1}}],["repository",{"2":{"44":1,"73":1,"381":1}}],["replay",{"2":{"180":1,"381":1}}],["replaced",{"2":{"140":1}}],["replace",{"0":{"200":1},"2":{"52":1,"53":1,"107":1,"110":1,"115":1,"117":1,"124":1,"140":1,"171":1,"409":1,"412":1}}],["reason",{"2":{"349":1,"393":1,"394":1}}],["reasons",{"2":{"343":1}}],["reached",{"2":{"356":1,"357":1}}],["reach",{"2":{"144":1,"199":1,"220":1,"416":1}}],["reactdom",{"2":{"381":1}}],["react",{"0":{"73":1,"251":1},"1":{"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1},"2":{"68":3,"69":1,"70":1,"72":1,"220":1,"251":3,"252":1,"254":2,"255":1,"259":1,"381":8}}],["reader",{"2":{"199":1,"416":1}}],["reading",{"0":{"336":1},"2":{"137":1}}],["readable",{"2":{"129":1,"135":1}}],["ready",{"2":{"66":1,"153":1,"223":1,"314":1,"319":1,"402":1}}],["read",{"0":{"137":1},"2":{"42":1,"116":2,"129":2,"166":1,"173":1,"302":1,"319":1,"336":1}}],["really",{"2":{"219":1,"281":1,"435":1}}],["realm",{"2":{"64":1,"136":1,"221":1,"400":1}}],["real",{"2":{"30":1,"33":1,"366":1}}],["recent",{"2":{"232":1,"241":1,"284":1}}],["receipts",{"0":{"392":1},"1":{"393":1,"394":1},"2":{"277":1,"392":2,"393":1}}],["receipt",{"2":{"136":1,"275":1,"277":1,"297":1,"298":1,"300":5,"303":1,"304":2,"393":5,"394":1}}],["receives",{"2":{"388":1}}],["received",{"2":{"126":1,"159":1}}],["receive",{"2":{"46":1,"119":1,"136":1,"139":1,"153":1,"276":2,"277":2,"299":1,"301":1}}],["recovery",{"2":{"330":1,"370":1}}],["recoveredsessionaddress",{"2":{"209":2,"425":2}}],["recognize",{"2":{"116":1,"139":1}}],["recommended",{"0":{"114":1},"1":{"115":1},"2":{"127":1,"129":1,"130":1,"132":1,"134":1,"135":1,"138":1,"139":1,"236":1,"265":1,"266":1,"278":1,"281":1,"291":1,"298":1,"299":1,"304":1}}],["recommendations",{"2":{"110":1,"412":1}}],["recommend",{"2":{"33":1,"118":2,"135":1,"137":1,"139":1,"167":1}}],["recipient4address",{"2":{"214":1,"430":1}}],["recipient3address",{"2":{"214":1,"430":1}}],["recipient2address",{"2":{"211":1,"212":1,"213":1,"214":2,"427":1,"428":1,"429":1,"430":2}}],["recipient2",{"2":{"42":1}}],["recipient1address",{"2":{"211":1,"212":1,"213":1,"214":2,"427":1,"428":1,"429":1,"430":2}}],["recipient1",{"2":{"42":1}}],["recipient",{"2":{"35":1,"211":1,"212":1,"213":1,"389":1,"427":1,"428":1,"429":1}}],["recipientaddress",{"2":{"35":1,"41":1,"210":1,"211":1,"212":1,"213":1,"298":1,"426":1,"427":1,"428":1,"429":1}}],["rest",{"2":{"265":1,"266":1,"271":1,"337":1,"368":1}}],["restofonboardparams",{"2":{"246":1}}],["restwallets",{"2":{"246":1}}],["restarted",{"2":{"124":1}}],["respect",{"2":{"358":1}}],["respectively",{"2":{"391":1}}],["respective",{"2":{"169":1,"220":1}}],["responsibility",{"2":{"343":1}}],["responsible",{"2":{"150":1}}],["responsive",{"2":{"157":1,"279":1}}],["response",{"0":{"393":1,"394":1},"2":{"49":19,"160":2,"214":4,"299":1,"393":2,"394":2,"430":4}}],["resource",{"2":{"115":1}}],["resources",{"2":{"114":1,"117":6}}],["res",{"2":{"49":4,"124":2,"379":2}}],["resulting",{"2":{"356":1,"357":1,"358":1}}],["result",{"2":{"43":1,"45":1,"46":1,"127":2,"128":1,"139":3,"149":2,"157":1,"302":1,"334":1,"388":2,"394":1}}],["results",{"2":{"33":3,"143":1}}],["resilient",{"2":{"30":1,"170":1}}],["re",{"2":{"30":1,"34":1,"43":1,"66":1,"111":1,"126":2,"127":1,"129":1,"135":3,"138":1,"139":1,"145":1,"154":1,"167":1,"172":1,"181":1,"223":1,"402":1}}],["rendering",{"2":{"232":1,"241":1,"264":1,"265":2}}],["rendered",{"2":{"184":1,"264":1,"265":1,"266":4,"343":1,"349":1}}],["render",{"2":{"30":2,"264":1,"346":1,"381":1}}],["requiring",{"2":{"173":1,"201":1,"202":1,"304":1,"391":1,"417":1,"418":1}}],["requirefreshsigner",{"2":{"361":1}}],["requirements",{"0":{"112":1,"146":1},"2":{"120":1}}],["required",{"2":{"51":1,"111":1,"123":1,"152":1,"172":1,"288":1,"299":1,"367":1,"369":1,"389":1}}],["require",{"2":{"8":1,"109":1,"160":1,"199":1,"202":1,"264":1,"266":1,"304":1,"348":1,"379":1,"385":1,"386":1,"411":1,"416":1,"418":1}}],["requires",{"2":{"7":1,"99":1,"140":1,"157":1,"167":1,"210":1,"279":1,"389":1,"398":1,"426":1}}],["requests",{"2":{"13":1,"46":1,"166":1,"195":1,"279":1}}],["request",{"2":{"6":1,"7":1,"49":20,"52":1,"54":6,"94":1,"136":1,"195":1,"323":1,"393":1,"394":1}}],["+=",{"2":{"126":1,"127":2,"138":1,"139":2}}],["+",{"2":{"8":1,"110":1,"114":1,"116":1,"152":1,"164":1,"172":1,"193":1,"224":2,"233":2,"234":3,"243":2,"244":2,"250":1,"260":1,"262":1,"299":1,"316":1,"356":2,"378":2,"384":1,"412":1}}],["vulnerate",{"2":{"370":1}}],["v6",{"0":{"251":1},"1":{"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1},"2":{"251":2,"252":1,"254":1,"259":1}}],["vocs",{"0":{"200":1}}],["void",{"2":{"126":1,"127":3,"138":2,"139":3,"152":5,"160":2}}],["v3",{"2":{"199":1,"416":1}}],["ve",{"2":{"115":1,"121":1,"122":1,"126":2,"130":1,"131":1,"132":1,"134":1,"135":1,"143":1,"152":2,"153":1,"157":2,"159":1,"172":2,"220":1,"267":1,"279":1,"304":1,"315":1,"318":1}}],["verifies",{"2":{"358":1}}],["verifiedonly",{"2":{"33":2}}],["verified",{"2":{"33":3,"127":1,"177":1,"358":1,"370":1}}],["verifiable",{"2":{"202":1,"418":1}}],["verification",{"0":{"358":1},"2":{"49":1,"355":1,"385":1,"386":1}}],["verifying",{"2":{"369":1}}],["verifymessage",{"2":{"209":1,"425":1}}],["verify",{"0":{"207":1,"209":1,"423":1,"425":1},"2":{"49":5,"198":2,"199":1,"207":1,"209":1,"219":1,"368":1,"415":2,"416":1,"423":1,"425":1,"435":1}}],["version=",{"2":{"124":2}}],["versioning",{"2":{"111":1,"145":1}}],["versions",{"0":{"231":1,"242":1,"265":1},"2":{"35":1,"124":3,"233":1,"251":1,"264":1}}],["version",{"0":{"266":1},"2":{"35":2,"99":1,"111":3,"115":1,"116":1,"143":1,"145":3,"225":2,"231":2,"233":2,"242":2,"264":1,"398":1}}],["versus",{"2":{"35":1}}],["very",{"2":{"33":1,"117":1,"128":1,"139":1,"160":1,"164":1,"172":1}}],["vision",{"2":{"380":1}}],["visibility",{"2":{"157":1}}],["visible",{"2":{"105":1,"157":1,"324":1,"407":1}}],["virtual",{"2":{"329":1,"358":1}}],["viem",{"2":{"68":4,"231":1,"242":1}}],["viewable",{"2":{"127":1}}],["viewer",{"0":{"53":1},"2":{"53":1}}],["view",{"2":{"45":1,"84":3,"124":2,"150":1,"157":2,"166":1,"314":1,"338":1,"358":1,"393":1,"394":1}}],["via",{"0":{"195":1},"2":{"65":1,"91":1,"100":1,"105":3,"107":1,"116":3,"117":1,"120":2,"139":2,"143":1,"172":4,"195":3,"222":1,"225":1,"235":1,"252":1,"274":1,"275":1,"276":1,"277":1,"304":1,"324":3,"369":1,"386":1,"399":1,"401":1,"407":3,"409":1}}],["video",{"2":{"6":2,"220":1}}],["v2",{"2":{"35":2,"199":2,"261":1,"416":2}}],["v18",{"2":{"167":1}}],["v1",{"2":{"35":1}}],["vary",{"2":{"99":1,"398":1}}],["vars",{"2":{"50":2}}],["varies",{"2":{"336":1}}],["variety",{"2":{"8":1,"166":1}}],["variable",{"2":{"135":1}}],["variables",{"0":{"50":1},"2":{"49":1,"50":1,"135":1,"160":2}}],["variation",{"2":{"130":1,"132":1,"134":1}}],["various",{"2":{"68":1,"77":1,"233":1}}],["valueasstring",{"2":{"135":2,"136":1}}],["value=",{"2":{"124":2}}],["value",{"0":{"348":1},"2":{"53":1,"128":4,"129":1,"177":1,"210":1,"211":2,"213":2,"214":5,"258":1,"301":1,"336":1,"344":2,"348":1,"350":1,"358":3,"389":1,"390":1,"391":1,"393":1,"394":2,"426":1,"427":2,"429":2,"430":5}}],["values",{"0":{"340":1},"2":{"6":1,"76":1,"77":1,"82":1,"83":1,"117":1,"128":1,"135":1,"143":1,"281":1,"282":1,"285":1,"287":1,"289":1,"291":1}}],["validity",{"2":{"344":1}}],["valid`",{"2":{"199":1,"416":1}}],["validating",{"2":{"199":1,"416":1}}],["validations",{"0":{"390":1}}],["validation",{"0":{"337":1,"384":1,"387":1,"388":1,"391":1},"1":{"338":1,"339":1,"340":1,"385":1,"386":1,"387":1,"388":2,"389":3,"390":2,"391":1},"2":{"49":1,"337":1,"379":1,"386":1,"387":2,"388":1,"389":5,"390":3,"391":4}}],["validated",{"2":{"339":1,"343":1,"388":1}}],["validatesession",{"2":{"388":2}}],["validatesequencewalletproof",{"2":{"199":2,"416":2}}],["validates",{"2":{"338":1}}],["validate",{"2":{"199":1,"337":1,"338":1,"358":2,"385":1,"388":1,"416":1}}],["validator",{"2":{"199":3,"416":3}}],["valid",{"2":{"49":2,"152":1,"159":1,"173":1,"209":1,"317":1,"343":1,"349":1,"358":4,"382":1,"388":1,"425":1}}],["july",{"2":{"363":1}}],["just",{"2":{"33":1,"36":1,"53":1,"65":1,"115":1,"126":1,"135":2,"150":1,"152":1,"157":1,"172":3,"198":1,"219":1,"222":1,"318":1,"401":1,"415":1,"435":1}}],["joined",{"2":{"356":1,"357":1}}],["java",{"2":{"219":1,"435":1}}],["javascript",{"2":{"46":1,"166":1,"199":1,"216":1,"416":1,"432":1}}],["js",{"0":{"100":1,"167":1,"193":2,"264":1,"265":1,"266":1,"399":1},"2":{"63":1,"99":1,"100":3,"166":1,"167":1,"172":2,"218":1,"219":1,"220":1,"264":2,"266":1,"398":1,"399":3,"434":1,"435":1}}],["jsonrpcprovider",{"2":{"46":1,"54":2,"171":1,"199":1,"336":1,"416":1}}],["json",{"2":{"6":2,"44":1,"49":5,"52":1,"53":1,"99":2,"116":2,"308":3,"309":2,"310":1,"311":1,"315":1,"316":3,"317":1,"323":1,"398":2}}],["jwt",{"2":{"6":1,"119":1}}],["1699442705",{"2":{"394":1}}],["1699442705965",{"2":{"394":1}}],["1699443005",{"2":{"394":1}}],["191",{"0":{"356":1},"2":{"356":1}}],["11",{"0":{"318":1},"2":{"382":4}}],["1155",{"0":{"213":1,"429":1},"2":{"32":1,"213":2,"313":1,"315":1,"429":2}}],["13+",{"2":{"264":1}}],["13",{"0":{"266":1},"2":{"264":1,"266":1}}],["137",{"2":{"35":3,"41":2,"42":2,"69":1,"70":1,"89":1,"93":1,"246":1,"254":1,"394":2}}],["1271",{"2":{"343":1,"355":1}}],["12",{"0":{"231":1,"242":1,"319":1},"2":{"231":1,"233":1,"242":1}}],["123456",{"2":{"380":1,"388":1}}],["123",{"2":{"180":1,"316":2}}],["1200x400",{"2":{"173":2,"185":1}}],["18",{"2":{"128":2,"129":1}}],["102951017z",{"2":{"382":1}}],["102950917z",{"2":{"382":1}}],["109787921z",{"2":{"382":1}}],["109234880945084120673",{"2":{"382":4}}],["10",{"0":{"317":1},"2":{"382":2,"388":1}}],["10^decimals",{"2":{"128":1}}],["10^18",{"2":{"128":1}}],["100",{"2":{"90":1,"191":1}}],["1000000000000000000",{"2":{"128":1,"210":1,"214":3,"426":1,"430":3}}],["10000000000",{"2":{"89":1}}],["1447300",{"2":{"124":1}}],["14",{"2":{"114":1}}],["1",{"0":{"39":1,"44":1,"119":1,"204":1,"270":1,"308":1,"368":1,"420":1},"1":{"45":1},"2":{"6":13,"35":4,"41":2,"46":1,"54":1,"111":1,"121":1,"122":1,"124":3,"128":4,"135":1,"136":1,"145":1,"162":1,"173":2,"178":1,"185":1,"225":1,"230":1,"231":2,"240":1,"242":2,"276":1,"277":1,"298":1,"304":2,"308":1,"317":1,"319":1,"323":1,"357":2,"369":1,"390":2,"391":2}}],["human",{"2":{"129":1,"135":1}}],["html",{"2":{"124":1}}],["http",{"2":{"69":2,"70":2,"124":4,"166":2,"336":1}}],["https",{"2":{"6":8,"33":2,"35":1,"36":1,"41":1,"43":2,"45":1,"46":1,"49":2,"50":1,"52":1,"53":1,"62":1,"100":2,"102":1,"103":1,"114":1,"124":2,"137":1,"166":2,"167":2,"168":2,"171":1,"172":1,"173":2,"185":1,"199":2,"217":1,"224":1,"234":1,"244":1,"260":1,"262":1,"266":1,"316":1,"319":2,"323":1,"382":4,"399":2,"404":1,"405":1,"416":2,"433":1}}],["h",{"2":{"52":1,"53":1,"148":2,"152":2,"160":1,"162":1}}],["home",{"2":{"265":3}}],["hope",{"2":{"143":1,"144":1}}],["hosts",{"2":{"167":1,"168":1}}],["host",{"2":{"166":1,"177":1}}],["hosting",{"2":{"109":1,"307":1,"411":1}}],["hosted",{"2":{"43":1,"368":1,"369":1}}],["horizon",{"2":{"109":3,"411":3}}],["hooks",{"2":{"265":2}}],["hook",{"2":{"71":2,"72":1,"87":1,"265":1,"381":1,"390":1,"391":2}}],["however",{"2":{"91":1,"95":1,"115":1,"116":1,"140":1,"304":1,"386":1}}],["how",{"0":{"141":1,"265":1,"266":1,"306":1},"1":{"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1},"2":{"6":1,"42":1,"43":1,"74":1,"92":2,"105":1,"110":1,"116":1,"118":1,"126":1,"129":2,"131":1,"133":1,"135":1,"150":1,"157":1,"158":1,"160":1,"162":1,"165":1,"172":1,"199":1,"268":1,"281":1,"301":1,"319":1,"324":1,"407":1,"412":1,"416":1}}],["he",{"2":{"388":1}}],["hesitate",{"2":{"144":1}}],["head",{"2":{"309":1,"318":1}}],["header",{"2":{"164":1,"323":1}}],["headers",{"2":{"49":5}}],["heavily",{"2":{"267":1}}],["heard",{"2":{"131":1}}],["hex",{"2":{"356":1,"357":1}}],["hexadecimal",{"2":{"128":1,"139":1,"278":2,"281":2,"282":1,"284":1,"285":1,"286":1,"287":2,"289":1,"291":1}}],["hexlify",{"2":{"42":2,"205":1,"421":1}}],["hello",{"2":{"44":1,"45":1,"356":1}}],["helps",{"2":{"160":1,"162":1}}],["helper",{"2":{"128":1}}],["help",{"2":{"33":1,"109":1,"115":1,"118":1,"143":1,"144":1,"199":1,"202":1,"220":1,"307":1,"411":1,"416":1,"418":1}}],["helpful",{"2":{"33":1,"268":1}}],["here",{"2":{"31":1,"32":1,"42":1,"54":1,"74":1,"92":1,"137":1,"139":1,"158":1,"166":1,"173":1,"199":1,"229":1,"233":4,"239":1,"243":3,"250":1,"259":1,"262":1,"266":2,"381":1,"416":1}}],["hint",{"2":{"177":1}}],["hit",{"2":{"164":2}}],["hides",{"2":{"157":1}}],["hide",{"2":{"157":1}}],["hidden",{"2":{"118":1}}],["highly",{"2":{"264":1,"279":1,"281":1,"299":1}}],["high",{"2":{"30":1,"164":1}}],["higher",{"2":{"7":1}}],["history",{"2":{"30":1,"32":2,"140":1}}],["happen",{"2":{"369":1,"389":1}}],["happens",{"2":{"164":1}}],["hardware",{"2":{"368":1}}],["harmoniously",{"2":{"232":1,"241":1}}],["hand",{"2":{"164":1}}],["handlegooglelogin",{"2":{"381":3}}],["handlers",{"2":{"173":1}}],["handler",{"2":{"127":1,"138":1,"139":1,"381":3}}],["handlerequest",{"2":{"49":2}}],["handles",{"2":{"127":1,"378":1}}],["handle",{"2":{"49":8,"50":1,"54":6,"126":1,"135":1,"171":2,"381":1}}],["had",{"2":{"110":1,"412":1}}],["having",{"2":{"34":1,"42":1,"43":1,"118":1,"170":1,"173":1}}],["haven",{"2":{"114":1,"116":1}}],["have",{"2":{"4":1,"33":1,"35":1,"36":3,"46":1,"49":2,"53":1,"61":1,"95":1,"114":1,"115":1,"124":1,"128":1,"130":1,"132":1,"134":1,"135":1,"144":2,"150":2,"157":2,"159":1,"160":1,"164":1,"170":1,"172":1,"173":1,"198":1,"199":2,"214":1,"271":1,"280":1,"304":1,"305":1,"308":1,"317":1,"349":1,"377":1,"415":1,"416":2,"430":1}}],["hasn",{"2":{"157":1,"368":1}}],["hasheddata",{"2":{"357":2}}],["hashes",{"2":{"276":1,"343":1}}],["hash",{"2":{"43":1,"49":2,"54":1,"276":1,"283":1,"292":1,"295":1,"296":1,"297":1,"337":1,"338":1,"342":1,"343":1,"351":1,"358":6,"381":3,"393":2}}],["has",{"2":{"2":1,"33":1,"63":1,"95":1,"108":1,"129":2,"157":1,"190":1,"195":1,"218":1,"305":1,"335":1,"336":1,"343":1,"380":2,"390":2,"391":1,"410":1,"434":1}}],["3rd",{"2":{"369":1}}],["32",{"2":{"205":1,"382":3,"421":1}}],["36000",{"2":{"178":1}}],["30",{"2":{"43":1}}],["3",{"0":{"41":1,"49":1,"206":1,"310":1,"422":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"6":1,"107":1,"112":1,"124":2,"173":2,"185":1,"323":1,"382":1,"409":1}}],["python",{"2":{"219":1,"435":1}}],["png",{"2":{"173":2,"185":1}}],["pnpm",{"2":{"44":2,"49":1,"54":1,"59":1,"68":1,"86":1,"99":2,"167":1,"171":1,"375":1,"398":1}}],["pc",{"0":{"123":1},"2":{"112":1,"146":1}}],["phase",{"2":{"164":2}}],["philosophy",{"2":{"106":1,"408":1}}],["phone",{"2":{"102":1,"103":1,"172":2,"369":1,"404":1,"405":1}}],["pkey",{"2":{"49":4,"50":1,"54":1}}],["person",{"2":{"357":1}}],["perspective",{"2":{"195":1}}],["perfectly",{"2":{"216":1,"432":1}}],["perfect",{"2":{"143":2}}],["performs",{"2":{"369":1}}],["performed",{"2":{"280":1,"391":1}}],["perform",{"2":{"44":1,"45":1,"49":1,"52":1,"143":1,"179":1,"208":1,"389":1,"424":1}}],["permission",{"2":{"46":1}}],["popups",{"2":{"173":1}}],["popup",{"2":{"173":2}}],["popular",{"0":{"328":1},"2":{"33":2,"64":1,"65":1,"221":1,"222":1,"267":1,"400":1,"401":1}}],["portrait",{"2":{"157":2}}],["potentially",{"2":{"267":1,"280":1}}],["potential",{"2":{"65":1,"222":1,"401":1}}],["powered",{"2":{"124":5}}],["power",{"2":{"65":1,"222":1,"401":1}}],["position",{"0":{"77":1},"2":{"77":1}}],["possible",{"2":{"76":1,"77":1,"157":1,"173":1,"195":1,"201":2,"302":1,"367":1,"370":1,"417":2}}],["possibilities",{"2":{"64":1,"136":1,"221":1,"400":1}}],["post",{"2":{"43":1,"49":5,"52":1,"53":1,"54":1,"114":1,"126":1,"127":1,"138":1,"139":1,"323":1}}],["points",{"2":{"140":1}}],["point",{"2":{"44":1,"92":1,"128":1,"157":1,"280":1,"281":1,"315":1}}],["polygonindexer",{"2":{"137":1}}],["polygon",{"2":{"35":2,"41":1,"52":1,"69":2,"70":2,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":2,"136":1,"137":1,"138":1,"139":1,"166":2,"168":1,"173":1,"199":1,"226":1,"236":1,"278":1,"279":1,"394":1,"416":1}}],["pixel",{"2":{"382":1}}],["pinata",{"0":{"309":1},"2":{"307":1,"309":2,"310":1,"311":1,"316":1,"317":1}}],["pick",{"2":{"33":1,"112":1,"173":1,"188":1}}],["piece",{"2":{"30":1}}],["plugin",{"2":{"148":1,"150":1,"154":1,"158":1,"235":3,"236":1}}],["plugins",{"2":{"124":1,"150":3}}],["plain",{"2":{"198":1,"415":1}}],["playercontroller",{"2":{"157":1}}],["player",{"2":{"121":2,"122":2,"124":3}}],["play",{"2":{"114":1,"115":1,"116":1,"206":1,"422":1}}],["playground",{"2":{"76":1}}],["places",{"2":{"140":1}}],["place",{"2":{"86":1,"117":1,"162":2,"369":1,"370":1}}],["placed",{"2":{"49":1,"266":1}}],["platformspecificsetup",{"2":{"112":1}}],["platforms",{"0":{"101":1,"403":1},"1":{"102":1,"103":1,"104":1,"404":1,"405":1,"406":1},"2":{"119":1,"120":1}}],["platform",{"2":{"44":1,"120":1,"152":1,"157":1,"368":1}}],["plan",{"2":{"30":1,"135":1,"165":1}}],["please",{"2":{"7":1,"59":1,"69":1,"99":1,"116":1,"118":1,"124":3,"126":1,"128":1,"129":1,"135":1,"140":1,"143":1,"144":1,"159":2,"161":1,"164":1,"165":1,"193":1,"220":2,"251":1,"375":1,"386":1}}],["pair",{"2":{"326":1}}],["paid",{"2":{"36":1,"41":1,"289":1}}],["packaging",{"0":{"161":1},"1":{"162":1,"163":1,"164":1},"2":{"161":1,"164":2}}],["packaged",{"2":{"164":1}}],["packages",{"0":{"68":1},"2":{"54":1,"68":1,"99":2,"398":2}}],["package",{"0":{"114":1},"1":{"115":1},"2":{"44":1,"68":2,"91":1,"99":4,"114":5,"115":1,"116":6,"143":1,"164":1,"172":1,"216":1,"225":2,"235":1,"244":1,"252":1,"381":1,"398":4,"432":1}}],["pawn",{"2":{"150":6,"157":2}}],["path",{"2":{"124":1,"164":1,"173":3,"381":2}}],["path=",{"2":{"114":1}}],["patch",{"2":{"111":2,"145":2}}],["pasting",{"2":{"135":1}}],["pasted",{"2":{"195":1}}],["paste",{"2":{"114":1,"124":1,"139":1,"309":1,"316":1}}],["password",{"2":{"380":1}}],["passes",{"2":{"276":1,"277":1}}],["passed",{"2":{"33":1,"49":1,"82":2,"83":2,"152":1,"180":1,"228":1,"229":1,"238":1,"337":1}}],["passing",{"2":{"74":1,"76":1,"84":1}}],["pass",{"2":{"6":2,"33":1,"50":1,"87":1,"93":1,"136":1,"152":2,"173":3,"198":1,"276":1,"277":1,"379":1,"415":1}}],["palette",{"2":{"76":1}}],["pageprops",{"2":{"266":2}}],["pages",{"0":{"265":1},"2":{"232":3,"233":1,"241":3,"243":1,"264":2}}],["page",{"2":{"46":1,"53":1,"70":1,"82":1,"83":1,"86":1,"119":1,"190":1,"264":1,"265":2,"281":1}}],["parentheses",{"2":{"135":1}}],["param",{"2":{"358":2}}],["parametersasobjectarray",{"2":{"135":2,"136":1}}],["parameters",{"0":{"227":1,"237":1,"247":1,"335":1,"339":1,"343":1},"1":{"228":1,"229":1,"230":1,"238":1,"239":1,"240":1,"248":1,"249":1},"2":{"135":5,"174":1}}],["parameter",{"2":{"77":1,"126":1,"128":1,"129":1,"135":1,"152":1,"153":1,"228":1,"238":1,"279":1,"281":1,"299":1}}],["parallelize",{"2":{"8":1}}],["parallel",{"0":{"42":1},"2":{"8":1,"42":1}}],["parse",{"2":{"49":1}}],["partner",{"2":{"370":3}}],["party",{"2":{"368":1,"369":1}}],["parts",{"2":{"158":2}}],["partial",{"2":{"54":2,"346":1,"370":1}}],["particularly",{"2":{"202":1,"264":1,"267":1,"418":1}}],["particular",{"2":{"32":2}}],["part",{"2":{"8":1,"63":1,"218":1,"434":1}}],["paypal",{"2":{"172":1}}],["payload",{"2":{"164":1,"210":1,"426":1}}],["payable",{"2":{"135":3}}],["paytrie",{"2":{"105":1,"324":1,"407":1}}],["payments",{"2":{"85":1}}],["payment",{"2":{"43":1,"105":1,"189":2,"190":2,"324":1,"407":1}}],["pay",{"2":{"8":1,"35":5,"330":1}}],["purchasing",{"2":{"192":1}}],["purchase",{"2":{"105":2,"191":1,"192":2,"324":2,"407":2}}],["purpose",{"2":{"111":1,"127":1,"158":1}}],["pull",{"2":{"94":1}}],["publishing",{"2":{"124":1}}],["published",{"2":{"33":1}}],["publishcollection",{"2":{"6":1}}],["publicly",{"2":{"368":1}}],["publicclient",{"2":{"226":1}}],["publically",{"2":{"127":1}}],["public",{"2":{"6":1,"126":1,"127":3,"138":2,"139":3,"170":1,"358":1}}],["putting",{"2":{"135":1}}],["put",{"2":{"6":3,"49":1,"116":1}}],["practice",{"2":{"267":1}}],["pr",{"2":{"140":1,"144":1}}],["prudent",{"2":{"108":1,"410":1}}],["primitive",{"2":{"326":1}}],["primary",{"2":{"202":2,"418":2}}],["price",{"2":{"293":1}}],["pricesort",{"2":{"323":1}}],["prices",{"2":{"140":1}}],["pricing",{"0":{"7":1},"2":{"8":1}}],["priority",{"2":{"294":1}}],["prior",{"2":{"54":1,"124":2,"152":1,"157":1}}],["privatekeystring",{"2":{"270":1}}],["privatekey",{"2":{"46":4}}],["private",{"2":{"46":2,"49":1,"50":1,"54":1,"95":2,"106":3,"107":1,"110":1,"145":1,"148":1,"149":1,"202":1,"205":1,"270":2,"408":3,"409":1,"412":1,"418":1,"421":1}}],["privately",{"2":{"6":1}}],["print",{"2":{"45":1,"46":1}}],["prepared",{"2":{"329":1}}],["prepare",{"0":{"308":1}}],["pre",{"2":{"304":1,"305":1}}],["prefixedmessage",{"2":{"356":2}}],["prefilling",{"2":{"191":1}}],["prefabs",{"2":{"118":1,"140":1}}],["prefab",{"2":{"118":2,"140":1}}],["preference",{"2":{"110":1,"412":1}}],["prefer",{"2":{"6":1,"279":1}}],["press",{"2":{"44":1,"53":1,"114":1}}],["preview",{"2":{"316":1}}],["previously",{"2":{"54":1,"195":1,"270":1}}],["previous",{"2":{"6":1,"35":1,"210":1,"426":1}}],["prevent",{"0":{"49":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"43":1,"51":1,"192":1,"381":1}}],["proper",{"2":{"343":1}}],["properly",{"2":{"162":1}}],["proxy",{"2":{"334":1}}],["program",{"2":{"332":1}}],["progressively",{"2":{"172":1}}],["progress",{"2":{"140":1}}],["pros",{"0":{"327":1,"330":1}}],["pro",{"2":{"164":1,"379":1,"380":1,"381":1,"382":2,"383":1}}],["produce",{"0":{"264":1},"2":{"264":1}}],["produced",{"2":{"46":1}}],["product",{"2":{"140":1}}],["prone",{"2":{"135":1}}],["proceed",{"2":{"119":1}}],["process",{"2":{"35":1,"49":1,"61":2,"65":1,"114":1,"135":3,"143":1,"160":2,"164":1,"173":1,"202":1,"222":1,"317":1,"377":2,"379":2,"380":2,"381":2,"382":2,"383":2,"393":2,"394":2,"401":1,"418":1}}],["protocol",{"2":{"172":1,"176":1}}],["protocols",{"2":{"4":1,"195":1}}],["protected",{"2":{"368":1}}],["protects",{"2":{"367":1,"370":1}}],["protect",{"2":{"110":1,"412":1}}],["protection",{"2":{"109":1,"180":1,"370":1,"386":1,"411":1}}],["provisioning",{"2":{"163":1}}],["providing",{"2":{"46":1,"64":1,"130":1,"132":1,"134":1,"135":1,"221":1,"368":1,"400":1}}],["provides",{"2":{"76":1,"91":1,"111":1,"119":1,"136":1,"145":1,"267":1,"272":1,"368":1,"370":1}}],["provided",{"2":{"35":1,"41":1,"44":1,"60":1,"84":3,"115":1,"128":1,"130":1,"132":1,"134":1,"184":1,"267":1,"278":1,"279":1,"281":3,"300":2,"304":1,"305":1,"332":1,"338":1,"344":1,"358":4,"376":1,"380":1}}],["providerurl",{"2":{"157":1,"159":2}}],["providers",{"2":{"46":1,"49":1,"54":3,"68":1,"105":4,"170":1,"171":1,"186":1,"189":2,"190":1,"199":1,"324":4,"336":1,"379":1,"386":1,"407":4,"416":1}}],["provider",{"2":{"35":2,"41":1,"46":2,"54":5,"86":1,"105":1,"159":1,"171":4,"173":1,"186":2,"190":1,"199":2,"207":1,"266":1,"324":1,"336":2,"379":1,"381":2,"386":2,"407":1,"416":2,"423":1}}],["provide",{"2":{"33":1,"59":1,"65":1,"92":1,"93":1,"95":1,"99":1,"118":1,"135":3,"140":3,"149":2,"166":1,"202":1,"222":1,"267":1,"281":1,"297":1,"299":2,"300":1,"301":1,"304":1,"316":1,"325":1,"368":1,"375":1,"380":1,"386":1,"401":1,"418":1}}],["prove",{"2":{"53":1,"198":1,"415":1}}],["proofstring",{"2":{"49":1,"199":1,"416":1}}],["proof",{"2":{"43":1,"49":5,"52":5,"53":4,"173":2,"178":1,"179":1,"198":2,"199":6,"415":2,"416":6}}],["prompted",{"2":{"195":1,"316":1}}],["prompt",{"2":{"114":1,"116":1,"195":1,"198":1,"249":1,"390":1,"415":1}}],["prompts",{"2":{"13":1,"44":1}}],["promise",{"2":{"42":1,"49":4,"54":2}}],["probably",{"2":{"131":1}}],["probability",{"2":{"42":1}}],["problem",{"2":{"42":1}}],["problems",{"2":{"2":1,"160":1}}],["projectfilesios",{"2":{"164":1}}],["projectname",{"0":{"80":1}}],["projectaccesskey",{"2":{"35":2,"41":1,"46":1,"61":1,"69":2,"70":2,"93":1,"148":1,"173":3,"377":1,"379":1,"380":1,"381":1,"382":1,"383":1,"393":1,"394":1}}],["project",{"0":{"60":1,"99":1,"376":1},"1":{"100":1},"2":{"7":1,"13":1,"33":1,"44":7,"45":1,"46":1,"49":5,"50":1,"54":1,"60":1,"61":1,"80":1,"99":2,"115":5,"116":2,"117":1,"121":1,"122":1,"124":2,"150":2,"164":8,"171":1,"220":1,"312":1,"369":1,"376":1,"377":1,"379":1,"380":1,"381":1,"382":1,"383":1,"393":1,"394":1,"398":2}}],["projectid",{"2":{"6":2,"382":2}}],["projects",{"2":{"2":1,"6":10,"8":1}}],["kind",{"2":{"369":1}}],["kinds",{"2":{"167":1,"168":1,"220":1}}],["kitcheckoutprovider",{"2":{"86":4}}],["kitconfig",{"2":{"70":1,"74":2,"93":2}}],["kitwalletprovider",{"2":{"70":7}}],["kitprovider",{"2":{"69":4,"70":6,"74":3,"86":2,"93":2}}],["kit",{"0":{"67":1,"68":1,"69":1,"91":1,"221":1,"400":1},"1":{"68":1,"92":1,"222":1,"401":1},"2":{"64":1,"65":1,"66":2,"67":1,"68":8,"69":3,"70":4,"71":1,"72":1,"73":1,"74":2,"76":1,"86":6,"87":1,"91":3,"92":2,"93":3,"94":1,"220":1,"221":1,"222":1,"223":2,"400":1,"401":1,"402":2}}],["keepwalletopened",{"0":{"182":1},"2":{"182":2}}],["keep",{"2":{"160":1,"182":1}}],["keeps",{"2":{"33":1}}],["keccak256",{"2":{"46":2,"358":2}}],["keyboard",{"2":{"114":1}}],["keystore",{"2":{"162":1}}],["keys",{"0":{"108":1,"202":1,"203":1,"410":1,"418":1,"419":1},"1":{"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"420":1,"421":1,"422":1,"423":1,"424":1,"425":1},"2":{"60":1,"95":3,"106":3,"107":6,"108":1,"110":3,"117":2,"124":1,"148":1,"172":1,"201":2,"202":3,"330":1,"370":1,"376":1,"408":3,"409":6,"410":1,"412":3,"417":2,"418":3}}],["keypair",{"2":{"46":1}}],["keyword",{"2":{"44":1,"135":1}}],["key",{"0":{"65":1,"106":1,"109":1,"110":1,"205":1,"208":1,"222":1,"401":1,"408":1,"411":1,"412":1,"421":1,"424":1},"1":{"107":1,"108":1,"109":1,"110":1,"409":1,"410":1,"411":1,"412":1},"2":{"5":1,"13":1,"30":1,"35":2,"41":1,"46":3,"49":5,"50":2,"54":2,"60":2,"61":2,"69":1,"70":1,"93":1,"95":1,"106":3,"107":9,"108":1,"109":6,"110":6,"117":1,"148":2,"149":3,"162":1,"164":2,"165":1,"167":2,"171":2,"173":1,"199":1,"202":2,"205":1,"206":1,"207":2,"208":1,"209":2,"270":2,"279":1,"326":1,"330":1,"369":1,"376":2,"377":2,"379":2,"380":3,"381":2,"382":2,"383":2,"393":2,"394":2,"408":3,"409":9,"410":1,"411":6,"412":6,"416":1,"418":2,"421":1,"422":1,"423":2,"424":1,"425":2}}],["known",{"2":{"135":1,"300":2,"302":2,"351":1,"352":1,"362":1}}],["knowledge",{"2":{"43":1}}],["know",{"2":{"2":1,"46":1,"99":1,"398":1}}],["circle",{"2":{"381":1}}],["cid",{"2":{"309":1,"310":1}}],["certain",{"2":{"391":1}}],["certainty",{"2":{"198":1,"415":1}}],["center",{"2":{"77":3}}],["c3bgcu3lkfr9bp9jfsslenpaaaaaaaaaa",{"2":{"167":1,"168":1}}],["c++",{"2":{"150":3,"152":1}}],["cpp",{"2":{"149":1,"152":2,"160":1}}],["cs",{"2":{"126":1}}],["custodial",{"2":{"95":1,"110":1,"126":1,"366":1,"412":1}}],["customizable",{"2":{"142":1}}],["customizability",{"0":{"142":1},"1":{"143":1,"144":1}}],["customization",{"0":{"144":1},"2":{"110":1,"412":1}}],["customize",{"2":{"74":1,"92":1,"144":1,"173":1}}],["custom",{"0":{"91":1,"92":1,"93":1,"94":1,"152":1},"1":{"92":1},"2":{"91":2,"92":6,"93":5,"94":2,"112":1,"120":2,"124":1,"130":1,"132":1,"134":1,"136":1,"150":3,"157":1,"176":1,"266":1,"267":1,"321":1,"386":1,"387":1}}],["curious",{"2":{"126":1,"135":1}}],["current",{"0":{"336":1,"351":1},"1":{"352":1},"2":{"340":1,"351":2,"382":1,"387":1}}],["currently",{"2":{"60":1,"105":1,"107":1,"120":1,"269":1,"324":1,"370":1,"376":1,"407":1,"409":1}}],["currencies",{"2":{"128":1}}],["currencyaddresses",{"2":{"323":1}}],["currency",{"2":{"35":1,"128":2,"190":2,"192":4,"281":1,"298":1}}],["curl",{"2":{"52":2,"53":1,"166":1,"319":1,"323":1}}],["ctx",{"2":{"49":3}}],["cdn",{"0":{"100":1,"399":1},"2":{"100":1,"399":1}}],["cd",{"2":{"44":1,"45":1}}],["claim",{"2":{"180":1}}],["class",{"2":{"61":1,"130":1,"132":1,"134":1,"137":2,"150":2,"304":1,"377":1}}],["closing",{"2":{"158":1}}],["close",{"0":{"383":1},"2":{"71":1,"182":1}}],["closed",{"2":{"60":1,"376":1,"383":2}}],["cloud",{"0":{"309":1},"2":{"44":1,"309":1,"316":1,"317":1}}],["cloudflare",{"0":{"27":1,"44":1,"50":1},"1":{"45":1},"2":{"13":2,"43":3,"44":3,"49":1}}],["clone",{"2":{"44":1}}],["click",{"2":{"114":3,"115":3,"116":1,"117":1,"143":2,"164":7,"266":1,"311":1,"312":1,"314":1,"316":1,"318":1}}],["clicks",{"2":{"65":1,"198":1,"222":1,"401":1,"415":1}}],["clicking",{"2":{"46":1}}],["clipboard",{"2":{"53":1,"195":2}}],["clientid=",{"2":{"381":1}}],["clients",{"0":{"279":1},"1":{"280":1,"281":1,"282":1,"283":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}}],["client=",{"2":{"69":1,"70":2,"86":1,"93":1,"266":1}}],["client",{"2":{"52":1,"135":1,"149":2,"162":6,"166":2,"199":1,"202":1,"207":1,"208":1,"209":1,"216":1,"219":2,"265":2,"266":9,"274":2,"275":2,"276":2,"277":2,"279":4,"280":1,"281":2,"282":1,"283":1,"284":1,"285":1,"286":2,"287":1,"288":1,"289":1,"290":2,"291":2,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":2,"300":7,"302":3,"303":1,"304":5,"381":1,"416":1,"418":1,"423":1,"424":1,"425":1,"432":1,"435":2}}],["cli",{"0":{"44":1},"1":{"45":1},"2":{"43":2,"44":1}}],["c",{"0":{"39":1,"40":1,"41":1},"2":{"117":2,"139":1,"301":1}}],["cr",{"2":{"164":1}}],["cryptographically",{"2":{"270":1,"368":1}}],["cryptography",{"2":{"110":1,"412":1}}],["crypto",{"0":{"89":1},"2":{"368":1}}],["cryptocurrencies",{"2":{"105":1,"324":1,"407":1}}],["cryptocurrency",{"2":{"85":1,"89":1}}],["cryptocheckout",{"0":{"89":1},"2":{"88":1,"89":2}}],["credential",{"2":{"381":1}}],["credentialresponse",{"2":{"381":2}}],["credentialsin",{"2":{"150":1,"152":3,"157":2,"159":2}}],["credentials",{"0":{"148":1},"2":{"60":1,"110":1,"148":2,"150":3,"152":3,"153":2,"157":2,"158":1,"159":2,"376":1,"412":1}}],["credit",{"2":{"36":1,"105":1,"324":1,"407":1}}],["creator",{"2":{"315":1}}],["creators",{"2":{"133":1}}],["creation",{"2":{"13":1,"337":1,"366":1,"368":1,"378":1}}],["creating",{"0":{"6":1,"92":1},"2":{"91":1,"92":1,"94":1,"126":1,"127":1,"130":1,"132":1,"134":1,"137":1,"164":1,"279":1,"299":2}}],["createroot",{"2":{"381":1}}],["createrandom",{"2":{"46":1}}],["createhashrouter",{"2":{"381":2}}],["createtransaction",{"2":{"298":2}}],["createtoken",{"2":{"6":1}}],["createclient",{"2":{"266":1}}],["createconnector",{"2":{"92":2}}],["createconfig",{"2":{"69":2,"70":2,"93":1,"226":1}}],["createcollection",{"2":{"6":1}}],["creates",{"2":{"107":1,"409":1}}],["createdat",{"2":{"382":2}}],["created",{"2":{"6":1,"107":1,"115":1,"117":1,"130":1,"132":1,"134":1,"143":1,"270":1,"271":1,"304":1,"311":1,"315":1,"344":1,"356":1,"366":2,"379":1,"409":1}}],["createasset",{"2":{"6":1}}],["create",{"0":{"37":1},"2":{"6":1,"34":1,"35":5,"41":2,"42":1,"44":4,"46":2,"49":1,"54":5,"61":1,"92":3,"93":1,"106":2,"115":1,"117":4,"124":1,"130":2,"132":2,"134":2,"136":1,"143":2,"150":2,"152":1,"157":1,"162":1,"171":2,"199":1,"205":1,"209":1,"266":1,"270":1,"279":2,"298":1,"300":5,"302":1,"304":2,"309":1,"312":1,"377":1,"408":2,"416":1,"421":1,"425":1}}],["craft",{"2":{"35":1,"41":1}}],["cheap",{"2":{"327":1}}],["checked",{"2":{"393":1}}],["checks",{"2":{"344":1}}],["check",{"2":{"35":2,"41":1,"49":2,"66":1,"126":1,"127":1,"138":1,"139":1,"152":1,"166":1,"173":1,"223":1,"281":1,"321":1,"387":1,"402":1}}],["checking",{"2":{"33":1,"89":1,"159":1}}],["checkoutconfig",{"2":{"89":1}}],["checkoutsettings",{"2":{"87":2,"88":2}}],["checkout",{"0":{"28":1,"87":1,"88":1,"89":1},"1":{"89":1,"90":1},"2":{"66":1,"85":1,"86":6,"87":3,"88":1,"223":1,"402":1}}],["children",{"2":{"266":2}}],["child",{"2":{"150":1,"266":1}}],["choosing",{"2":{"315":1}}],["chooses",{"2":{"195":1}}],["choose",{"2":{"105":1,"110":1,"140":1,"171":1,"195":1,"324":1,"407":1,"412":1}}],["choice",{"2":{"312":1,"379":1}}],["chose",{"2":{"116":1,"154":1,"195":1,"299":1}}],["chrome",{"0":{"194":1},"2":{"104":1,"172":2,"193":1,"194":1,"379":1,"380":1,"381":1,"382":2,"383":1,"406":1}}],["chance",{"2":{"164":1}}],["change",{"2":{"210":1,"332":1,"337":1,"344":1,"426":1}}],["changed",{"2":{"115":1,"337":1}}],["changes",{"2":{"8":1,"111":2,"116":2,"143":1,"145":2,"164":1,"172":1,"251":1,"381":1}}],["challenge",{"2":{"119":2}}],["challenging",{"2":{"116":1}}],["chainindexer",{"2":{"137":3}}],["chainid",{"0":{"257":1,"286":1},"2":{"35":1,"41":1,"49":4,"54":4,"84":1,"89":1,"207":2,"254":1,"278":2,"286":2,"357":2,"389":1,"390":1,"391":1,"393":1,"394":1,"423":2}}],["chainconfig",{"2":{"49":2}}],["chain",{"2":{"30":4,"33":1,"42":1,"49":10,"50":3,"54":6,"69":5,"70":5,"95":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":2,"136":1,"137":1,"138":1,"139":1,"167":2,"168":1,"171":1,"192":1,"211":1,"212":1,"213":1,"257":1,"278":5,"279":2,"281":2,"286":2,"290":2,"313":1,"316":1,"319":1,"427":1,"428":1,"429":1}}],["chains",{"0":{"228":1,"238":1},"2":{"5":1,"30":3,"69":4,"70":4,"93":1,"226":1,"228":1,"236":1,"238":1,"270":1}}],["capabilities",{"2":{"219":1,"435":1}}],["capturables",{"2":{"160":1}}],["capturable",{"2":{"160":2}}],["category",{"2":{"124":12,"152":5}}],["catch",{"2":{"35":1,"49":3,"54":1,"171":1,"199":1,"267":2,"381":1,"390":1,"394":1,"416":1}}],["causes",{"2":{"266":1}}],["cause",{"2":{"111":3,"117":1,"145":3}}],["caution",{"2":{"35":1,"173":1,"343":1}}],["came",{"2":{"49":1}}],["case",{"2":{"42":1,"84":1,"109":1,"136":1,"152":1,"165":1,"300":2,"302":2,"337":1,"345":1,"346":1,"352":2,"411":1}}],["cases",{"2":{"8":1,"116":1,"139":1,"158":1,"198":1,"219":1,"343":1,"415":1,"435":1}}],["carefully",{"2":{"172":1}}],["care",{"2":{"41":1}}],["card",{"2":{"36":1,"105":2,"324":2,"407":2}}],["cancel",{"2":{"391":1}}],["cancelled",{"2":{"389":1}}],["candidate",{"2":{"352":1}}],["canvas",{"2":{"118":4}}],["cannot",{"2":{"35":1,"120":1,"251":1,"299":1,"370":1,"386":1}}],["can",{"2":{"6":3,"8":1,"30":1,"31":1,"32":1,"33":1,"34":2,"35":4,"36":2,"42":5,"43":1,"44":2,"45":1,"46":4,"47":1,"49":1,"52":2,"53":1,"54":1,"59":1,"61":1,"63":1,"71":1,"73":1,"74":2,"76":1,"84":1,"91":1,"92":3,"93":1,"94":1,"95":1,"99":2,"100":1,"105":3,"106":2,"107":2,"109":1,"110":2,"111":1,"115":3,"116":1,"118":1,"126":1,"127":3,"128":2,"129":3,"130":1,"131":2,"132":1,"133":3,"134":1,"135":2,"138":2,"139":4,"140":2,"143":2,"145":1,"148":3,"149":1,"150":1,"152":1,"154":3,"159":1,"160":2,"164":2,"167":1,"168":1,"170":1,"172":1,"173":6,"174":1,"177":1,"189":1,"192":1,"195":3,"198":2,"199":1,"202":3,"209":1,"211":2,"212":1,"213":1,"214":1,"218":1,"219":2,"220":1,"225":1,"230":1,"234":1,"240":1,"244":1,"255":1,"260":1,"261":1,"264":1,"265":2,"266":6,"267":2,"268":1,"278":1,"279":2,"280":2,"300":2,"302":1,"303":1,"304":1,"307":1,"308":2,"315":1,"319":2,"324":3,"329":2,"332":1,"333":2,"335":1,"337":1,"343":1,"350":1,"351":2,"352":1,"357":1,"358":1,"366":2,"367":1,"368":3,"369":4,"375":1,"377":1,"380":2,"381":2,"383":2,"386":1,"388":1,"389":1,"391":1,"394":1,"398":1,"399":1,"407":3,"408":2,"409":2,"411":1,"412":2,"415":2,"416":1,"418":3,"425":1,"427":2,"428":1,"429":1,"430":1,"434":1,"435":2}}],["caller",{"2":{"343":1}}],["called",{"2":{"99":1,"173":1,"335":1,"338":1,"343":1,"344":1,"345":1,"347":2,"369":1,"381":1,"398":1}}],["callfunction",{"2":{"300":7}}],["callable",{"2":{"150":2}}],["calldata",{"2":{"54":1,"213":2,"214":1,"358":1,"429":2,"430":1}}],["callcontractfunction",{"2":{"130":1,"132":1,"134":1,"300":4,"304":1}}],["callcontract",{"2":{"49":3,"54":2}}],["callbacks",{"2":{"160":2}}],["callback",{"0":{"389":1},"2":{"35":2,"160":2,"389":2}}],["calling",{"0":{"300":1},"2":{"33":1,"49":1,"127":1,"135":3,"138":1,"139":1,"150":1,"157":1,"299":1,"300":1,"334":1,"350":1,"351":1,"358":1}}],["callshowauthsuccessscreen",{"2":{"152":4}}],["calls",{"2":{"33":2,"152":2,"157":1,"159":1,"267":2,"335":1,"343":1}}],["call",{"0":{"323":1},"2":{"6":1,"42":1,"49":3,"127":1,"135":5,"138":1,"139":2,"152":5,"153":1,"157":1,"159":2,"166":1,"171":1,"219":1,"300":1,"319":1,"344":1,"435":1}}],["co",{"2":{"133":1}}],["cognito",{"2":{"119":2,"385":1}}],["colorschememanager",{"2":{"143":4}}],["colors",{"2":{"76":2,"143":1}}],["color",{"0":{"143":1},"2":{"76":1,"143":3}}],["colleted",{"2":{"154":1}}],["collect",{"2":{"153":1,"162":1}}],["collected",{"2":{"152":2,"153":1}}],["collectibleinterface",{"2":{"54":2}}],["collectible",{"0":{"54":1,"213":1,"429":1},"2":{"43":2,"54":1,"213":2,"429":2}}],["collectibles",{"0":{"9":1,"11":1,"15":1,"21":1,"43":1},"1":{"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1},"2":{"65":1,"90":1,"222":1,"401":1}}],["collectionaddress",{"2":{"323":1}}],["collectionid",{"2":{"6":4}}],["collection",{"2":{"6":5,"313":1}}],["collections",{"0":{"6":1},"2":{"5":1,"6":10}}],["collision",{"2":{"42":1}}],["coinquantity",{"2":{"89":1}}],["coinbase",{"2":{"83":1}}],["coins",{"2":{"65":1,"222":1,"401":1}}],["coingecko",{"2":{"33":1}}],["copied",{"2":{"53":1}}],["copy",{"2":{"53":1,"135":1,"150":2,"195":1,"309":1,"310":1,"311":1}}],["corrupt",{"2":{"334":1}}],["corruption",{"2":{"334":1}}],["corresponds",{"2":{"338":1,"340":1,"343":1}}],["corresponding",{"2":{"82":1,"83":1,"166":1}}],["correspond",{"2":{"82":1,"83":1,"343":1}}],["correct",{"2":{"35":1,"232":1,"241":1,"343":1,"351":1,"358":1}}],["core",{"2":{"68":1,"69":1,"86":1,"199":1,"255":1,"334":1,"416":1}}],["cors",{"2":{"49":1}}],["codeat",{"0":{"287":1},"2":{"287":1}}],["codein",{"2":{"152":1,"153":1}}],["code",{"0":{"200":1,"385":1},"2":{"36":1,"41":1,"44":1,"46":1,"49":1,"54":1,"70":1,"119":1,"126":1,"129":1,"131":1,"133":1,"135":3,"139":2,"153":2,"164":2,"166":1,"167":1,"173":1,"195":3,"224":1,"234":1,"244":1,"260":1,"265":1,"266":1,"287":1,"334":1,"368":1,"369":1,"385":1,"386":1,"388":4,"393":1,"394":2}}],["count",{"2":{"357":1}}],["counterfactual",{"2":{"344":1}}],["counter",{"2":{"337":1,"352":1}}],["could",{"2":{"35":2,"110":1,"301":1,"308":1,"370":1,"412":1}}],["course",{"2":{"30":1,"172":1}}],["convenient",{"2":{"202":1,"418":1}}],["convenience",{"2":{"130":1,"132":1,"134":1,"144":1,"304":1,"305":2}}],["convention",{"2":{"198":1,"415":1}}],["converted",{"2":{"301":1}}],["convert",{"2":{"129":1,"135":1}}],["congratulations",{"2":{"126":1,"318":1}}],["conflicts",{"2":{"92":1}}],["confirm",{"2":{"202":1,"418":1}}],["confirms",{"2":{"195":1}}],["confirmations",{"2":{"202":1,"418":1}}],["confirmation",{"0":{"201":1,"417":1},"2":{"43":1,"195":1,"201":1,"208":1,"417":1,"424":1}}],["configs",{"2":{"358":1}}],["configjsonrpcprovider",{"2":{"199":1,"416":1}}],["config=",{"2":{"69":1,"70":3,"74":1,"86":1,"93":2}}],["config",{"2":{"61":1,"69":2,"70":3,"86":1,"93":1,"115":1,"117":2,"148":3,"162":2,"377":1,"379":1,"380":1,"381":1,"382":1,"383":1,"393":1,"394":1}}],["configuring",{"0":{"88":1},"1":{"89":1,"90":1},"2":{"115":1}}],["configure",{"2":{"69":1,"74":1,"78":1,"88":1,"105":1,"324":1,"369":1,"407":1}}],["configured",{"2":{"49":4,"121":1,"122":1,"338":1}}],["configurations",{"2":{"69":1,"93":1,"351":1}}],["configuration",{"0":{"74":1,"78":1,"89":1,"90":1,"337":1,"344":1,"350":1,"351":1,"352":1,"353":1},"1":{"79":1,"80":1,"81":1,"82":1,"83":1,"338":1,"339":1,"340":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"351":1,"352":2},"2":{"60":1,"66":1,"69":1,"74":1,"89":1,"90":1,"93":2,"121":1,"122":1,"223":1,"337":2,"338":1,"339":1,"340":1,"341":1,"342":1,"343":3,"344":4,"346":1,"351":2,"367":1,"376":1,"402":1}}],["connectweb3react",{"2":{"255":1}}],["connectoptions",{"2":{"174":2}}],["connector",{"0":{"92":1,"265":1,"266":1},"2":{"82":2,"83":2,"92":12,"93":3,"224":1,"225":5,"226":2,"231":3,"232":2,"234":1,"235":1,"236":1,"242":3,"251":2,"252":2,"254":2,"255":1}}],["connectorsforwallets",{"2":{"236":2}}],["connectors",{"0":{"91":1,"93":1,"94":1,"220":1},"1":{"92":1},"2":{"68":4,"69":3,"70":3,"82":2,"83":2,"91":4,"92":5,"93":5,"94":2,"220":4,"226":4,"236":2,"254":1,"255":2,"264":1,"266":3}}],["connectdetails",{"2":{"173":3,"174":1,"183":1,"198":2,"199":1,"415":2,"416":1}}],["connected",{"2":{"126":1,"173":1,"195":1,"198":1,"286":1,"290":1,"415":1}}],["connecttowaas",{"2":{"126":1}}],["connecting",{"0":{"126":1,"173":1,"193":1,"194":1,"195":1},"2":{"69":1,"126":1,"182":2,"183":1,"185":1,"195":1}}],["connection",{"2":{"67":1,"71":1,"171":1,"195":3,"229":2,"239":1,"255":1,"258":1,"280":1}}],["connections",{"2":{"65":1,"222":1,"401":1}}],["connect",{"0":{"71":1,"172":1,"174":1,"204":1,"229":1,"239":1,"420":1},"1":{"173":1,"174":1,"175":2,"176":2,"177":2,"178":2,"179":2,"180":2,"181":2,"182":2,"183":2,"184":2,"185":2,"186":2,"187":2,"188":2,"189":2,"190":2,"191":2,"192":2,"193":1,"194":1,"195":1},"2":{"44":1,"53":2,"65":1,"69":1,"70":1,"71":1,"83":1,"93":1,"105":1,"172":3,"173":7,"174":2,"175":2,"178":1,"179":1,"180":1,"181":3,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"195":1,"198":5,"199":1,"204":1,"222":1,"224":1,"226":1,"229":1,"230":1,"234":1,"236":1,"239":2,"240":1,"244":1,"248":1,"249":1,"257":1,"260":1,"261":2,"324":1,"401":1,"407":1,"415":5,"416":1,"420":1}}],["consensys",{"0":{"364":1},"2":{"362":1}}],["consent",{"2":{"115":1,"366":1}}],["considered",{"2":{"386":1}}],["consider",{"2":{"267":1}}],["considerations",{"2":{"232":1,"241":1,"349":1}}],["consulted",{"2":{"266":1}}],["cons",{"2":{"89":1}}],["console",{"2":{"35":3,"41":2,"46":1,"49":1,"89":1,"171":2,"173":2,"197":1,"199":2,"207":2,"209":2,"210":1,"211":2,"212":2,"213":2,"214":2,"336":1,"379":1,"381":2,"382":1,"387":1,"390":1,"391":1,"393":1,"394":1,"414":1,"416":2,"423":2,"425":2,"426":1,"427":2,"428":2,"429":2,"430":2}}],["constraints",{"2":{"369":1}}],["constructions",{"2":{"366":1}}],["constructor",{"2":{"304":1}}],["construct",{"2":{"298":1,"302":1,"356":1,"357":1}}],["constants",{"0":{"348":1,"349":1},"2":{"344":4,"350":2}}],["const",{"2":{"35":14,"41":7,"42":6,"46":7,"49":11,"54":3,"61":1,"69":6,"70":7,"71":4,"72":3,"74":1,"86":1,"87":4,"88":1,"92":2,"93":3,"152":6,"153":1,"154":1,"160":4,"167":2,"171":3,"173":11,"174":1,"197":2,"198":2,"199":5,"204":3,"205":3,"206":2,"207":3,"208":2,"209":1,"210":3,"211":12,"212":13,"213":13,"214":13,"226":2,"236":1,"246":3,"254":2,"255":3,"265":2,"266":2,"336":4,"344":1,"350":1,"356":4,"357":6,"361":1,"377":1,"379":3,"380":6,"381":9,"382":2,"383":2,"387":1,"388":2,"389":1,"391":1,"393":2,"394":2,"414":2,"415":2,"416":5,"420":3,"421":3,"422":2,"423":3,"424":2,"425":1,"426":3,"427":12,"428":13,"429":13,"430":13}}],["continue",{"2":{"391":1}}],["context",{"0":{"361":1},"2":{"168":1,"269":1,"279":1,"344":1}}],["content",{"2":{"49":1,"52":1,"53":1,"150":3,"265":1,"266":2,"309":1,"323":1}}],["contain",{"2":{"124":1}}],["containing",{"2":{"107":1,"266":1,"409":1}}],["contains",{"2":{"73":1,"164":1,"334":1,"338":1,"369":1}}],["contact",{"2":{"7":1,"60":1,"376":1,"386":1}}],["contribute",{"2":{"94":1}}],["controlling",{"2":{"110":1,"157":1,"412":1}}],["controlled",{"2":{"35":2,"41":1,"46":1,"95":2,"106":1,"408":1}}],["control",{"2":{"33":1,"49":3,"92":1,"95":1,"106":1,"108":1,"109":1,"110":1,"116":1,"198":1,"408":1,"410":1,"411":1,"412":1,"415":1}}],["contractbytecodeasstring",{"2":{"303":1}}],["contractdeploymentresult",{"2":{"303":1}}],["contractdeploymentreturn",{"2":{"139":1}}],["contractdeployer",{"2":{"303":2}}],["contractcall",{"2":{"300":3,"304":1}}],["contractabi",{"2":{"300":2,"302":2}}],["contractabiasstring",{"2":{"135":2,"136":1}}],["contractaddress",{"2":{"35":1,"54":2,"84":1,"89":1,"90":1,"135":2,"136":1,"287":1,"299":1,"300":2,"302":2,"303":1,"304":1}}],["contracts",{"0":{"299":1,"302":1,"303":1,"325":1},"1":{"300":1,"301":1,"302":1,"303":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1},"2":{"8":2,"33":2,"46":2,"136":1,"139":1,"301":1,"312":1,"329":2,"362":1,"368":1}}],["contract",{"0":{"9":1,"10":1,"11":1,"12":1,"15":1,"21":1,"46":1,"48":1,"139":1,"300":1,"313":1,"314":1,"315":1,"329":1,"362":1},"1":{"47":1,"48":1,"330":1,"363":1,"364":1,"365":1},"2":{"6":4,"8":1,"13":2,"30":1,"32":3,"33":1,"34":1,"35":3,"36":4,"43":1,"46":4,"47":1,"48":2,"49":7,"50":2,"54":2,"89":2,"95":1,"126":1,"129":2,"130":2,"131":1,"132":2,"133":2,"134":2,"135":4,"136":2,"139":5,"212":1,"213":1,"287":1,"299":8,"300":8,"302":9,"303":1,"304":5,"305":1,"307":1,"312":1,"313":2,"314":1,"315":3,"316":1,"319":1,"325":2,"329":1,"332":2,"336":1,"337":1,"343":1,"344":1,"355":1,"367":1,"369":1,"428":1,"429":1}}],["comes",{"2":{"106":1,"408":1}}],["combination",{"2":{"266":1}}],["combine",{"2":{"220":1}}],["combined",{"2":{"99":1,"107":1,"343":1,"358":1,"398":1,"409":1}}],["combat",{"2":{"33":1}}],["commons",{"2":{"199":2,"416":2}}],["common",{"2":{"198":1,"415":1}}],["communicating",{"2":{"369":1}}],["communication",{"2":{"13":1,"103":1,"369":1,"405":1}}],["communicate",{"2":{"172":1}}],["commands",{"2":{"112":2,"166":1}}],["command",{"2":{"44":1,"45":1,"164":1,"225":1,"231":1,"242":1,"266":1}}],["com",{"2":{"33":1,"62":1,"100":1,"114":1,"116":1,"124":8,"168":2,"173":2,"185":1,"187":1,"217":1,"224":1,"234":1,"244":1,"260":1,"262":1,"266":1,"380":1,"382":4,"399":1,"433":1}}],["compute",{"2":{"352":1}}],["computer",{"2":{"102":1,"310":1,"404":1}}],["compiled",{"2":{"139":1}}],["compile",{"2":{"139":1}}],["complicated",{"2":{"135":2}}],["complexity",{"2":{"127":1}}],["complex",{"0":{"130":1,"132":1,"134":1},"2":{"127":1,"135":1,"136":1}}],["completeness",{"2":{"280":1}}],["completes",{"2":{"119":1}}],["completely",{"2":{"115":1}}],["completed",{"2":{"54":1,"157":1}}],["complete",{"2":{"33":1,"43":2,"44":1,"46":2,"54":1,"62":1,"70":1,"173":1,"217":1,"381":1,"387":1,"433":1}}],["compared",{"2":{"106":1,"351":1,"352":1,"408":1}}],["compat",{"2":{"51":1}}],["compatible",{"2":{"5":1,"8":2,"30":5,"51":1,"172":1,"173":1,"220":1,"261":2,"366":2}}],["component",{"2":{"118":1,"150":1,"157":2,"266":12,"381":1}}],["components",{"0":{"268":1},"2":{"69":1,"70":1,"141":1,"265":1,"266":6,"268":1}}],["composed",{"2":{"99":1,"326":1,"398":1}}],["comprised",{"2":{"141":1}}],["compromised",{"2":{"95":2,"106":1,"107":2,"109":1,"110":3,"370":3,"408":1,"409":2,"411":1,"412":3}}],["comprehensive",{"2":{"65":1,"222":1,"401":1}}],["coming",{"0":{"28":1,"144":1},"2":{"49":1,"125":1,"140":1,"202":1,"335":1,"343":1,"368":1,"418":1}}],["ubiquitous",{"2":{"304":1}}],["u",{"2":{"168":1}}],["ue",{"2":{"152":1}}],["ufunction",{"2":{"152":6,"160":1}}],["ufunctions",{"2":{"152":1}}],["uobject",{"2":{"152":3,"157":1,"159":1}}],["uauthenticator",{"2":{"152":5,"154":1,"159":2,"160":1}}],["utf",{"2":{"124":2}}],["utility",{"2":{"93":1,"207":1,"423":1}}],["utilized",{"2":{"219":1,"435":1}}],["utilize",{"2":{"69":1,"71":1}}],["utilizing",{"2":{"6":1}}],["utils",{"2":{"35":1,"41":1,"42":4,"46":2,"54":1,"205":2,"207":1,"209":1,"211":2,"212":2,"213":2,"214":3,"336":2,"357":1,"421":2,"423":1,"425":1,"427":2,"428":2,"429":2,"430":3}}],["uint8",{"2":{"301":1,"357":1}}],["uint",{"2":{"301":1}}],["uint256",{"2":{"35":1,"41":1,"54":2,"135":1,"211":2,"212":2,"213":4,"214":4,"299":1,"317":2,"427":2,"428":2,"429":4,"430":4}}],["ui",{"0":{"140":1,"142":1,"152":1},"1":{"141":1,"142":1,"143":2,"144":2},"2":{"116":1,"118":2,"140":6,"141":1,"142":2,"143":1,"144":1,"150":1,"152":1,"153":1,"157":6}}],["umd",{"2":{"100":3,"399":3}}],["ultimate",{"2":{"64":1,"221":1,"400":1}}],["ux",{"2":{"56":1,"372":1}}],["unusable",{"2":{"343":1,"346":1,"349":1}}],["unsanitized",{"2":{"343":1}}],["unsafe",{"2":{"267":1}}],["unsupported",{"2":{"49":1}}],["unreal",{"0":{"158":1,"164":1,"169":1},"2":{"145":3,"146":1,"154":1,"158":1,"164":5,"169":1,"176":1}}],["unparalleled",{"2":{"133":1}}],["unpkg",{"2":{"100":1,"399":1}}],["unfamiliar",{"2":{"126":1,"127":1,"138":1,"139":1}}],["unexpected",{"2":{"117":1}}],["unnoticed",{"2":{"116":1}}],["unauthorized",{"2":{"108":1,"410":1}}],["unlimited",{"2":{"349":2}}],["unless",{"2":{"112":1,"135":1,"281":1}}],["unleash",{"2":{"65":1,"222":1,"401":1}}],["unlock",{"2":{"64":1,"107":2,"221":1,"400":1,"409":2}}],["until",{"2":{"61":1,"157":1,"265":1,"377":1,"387":1}}],["uniswap",{"2":{"195":1}}],["universal",{"2":{"65":1,"97":1,"222":1,"396":1,"401":1}}],["unityactivity",{"2":{"124":2}}],["unitythemeselector",{"2":{"124":2}}],["unityplayer",{"2":{"124":2}}],["unityplayeractivity",{"2":{"124":2}}],["unitypackage",{"2":{"116":2}}],["unity3d",{"2":{"124":3}}],["unity",{"0":{"169":1},"2":{"59":3,"99":3,"111":3,"112":1,"114":2,"115":3,"116":3,"124":4,"126":1,"127":1,"137":2,"138":1,"139":3,"142":1,"143":2,"169":1,"176":1,"267":3,"375":3}}],["unique",{"2":{"32":1,"92":1,"117":1,"308":1,"336":1}}],["unknown",{"2":{"49":1,"343":1}}],["underwent",{"2":{"362":1}}],["underlying",{"2":{"329":1,"332":1,"334":1}}],["understand",{"2":{"268":1,"301":1}}],["understands",{"2":{"144":1}}],["understanding",{"0":{"301":1},"2":{"135":1}}],["under",{"2":{"46":1,"115":1,"117":1,"118":3,"124":1,"129":1,"140":2,"148":2,"164":2,"316":1,"317":1}}],["undefined",{"2":{"35":1,"41":1,"49":5,"84":1,"381":1}}],["unbuffered",{"2":{"42":1}}],["unwanted",{"2":{"35":1}}],["unverified",{"2":{"33":1}}],["usual",{"2":{"380":2}}],["usually",{"2":{"135":1,"317":1}}],["us",{"2":{"135":1,"144":1,"199":1,"368":1,"416":1}}],["using",{"0":{"26":1,"36":1,"43":1,"53":1,"93":1,"203":1,"224":1,"231":1,"232":1,"234":1,"241":1,"242":1,"244":1,"251":1,"260":1,"265":1,"266":1,"419":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"261":1,"262":1,"420":1,"421":1,"422":1,"423":1,"424":1,"425":1},"2":{"33":1,"35":1,"42":1,"46":2,"49":1,"52":2,"60":1,"61":1,"71":1,"72":1,"74":1,"88":1,"91":1,"93":1,"98":1,"103":1,"106":1,"107":1,"110":1,"112":1,"115":1,"116":1,"118":1,"129":2,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"140":2,"153":1,"157":1,"159":2,"160":1,"167":3,"170":1,"171":1,"172":2,"173":1,"195":2,"198":1,"199":1,"201":1,"207":1,"220":2,"224":1,"225":1,"230":1,"231":1,"232":3,"233":1,"234":1,"240":1,"241":3,"242":1,"244":1,"260":1,"264":2,"266":4,"270":1,"278":1,"279":3,"330":1,"335":1,"337":1,"343":1,"344":1,"366":1,"369":1,"376":1,"377":1,"379":1,"380":2,"381":1,"383":1,"386":1,"391":1,"393":1,"397":1,"405":1,"408":1,"409":1,"412":1,"415":1,"416":1,"417":1,"423":1}}],["usable",{"2":{"8":1,"379":1}}],["usage",{"0":{"7":1,"226":1,"236":1,"246":1,"253":1,"261":1},"1":{"254":1,"255":1},"2":{"220":1,"366":1}}],["usdc",{"2":{"8":1,"35":4,"190":1,"330":1}}],["useismounted",{"2":{"265":2}}],["useeffect",{"2":{"265":1,"381":3}}],["useweb3react",{"2":{"255":2}}],["usequencewallet",{"0":{"159":1},"2":{"157":6,"159":4}}],["usecheckoutmodal",{"2":{"87":3}}],["usefulness",{"2":{"133":1}}],["useful",{"2":{"76":1,"115":2,"128":1,"139":1,"192":1,"202":1,"418":1}}],["useopenwalletmodal",{"2":{"72":3}}],["useopenconnectmodal",{"2":{"71":3}}],["useaccount",{"2":{"71":3}}],["userid",{"2":{"382":2}}],["useraddress",{"2":{"204":1,"207":1,"420":1,"423":1}}],["userwallet",{"2":{"157":1}}],["user",{"2":{"43":1,"61":1,"71":2,"106":2,"107":4,"109":2,"110":4,"119":3,"120":1,"126":1,"153":1,"172":1,"173":5,"175":1,"183":1,"186":2,"187":3,"188":1,"195":9,"197":1,"198":6,"199":1,"202":4,"206":1,"208":1,"366":1,"368":3,"369":4,"370":2,"377":1,"378":3,"380":6,"381":1,"382":1,"386":2,"388":2,"389":1,"408":2,"409":4,"411":2,"412":4,"414":1,"415":6,"416":1,"418":4,"422":1,"424":1}}],["users",{"0":{"196":1,"413":1},"1":{"197":1,"198":1,"199":1,"414":1,"415":1,"416":1},"2":{"8":2,"34":1,"64":1,"65":2,"95":1,"103":1,"105":3,"106":1,"108":1,"109":1,"110":3,"116":1,"120":1,"140":1,"152":1,"172":8,"173":3,"185":1,"189":2,"190":1,"192":3,"198":2,"201":1,"202":2,"221":1,"222":2,"261":1,"267":1,"280":1,"324":3,"370":1,"384":1,"385":1,"386":1,"400":1,"401":2,"405":1,"407":3,"408":1,"410":1,"411":1,"412":3,"415":2,"417":1,"418":2}}],["usedisconnect",{"2":{"71":1}}],["used",{"0":{"264":1},"2":{"35":1,"41":1,"44":1,"61":1,"76":1,"78":1,"110":1,"115":1,"130":1,"132":1,"134":1,"149":1,"152":1,"178":1,"224":1,"251":1,"260":1,"265":1,"267":1,"271":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"290":1,"291":1,"293":1,"294":1,"295":1,"296":1,"345":1,"346":1,"377":1,"380":2,"381":5,"412":1}}],["usestate",{"2":{"381":4}}],["usesessionhash",{"2":{"381":5}}],["uses",{"2":{"30":1,"110":1,"117":1,"120":1,"232":3,"241":3,"332":1,"412":1}}],["use",{"0":{"49":1,"265":1,"266":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"4":1,"6":4,"30":1,"34":1,"35":3,"42":1,"43":1,"44":1,"46":1,"49":1,"73":1,"87":1,"92":2,"93":1,"107":1,"116":1,"118":2,"124":1,"127":1,"128":1,"129":2,"130":1,"131":1,"132":1,"133":1,"134":1,"135":2,"136":1,"138":1,"139":3,"140":1,"143":1,"148":1,"149":1,"150":2,"154":2,"157":1,"158":1,"159":2,"160":1,"162":1,"166":1,"170":1,"173":2,"183":1,"191":1,"198":1,"208":1,"216":1,"219":1,"220":1,"231":1,"232":1,"241":1,"242":1,"261":1,"265":1,"266":4,"271":1,"278":1,"279":2,"280":1,"298":1,"300":5,"302":4,"303":1,"304":2,"305":1,"310":1,"317":1,"327":1,"345":1,"381":1,"387":1,"390":1,"409":1,"415":1,"424":1,"432":1,"435":1}}],["uri",{"0":{"316":1}}],["uris",{"2":{"6":1}}],["url",{"0":{"311":1},"2":{"6":2,"45":2,"53":1,"54":2,"79":1,"112":1,"114":2,"117":1,"120":2,"121":2,"122":2,"124":3,"159":1,"171":2,"185":1,"279":2,"311":1,"315":1,"316":2,"323":1}}],["upgradeability",{"2":{"330":1}}],["upgraded",{"2":{"329":1}}],["upon",{"2":{"209":1,"229":1,"249":1,"425":1}}],["uproject",{"2":{"150":1}}],["upi",{"2":{"105":1,"324":1,"407":1}}],["updating",{"0":{"319":1},"2":{"50":1,"115":1,"116":1,"333":1,"337":1,"349":1}}],["updateimagehash",{"0":{"342":1},"1":{"343":1,"345":1,"346":1,"347":1,"348":1,"349":1},"2":{"342":1,"344":2,"349":1,"350":2}}],["updateimplementation",{"2":{"334":3,"344":1,"349":1}}],["updateconfiguration",{"0":{"334":1},"1":{"335":1}}],["updated",{"2":{"195":1,"341":1,"344":1,"349":3,"350":2,"351":1,"352":2}}],["updates",{"0":{"350":1},"2":{"140":1,"342":1}}],["update",{"0":{"46":1,"47":1,"315":1,"332":1,"344":1},"1":{"47":1,"48":1,"333":1,"334":1,"335":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":2,"346":2,"347":2,"348":2,"349":2,"350":2,"351":2,"352":2},"2":{"5":1,"6":1,"43":1,"46":2,"47":1,"115":1,"150":1,"309":1,"319":1,"334":1,"344":3,"346":1,"381":1}}],["uptime",{"2":{"30":1}}],["uploaded",{"2":{"311":1,"317":1}}],["uploading",{"2":{"13":1}}],["upload",{"0":{"310":1},"2":{"6":6,"309":1,"310":2}}],["up",{"0":{"69":1,"70":1,"309":1,"312":1,"379":1,"380":1},"1":{"380":1,"381":1},"2":{"5":1,"30":1,"33":1,"112":1,"120":1,"124":1,"157":1,"158":1,"161":1,"164":1,"165":1,"249":1,"312":1,"317":1,"379":1,"381":1}}],["ecdsa",{"2":{"326":1}}],["ecosystem",{"2":{"94":1}}],["equal",{"2":{"276":1,"277":1}}],["equally",{"2":{"214":1,"430":1}}],["equivalent",{"2":{"62":1,"217":1,"433":1}}],["ephemeral",{"2":{"201":1,"202":1,"205":1,"417":1,"418":1,"421":1}}],["eip1271",{"2":{"199":1,"219":1,"416":1,"435":1}}],["eip",{"2":{"199":1,"343":1,"416":1}}],["eip712",{"2":{"179":1,"198":4,"415":4}}],["either",{"2":{"46":1,"53":1,"93":1,"106":1,"126":1,"135":1,"136":1,"154":1,"157":1,"159":1,"214":1,"276":1,"277":1,"333":1,"369":1,"391":1,"392":1,"408":1,"430":1}}],["eye",{"2":{"160":1}}],["element",{"2":{"121":1,"122":1,"381":2}}],["elements",{"2":{"118":1}}],["elsewhere",{"2":{"264":1}}],["else",{"2":{"49":2,"152":1,"207":1,"209":1,"368":1,"394":1,"423":1,"425":1}}],["estimate",{"2":{"288":1}}],["estimategas",{"0":{"288":1},"2":{"288":1}}],["established",{"2":{"386":1}}],["establish",{"2":{"119":1}}],["establishing",{"2":{"118":1}}],["esocialsignintype",{"2":{"152":1}}],["essentially",{"2":{"137":1,"139":1,"316":1}}],["essentials",{"2":{"114":1,"116":1}}],["edit",{"2":{"116":1,"121":1,"122":1,"124":1,"143":1}}],["editor",{"2":{"114":1,"120":1}}],["efforts",{"2":{"140":1}}],["effortlessly",{"2":{"64":1,"65":1,"221":1,"222":1,"400":1,"401":1}}],["effectively",{"2":{"108":1,"410":1}}],["emitted",{"2":{"393":1}}],["empower",{"2":{"116":1}}],["emailauth",{"2":{"153":1}}],["emailcode",{"2":{"152":1,"153":1}}],["emailin",{"2":{"152":1,"153":1}}],["emaillogin",{"2":{"152":1,"153":1}}],["emailed",{"2":{"119":1}}],["email",{"0":{"119":1,"153":1,"380":1,"385":1},"2":{"81":1,"107":2,"110":2,"119":1,"126":1,"152":1,"153":3,"183":1,"187":3,"188":1,"368":1,"369":1,"379":1,"380":13,"385":1,"386":1,"387":2,"388":1,"409":2,"412":2}}],["embedded",{"0":{"19":1,"25":1,"70":1,"72":1,"366":1},"1":{"367":1,"368":1,"369":1,"370":1},"2":{"56":1,"57":1,"59":2,"60":3,"61":1,"65":2,"67":1,"68":1,"70":1,"72":1,"84":1,"99":2,"111":2,"118":2,"222":2,"308":1,"366":2,"367":1,"372":1,"373":1,"375":2,"376":3,"377":1,"378":1,"380":1,"384":1,"394":1,"401":2}}],["ealiest",{"2":{"282":1,"285":1,"287":1,"289":1,"291":1}}],["earliest",{"2":{"281":2}}],["earlier",{"2":{"115":1,"316":1}}],["each",{"2":{"42":1,"106":2,"136":2,"152":1,"158":1,"164":1,"202":1,"276":1,"277":1,"308":1,"309":3,"366":2,"367":1,"408":2,"418":1}}],["easier",{"2":{"144":1}}],["easily",{"2":{"8":1,"30":2,"85":1,"116":1,"129":2,"131":1,"133":1,"198":1,"219":1,"260":1,"270":1,"271":1,"307":1,"415":1,"435":1}}],["easy",{"2":{"4":1,"30":2,"118":1,"136":1,"160":1,"214":1,"327":1,"430":1}}],["err",{"2":{"49":7,"54":2,"168":1,"199":2,"416":2}}],["errors",{"2":{"157":1,"264":1}}],["error",{"0":{"264":1},"2":{"35":2,"46":1,"135":1,"152":1,"160":2,"164":1,"171":1,"381":6,"394":3}}],["erc1271",{"2":{"358":1}}],["erc1155data",{"2":{"214":2,"430":2}}],["erc1155contractaddress",{"2":{"213":2,"214":1,"429":2,"430":1}}],["erc1155interface",{"2":{"213":5,"214":2,"429":5,"430":2}}],["erc1155tokenaddress",{"2":{"133":1,"136":1,"213":1,"429":1}}],["erc1155s",{"2":{"115":1}}],["erc1155",{"0":{"46":1,"134":1},"1":{"47":1,"48":1},"2":{"6":1,"30":3,"32":1,"33":1,"43":1,"49":1,"50":1,"133":5,"134":9,"304":1,"305":1}}],["erc21",{"2":{"132":1}}],["erc20contract",{"2":{"300":6,"302":4}}],["erc20data",{"2":{"214":2,"430":2}}],["erc20tokenaddress",{"2":{"129":1,"136":2}}],["erc20interface",{"2":{"42":2,"211":5,"214":2,"427":5,"430":2}}],["erc20",{"0":{"130":1},"2":{"30":3,"32":2,"33":1,"129":5,"130":9,"135":1,"136":1,"299":1,"300":2,"302":2,"304":8,"305":1,"330":1}}],["erc",{"0":{"211":1,"212":1,"213":1,"356":1,"357":1,"427":1,"428":1,"429":1},"2":{"35":1,"211":3,"212":3,"213":3,"313":1,"315":1,"355":1,"356":1,"357":1,"427":3,"428":3,"429":3}}],["erc721data",{"2":{"214":2,"430":2}}],["erc721contractaddress",{"2":{"212":2,"214":1,"428":2,"430":1}}],["erc721tokenaddress",{"2":{"35":1,"41":1,"131":1,"136":1,"212":1,"428":1}}],["erc721interface",{"2":{"35":2,"41":2,"212":5,"214":2,"428":5,"430":2}}],["erc721",{"0":{"132":1},"2":{"6":1,"30":3,"33":1,"49":1,"50":1,"131":3,"132":8,"304":1,"305":1}}],["eoawallet",{"2":{"270":2}}],["eoas",{"2":{"95":1,"325":1,"326":1,"329":1}}],["eoa",{"0":{"49":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"35":7,"41":2,"43":1,"46":5,"49":1,"50":1,"54":1,"63":1,"218":1,"270":1,"271":1,"434":1}}],["evm",{"2":{"30":1,"128":1,"129":1,"135":2,"166":1,"173":1,"267":2,"270":1,"301":1,"366":1}}],["ever",{"2":{"157":1,"299":1}}],["everywhere",{"2":{"172":1}}],["every",{"2":{"30":2,"201":1,"332":1,"336":1,"417":1}}],["everything",{"2":{"6":1,"33":1,"267":1}}],["event",{"2":{"126":1,"138":1,"149":1,"164":1,"173":1}}],["events",{"2":{"30":1,"126":1,"127":2,"138":1,"139":3,"390":1}}],["even",{"2":{"8":1,"30":1,"106":1,"110":1,"115":1,"214":1,"301":1,"335":1,"343":1,"408":1,"412":1,"430":1}}],["enclave",{"2":{"368":1}}],["encrypted",{"2":{"368":1}}],["encrypt",{"2":{"149":1}}],["encryption",{"2":{"149":1}}],["encourage",{"2":{"142":1,"305":1}}],["encodetypeddatadigest",{"2":{"357":2}}],["encode",{"2":{"135":1,"211":2,"212":2,"213":2,"336":1,"357":1,"358":1,"427":2,"428":2,"429":2}}],["encoded",{"2":{"135":1,"356":2,"357":1,"358":1}}],["encodefunctiondata",{"2":{"35":1,"41":1,"42":2,"54":1,"211":3,"212":3,"213":3,"214":3,"344":2,"350":1,"427":3,"428":3,"429":3,"430":3}}],["encoding",{"0":{"354":1,"355":1},"1":{"356":1,"357":1,"358":1},"2":{"135":2,"299":1}}],["encoding=",{"2":{"124":2}}],["entirely",{"2":{"142":1}}],["entire",{"2":{"135":1,"266":1,"299":1,"310":1}}],["entered",{"2":{"119":1}}],["enter",{"2":{"44":1,"45":1,"114":1,"119":1,"121":1,"122":1,"317":1}}],["enable",{"2":{"120":1,"124":1,"150":1}}],["enables",{"2":{"85":1,"170":1,"366":1}}],["enabling",{"2":{"65":1,"222":1,"266":1,"368":1,"401":1}}],["enjoy",{"2":{"65":1,"94":1,"222":1,"401":1}}],["env",{"2":{"49":20,"54":11,"61":2,"377":2,"379":2,"380":2,"381":2,"382":2,"383":2,"393":2,"394":2}}],["environment",{"0":{"44":1,"50":1},"1":{"45":1},"2":{"43":1,"44":1,"49":5,"50":1,"51":1}}],["enforce",{"2":{"35":3,"369":1}}],["ensures",{"2":{"41":1}}],["ensure",{"2":{"8":1,"110":2,"114":1,"159":2,"164":1,"171":1,"198":1,"343":1,"412":2,"415":1}}],["endingblocknumber",{"2":{"285":1}}],["endpoint",{"2":{"6":2,"52":1,"166":2,"170":1,"171":2,"319":2}}],["endpointssequence",{"2":{"166":1}}],["endpoints",{"0":{"31":1},"2":{"5":1,"8":1,"166":3,"168":1,"170":1}}],["end",{"2":{"6":2}}],["ethtransaction",{"2":{"274":1,"275":1,"276":2,"277":2,"298":1,"300":4,"304":2}}],["ethwallet",{"2":{"270":4,"271":1,"276":2,"277":2}}],["ethauth",{"2":{"178":1,"179":1,"180":1,"198":1,"199":7,"415":1,"416":7}}],["ethauthproofstring",{"2":{"49":2}}],["ethauthproof",{"0":{"49":1,"53":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"43":1,"53":1}}],["eth",{"2":{"128":3,"173":1,"298":1}}],["ethkit",{"0":{"63":1,"218":1,"434":1},"2":{"63":2,"218":2,"434":2}}],["ether",{"2":{"357":1}}],["etherscan",{"2":{"135":1}}],["ethers",{"0":{"193":1,"348":1,"349":1},"2":{"35":4,"41":2,"42":6,"46":7,"49":2,"54":8,"63":1,"68":3,"99":4,"100":2,"167":3,"171":7,"172":1,"199":3,"204":2,"205":3,"209":1,"211":2,"212":2,"213":2,"214":3,"218":1,"225":2,"231":3,"235":2,"242":3,"245":2,"252":1,"336":4,"344":4,"350":2,"398":4,"399":2,"416":3,"420":2,"421":3,"425":1,"427":2,"428":2,"429":2,"430":3,"434":1}}],["ethereum",{"0":{"194":1,"356":1},"2":{"5":1,"8":2,"30":4,"35":1,"41":1,"63":1,"95":1,"103":1,"166":1,"172":3,"173":1,"218":1,"219":1,"220":1,"267":1,"280":1,"325":1,"326":1,"356":1,"366":1,"405":1,"434":1,"435":1}}],["etc",{"2":{"8":1,"229":1,"230":1,"240":1,"308":1,"368":1,"369":1,"379":1}}],["e",{"2":{"6":1,"35":1,"41":1,"89":1,"95":1,"124":1,"130":1,"132":1,"134":1,"140":1,"202":1,"230":1,"240":1,"299":1,"330":1,"368":1,"418":1}}],["examine",{"2":{"135":1}}],["examples",{"0":{"233":1,"243":1,"328":1,"331":1},"2":{"166":1,"167":1,"168":1,"173":1}}],["example",{"0":{"73":1,"250":1,"259":1,"262":1},"2":{"4":1,"6":3,"32":1,"33":1,"36":1,"41":2,"42":1,"54":1,"73":1,"89":1,"90":1,"92":2,"107":1,"127":1,"128":2,"130":1,"132":1,"134":1,"135":1,"136":1,"138":1,"150":1,"166":1,"173":1,"175":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"195":1,"198":1,"199":1,"210":1,"219":1,"220":1,"224":1,"232":2,"233":1,"234":1,"241":2,"244":1,"250":1,"260":1,"262":1,"265":3,"266":4,"300":3,"301":1,"302":3,"304":3,"369":1,"380":1,"409":1,"415":1,"416":1,"426":1,"435":1}}],["exists",{"2":{"150":1}}],["exist",{"2":{"124":2,"379":1}}],["existing",{"0":{"99":1},"1":{"100":1},"2":{"8":1,"46":1,"92":1,"120":1}}],["excellent",{"2":{"172":1}}],["exception",{"2":{"280":1,"301":1}}],["exceptions",{"2":{"267":3}}],["except",{"2":{"120":1,"380":1}}],["exclude",{"2":{"135":1}}],["excluding",{"2":{"112":1}}],["extra",{"2":{"219":2,"267":1,"435":2}}],["extremely",{"2":{"118":1,"136":1}}],["external",{"2":{"334":1,"342":1,"368":1}}],["externally",{"0":{"326":1},"1":{"327":1,"328":1},"2":{"95":1,"325":1,"326":1,"347":1}}],["extend",{"2":{"116":1,"345":1}}],["extensions",{"2":{"173":1}}],["extension",{"0":{"104":1,"194":1,"406":1},"2":{"104":1,"172":2,"193":1,"194":1,"406":1}}],["executing",{"2":{"349":2,"392":1}}],["executioncontext",{"2":{"49":2}}],["executed",{"2":{"34":1,"42":2,"211":1,"212":1,"213":1,"393":1,"394":2,"427":1,"428":1,"429":1}}],["expires",{"2":{"394":1}}],["expiresat",{"2":{"382":2}}],["expiry",{"0":{"178":1},"2":{"178":2}}],["explicitly",{"2":{"266":1}}],["explanation",{"2":{"232":2,"241":2}}],["explain",{"2":{"162":1}}],["explorer",{"2":{"135":1}}],["explore",{"2":{"65":1,"222":1,"401":1}}],["expose",{"2":{"137":1}}],["exposes",{"2":{"127":1}}],["exported=",{"2":{"124":1}}],["export",{"2":{"49":2,"92":1,"254":1,"265":1,"266":1,"361":1,"381":3}}],["expanding",{"2":{"94":1}}],["expand",{"2":{"46":1,"121":1,"122":1,"164":1,"316":1,"317":1}}],["experimental",{"2":{"264":1,"266":1}}],["experiment",{"2":{"143":1}}],["experience",{"2":{"43":1,"64":1,"65":1,"74":1,"110":1,"172":1,"198":1,"202":1,"221":1,"222":1,"267":1,"400":1,"401":1,"412":1,"415":1,"418":1}}],["experiences",{"2":{"2":1,"368":1}}],["expects",{"2":{"301":1}}],["expect",{"2":{"139":1,"140":1}}],["expected",{"2":{"35":1,"278":1}}],["gnosis",{"2":{"331":1}}],["guarantee",{"2":{"368":1,"386":1}}],["guarantees",{"2":{"366":1}}],["guard",{"0":{"109":1,"369":1,"411":1},"2":{"107":2,"109":2,"110":1,"369":4,"370":2,"393":1,"409":2,"411":2,"412":1}}],["guestmodule",{"0":{"360":1},"2":{"361":1}}],["guess",{"2":{"308":1}}],["gui",{"2":{"153":2,"157":3}}],["guides",{"2":{"137":1}}],["guide",{"2":{"43":1,"44":1,"46":1,"47":1,"48":1,"66":1,"67":1,"91":1,"92":1,"162":1,"223":1,"307":1,"402":1}}],["give",{"0":{"171":1},"2":{"143":2,"159":1,"394":1}}],["given",{"2":{"117":1,"148":1,"274":2,"275":2,"276":2,"277":2,"278":1,"281":2,"287":1,"288":1,"291":2,"292":1,"336":1,"340":1,"344":1,"346":1}}],["gives",{"2":{"95":1,"150":1}}],["git",{"2":{"44":1,"114":3}}],["github",{"2":{"33":1,"62":1,"73":1,"114":1,"168":2,"217":1,"224":1,"234":1,"244":1,"260":1,"262":1,"265":1,"266":2,"433":1}}],["got",{"2":{"316":1}}],["goerli",{"2":{"230":1,"240":1}}],["goes",{"2":{"135":1}}],["good",{"2":{"92":1}}],["googlelogin",{"2":{"381":3}}],["googleoauthprovider",{"2":{"381":3}}],["googleclientid",{"2":{"162":1}}],["google",{"0":{"162":1,"381":1},"2":{"65":1,"82":1,"93":2,"110":1,"120":1,"162":1,"173":1,"186":2,"188":1,"222":1,"369":1,"379":1,"381":8,"382":4,"386":1,"401":1,"412":1}}],["golang",{"2":{"62":1,"217":1,"433":1}}],["go",{"0":{"62":1,"168":1,"217":1,"433":1},"2":{"62":6,"63":2,"116":1,"150":1,"158":1,"166":2,"168":3,"199":3,"217":6,"218":2,"219":1,"299":1,"384":1,"416":3,"433":6,"434":2,"435":1}}],["gt",{"2":{"35":6,"41":2,"45":2,"46":2,"49":7,"52":2,"53":4,"54":5,"69":9,"70":21,"71":6,"72":4,"74":3,"86":10,"87":4,"89":1,"92":2,"93":8,"99":1,"100":4,"112":3,"114":2,"116":1,"117":4,"118":1,"121":2,"122":2,"124":42,"140":1,"143":3,"148":1,"152":10,"157":1,"159":1,"160":2,"164":3,"171":2,"173":1,"199":2,"225":1,"255":2,"265":4,"266":6,"285":2,"301":6,"302":5,"310":1,"319":3,"358":1,"381":16,"389":1,"390":1,"391":1,"398":1,"399":4,"416":2}}],["g",{"2":{"35":1,"89":1,"130":1,"132":1,"134":1,"140":1,"202":1,"230":1,"240":1,"299":1,"330":1,"368":1,"418":1}}],["genericfailure",{"2":{"157":1}}],["general",{"2":{"116":1,"127":1,"139":1,"164":1,"267":2}}],["generated",{"2":{"44":1,"45":1,"46":2,"53":1,"107":2,"110":2,"202":1,"270":1,"308":1,"380":2,"392":1,"409":2,"412":2,"418":1}}],["generate",{"0":{"205":1,"421":1},"2":{"42":2,"46":2,"53":2,"110":1,"162":2,"270":1,"412":1}}],["generating",{"2":{"13":1,"46":1}}],["getelementbyid",{"2":{"381":1}}],["getimagehash",{"2":{"351":1}}],["getfunction",{"2":{"344":2,"350":1}}],["getchainid",{"2":{"207":1,"423":1}}],["getcomponentinchildren",{"2":{"118":1}}],["getcollection",{"2":{"6":1}}],["getprovider",{"2":{"207":1,"423":1}}],["getaddress",{"0":{"273":1},"2":{"197":1,"204":1,"205":1,"212":1,"213":1,"273":1,"281":2,"291":2,"300":2,"304":1,"414":1,"420":1,"421":1,"428":1,"429":1}}],["getwallet",{"2":{"173":5,"197":1,"198":1,"414":1,"415":1}}],["getblock",{"2":{"171":1}}],["getblocknumber",{"2":{"49":3,"54":3}}],["getlatestblock",{"2":{"171":2}}],["getloginurl",{"2":{"152":1}}],["gettoporders",{"2":{"323":1}}],["gettokenbalances",{"2":{"167":1,"168":1}}],["getting",{"0":{"32":1,"58":1,"67":1,"374":1},"1":{"59":1,"60":1,"61":1,"68":1,"375":1,"376":1,"377":1},"2":{"66":1,"223":1,"402":1}}],["getvalid",{"2":{"159":1}}],["getsessionhash",{"2":{"379":1,"380":1,"381":2}}],["getstorageat",{"2":{"336":1}}],["getstoredcredentials",{"2":{"159":2}}],["getstoredkey",{"2":{"149":1}}],["getsigner",{"2":{"35":2,"41":1,"42":2,"46":1,"54":1,"204":1,"210":1,"211":2,"212":2,"213":2,"214":2,"420":1,"426":1,"427":2,"428":2,"429":2,"430":2}}],["getkitconnectwallets",{"2":{"93":2}}],["getdefaultconnectors",{"2":{"69":2,"70":2,"93":1}}],["get",{"0":{"311":1},"2":{"2":1,"6":1,"30":1,"33":1,"35":2,"41":2,"43":1,"49":4,"51":1,"54":2,"57":1,"68":1,"98":1,"102":1,"103":1,"115":1,"135":1,"145":2,"154":1,"159":1,"164":1,"165":1,"168":1,"171":1,"197":1,"278":1,"281":4,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"289":1,"290":1,"291":1,"293":1,"294":1,"295":1,"296":1,"319":1,"322":1,"373":1,"379":2,"397":1,"404":1,"405":1,"414":1}}],["great",{"2":{"126":1,"127":1,"138":1,"139":1}}],["grantrole",{"2":{"46":1}}],["grab",{"2":{"5":1,"30":1,"165":1}}],["groupname",{"2":{"236":1}}],["groups",{"0":{"200":1}}],["group",{"2":{"8":1}}],["gain",{"2":{"370":2}}],["gather",{"2":{"308":1,"310":1}}],["gateway",{"0":{"170":1},"1":{"171":1},"2":{"170":1,"279":1}}],["gate",{"2":{"143":1}}],["gameobject",{"2":{"118":1,"143":1}}],["game",{"0":{"9":1,"11":1,"17":1,"18":1,"23":1,"24":1},"2":{"30":1,"32":1,"43":1,"115":5,"145":2,"166":2,"206":1,"220":1,"313":1,"422":1}}],["games",{"2":{"2":1,"30":1,"111":1,"133":1,"145":1,"165":1}}],["gasused",{"2":{"394":1}}],["gaslimit",{"0":{"349":1},"2":{"298":1,"300":1,"344":2,"349":2,"350":1,"394":1}}],["gaslimitestimator",{"2":{"298":1}}],["gasless",{"0":{"43":1},"1":{"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1}}],["gastipcap",{"2":{"294":1}}],["gasprice",{"2":{"293":1,"298":1,"300":1}}],["gas",{"0":{"36":1,"39":1,"40":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1},"2":{"8":7,"13":1,"35":3,"41":2,"43":1,"128":3,"136":1,"281":1,"288":2,"289":1,"293":1,"294":1,"298":1,"349":1}}],["dropsession",{"2":{"383":1}}],["drawer",{"2":{"150":1}}],["drag",{"2":{"116":1,"118":1,"164":1}}],["due",{"2":{"143":1,"164":1,"251":1,"265":1,"386":1}}],["during",{"2":{"117":1,"148":1,"164":1,"337":1}}],["d",{"2":{"52":1,"53":1,"135":1,"166":1,"167":1,"168":1,"199":1,"219":2,"220":1,"394":1,"416":1,"435":2}}],["ddos",{"0":{"49":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"43":1}}],["diligence",{"0":{"364":1},"2":{"362":1}}],["difficult",{"2":{"267":1}}],["difficulty",{"2":{"43":1}}],["differs",{"2":{"232":1,"241":1,"332":1}}],["difference",{"2":{"212":1,"213":1,"428":1,"429":1}}],["different",{"2":{"158":1,"173":1,"211":1,"212":1,"213":1,"220":1,"325":1,"367":1,"369":1,"427":1,"428":1,"429":1}}],["differing",{"2":{"158":1}}],["digit",{"2":{"119":1}}],["dive",{"2":{"66":1,"223":1,"402":1}}],["discuss",{"2":{"386":1}}],["discouraged",{"2":{"264":1}}],["disconnectweb3react",{"2":{"255":1}}],["disconnect",{"2":{"181":1,"195":1}}],["discord",{"2":{"65":1,"120":1,"186":1,"199":1,"222":1,"401":1,"416":1}}],["disk",{"2":{"152":1,"158":1}}],["disabled",{"2":{"118":1}}],["dist",{"2":{"100":1,"399":1}}],["distribution",{"0":{"100":1,"399":1},"2":{"100":1,"399":1}}],["distinct",{"2":{"42":2,"384":1}}],["displayedassets",{"0":{"84":1}}],["displayed",{"2":{"82":1,"83":1,"84":4,"105":1,"157":1,"195":1,"258":1,"324":1,"407":1}}],["displaying",{"2":{"67":1}}],["dispatched",{"2":{"42":1}}],["dispatch",{"2":{"8":1,"34":1,"35":2,"42":1,"210":1,"426":1}}],["dispatching",{"2":{"8":1}}],["directive",{"2":{"266":4}}],["direct",{"2":{"174":1,"344":1,"369":1}}],["directory",{"0":{"265":1,"266":1},"2":{"33":2,"44":1,"49":1,"150":1,"264":2,"266":2}}],["directly",{"2":{"30":1,"99":1,"105":1,"127":1,"138":1,"139":1,"166":1,"169":1,"202":1,"300":1,"324":1,"352":1,"369":1,"380":1,"381":1,"398":1,"407":1,"418":1}}],["damage",{"2":{"370":1}}],["dangerous",{"2":{"334":1,"349":1}}],["dark",{"2":{"76":1,"173":1}}],["dashboard",{"2":{"44":1,"369":1}}],["datatypes",{"2":{"301":2}}],["data2",{"2":{"211":2,"212":2,"213":2,"427":2,"428":2,"429":2}}],["data1",{"2":{"211":2,"212":2,"213":2,"427":2,"428":2,"429":2}}],["database",{"2":{"127":2}}],["data",{"0":{"301":1,"356":1,"357":1},"2":{"30":2,"33":2,"35":2,"41":2,"42":2,"54":3,"124":4,"128":1,"152":1,"165":1,"211":4,"212":4,"213":6,"214":4,"300":1,"302":1,"317":1,"323":1,"344":2,"350":1,"356":1,"357":2,"358":1,"368":1,"393":3,"394":2,"427":4,"428":4,"429":6,"430":4}}],["dapps",{"2":{"8":1,"103":1,"174":1,"195":1,"220":1,"233":1,"405":1}}],["dapp",{"0":{"37":1,"38":1,"53":1,"173":1,"193":1,"194":1},"2":{"8":1,"30":1,"32":1,"46":1,"52":1,"53":1,"99":1,"103":1,"166":1,"172":3,"173":9,"175":1,"177":1,"179":1,"185":1,"193":2,"195":6,"198":2,"199":1,"219":1,"220":3,"224":2,"234":2,"244":2,"260":2,"262":1,"266":1,"398":1,"405":1,"415":2,"416":1,"435":1}}],["daicontractaddress",{"2":{"211":3,"214":1,"427":3,"430":1}}],["dai",{"2":{"8":1,"35":1,"389":2}}],["debugging",{"2":{"267":1}}],["debit",{"2":{"105":1,"324":1,"407":1}}],["deactivate",{"2":{"255":1}}],["deactivated",{"2":{"255":1}}],["deactivation",{"0":{"255":1}}],["deal",{"2":{"135":1}}],["derive",{"2":{"205":1,"421":1}}],["demand",{"0":{"360":1},"2":{"172":2,"193":1,"366":1}}],["demonstrated",{"2":{"265":1}}],["demonstrates",{"2":{"199":1,"416":1}}],["demonstrating",{"2":{"6":1}}],["demo",{"0":{"56":1,"97":1,"321":1,"372":1,"396":1},"2":{"56":1,"65":1,"69":1,"70":1,"97":1,"115":3,"143":2,"173":2,"193":1,"220":1,"222":1,"224":1,"226":1,"233":4,"234":1,"236":1,"243":3,"244":1,"250":1,"254":1,"259":1,"260":1,"262":2,"266":1,"321":1,"372":1,"381":2,"396":1,"401":1}}],["desc",{"2":{"323":1}}],["description",{"2":{"229":1,"239":1,"308":2,"309":2}}],["described",{"2":{"174":1,"265":1,"266":1}}],["destinations",{"2":{"164":1}}],["desktop",{"0":{"154":1},"2":{"154":2,"157":1,"172":1}}],["desired",{"2":{"143":1}}],["design",{"2":{"136":1,"330":1}}],["designed",{"2":{"4":1,"33":1,"172":1}}],["denoted",{"2":{"135":1}}],["decode",{"2":{"336":2}}],["decodeproof",{"2":{"199":1,"416":1}}],["decoding",{"2":{"299":1}}],["declare",{"2":{"266":1}}],["declared",{"2":{"266":1,"349":1}}],["declaration",{"2":{"266":1}}],["decline",{"2":{"44":1}}],["decentralized",{"2":{"202":1,"418":1}}],["decrypt",{"2":{"149":1}}],["decimals",{"2":{"128":3,"129":4}}],["decimalnormalizer",{"2":{"128":2,"129":1,"130":1,"135":2,"136":2,"298":1,"304":2}}],["deep",{"2":{"120":2,"124":3}}],["defi",{"2":{"175":1}}],["define",{"2":{"369":1,"380":1}}],["defines",{"2":{"334":1,"342":1}}],["defined",{"2":{"152":1,"230":1,"240":1,"269":1,"279":1,"304":1,"305":1,"336":1,"344":1,"345":1,"347":1}}],["definition",{"2":{"135":1}}],["defense",{"2":{"115":2,"369":1}}],["defaultabicoder",{"2":{"336":2}}],["defaultpurchaseamount",{"0":{"191":1},"2":{"191":1}}],["defaultfundingcurrency",{"0":{"190":1},"2":{"173":2,"190":1,"192":2}}],["defaulting",{"2":{"128":1}}],["defaultnetwork",{"0":{"230":1,"240":1},"2":{"93":1,"173":1,"226":1,"236":1}}],["defaulttheme",{"0":{"76":1},"2":{"76":1}}],["defaultchainid",{"2":{"69":1,"70":1}}],["defaults",{"2":{"61":1,"110":1,"143":1,"291":1,"377":1,"379":1,"380":1,"381":1,"382":1,"383":1,"393":1,"394":1,"412":1}}],["default",{"2":{"33":1,"34":1,"49":1,"110":1,"118":1,"124":3,"140":1,"157":1,"178":1,"182":1,"189":1,"190":1,"191":2,"192":2,"230":2,"239":1,"240":2,"248":1,"257":1,"261":1,"265":1,"266":1,"281":2,"304":1,"381":1,"412":1}}],["delightful",{"2":{"173":1}}],["delivery",{"2":{"8":1}}],["del",{"2":{"152":3}}],["delegatecall",{"0":{"345":1},"2":{"344":2,"345":2,"350":1}}],["delegates",{"2":{"152":2}}],["delegate",{"2":{"150":1,"152":1,"302":1}}],["delete",{"2":{"49":1,"164":3}}],["delayed",{"2":{"135":1}}],["delayedencodedata",{"2":{"135":2,"136":1}}],["delayedencode",{"0":{"135":1},"2":{"135":4,"136":1}}],["depth",{"2":{"229":1,"239":1}}],["deprecated",{"2":{"105":1,"407":1}}],["depends",{"2":{"265":1}}],["depending",{"2":{"232":1,"241":1,"315":1}}],["dependent",{"2":{"152":1}}],["dependencies",{"2":{"68":1,"99":1,"398":1}}],["dependency",{"2":{"42":1,"99":1,"398":1}}],["dependant",{"2":{"143":1}}],["depend",{"2":{"99":1,"264":1,"398":1}}],["deploycontract",{"2":{"139":4}}],["deploymentresult",{"2":{"303":2}}],["deployment",{"0":{"139":1,"360":1},"2":{"44":1,"139":1,"333":1}}],["deploying",{"0":{"303":1},"2":{"13":1,"136":1,"139":2}}],["deployedwalletcontext",{"2":{"199":1,"416":1}}],["deployedcontractaddress",{"2":{"139":1}}],["deployed",{"2":{"8":1,"36":2,"49":2,"50":1,"95":1,"299":1,"315":1,"352":2}}],["deploy",{"0":{"9":1,"11":1,"15":1,"16":1,"21":1,"22":1,"27":1,"44":1,"45":1,"46":1,"52":1,"313":1},"1":{"45":1,"47":1,"48":1},"2":{"6":2,"13":1,"43":2,"44":1,"45":1,"46":1,"51":1,"52":1,"54":1,"129":1,"131":1,"133":1,"139":2,"170":1,"303":2,"312":1,"313":1}}],["determining",{"2":{"298":1}}],["determined",{"2":{"177":1}}],["determine",{"2":{"84":1,"300":1}}],["determines",{"2":{"76":1,"77":1,"81":1,"82":1,"83":1,"389":1}}],["detect",{"2":{"71":1}}],["detects",{"2":{"30":1}}],["details",{"0":{"10":1,"12":1,"314":1},"2":{"46":1,"92":1,"195":1,"229":1,"314":1,"317":1,"369":1}}],["device",{"2":{"106":1,"107":1,"206":1,"383":1,"408":1,"409":1,"422":1}}],["devices",{"2":{"103":1,"108":1,"405":1,"410":1}}],["developing",{"2":{"267":1}}],["developed",{"2":{"172":1,"220":1}}],["developer",{"2":{"105":1,"324":1,"407":1}}],["developers",{"2":{"74":1,"85":1,"172":1}}],["development",{"2":{"44":1,"369":1}}],["dev",{"2":{"2":1,"44":2,"45":1,"52":1,"53":1,"63":1,"218":1,"323":1,"358":1,"434":1}}],["dom",{"2":{"381":1}}],["doing",{"2":{"304":1}}],["doubt",{"2":{"135":1}}],["don",{"2":{"135":1,"143":1,"144":1,"195":1,"214":1,"300":1,"378":1,"386":1,"430":1}}],["done",{"2":{"46":1,"47":1,"60":1,"107":1,"126":2,"137":1,"139":1,"153":1,"154":1,"160":1,"195":1,"376":1,"394":1,"409":1}}],["documented",{"2":{"137":1}}],["document",{"2":{"135":1,"381":1}}],["documentation",{"2":{"4":1,"5":1,"8":1,"30":1,"59":1,"69":1,"99":1,"115":2,"128":1,"129":1,"131":1,"133":1,"280":1,"281":1,"375":1}}],["docs",{"2":{"49":1,"50":1,"118":1,"124":1,"137":1,"162":1,"163":1,"167":1,"168":1,"220":1}}],["download",{"2":{"116":1}}],["down",{"2":{"44":1,"82":1,"83":1,"121":1,"122":1,"299":1}}],["downside",{"2":{"33":1}}],["do",{"0":{"265":1,"266":1},"2":{"42":1,"46":2,"53":1,"114":1,"116":2,"117":1,"126":1,"127":2,"138":1,"139":2,"144":1,"149":2,"157":1,"198":2,"199":3,"220":1,"265":1,"299":2,"309":1,"329":1,"415":2,"416":3}}],["doesn",{"2":{"8":1,"112":1,"124":2,"157":1,"332":1,"343":1,"344":1,"348":1,"349":1,"379":1}}],["does",{"0":{"264":1},"2":{"2":1,"120":1,"128":1,"369":1,"385":1}}],["blob",{"2":{"266":1}}],["blockcount",{"2":{"289":2}}],["blockchains",{"2":{"267":1}}],["blockchain",{"0":{"127":1,"137":1},"1":{"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1},"2":{"30":2,"32":1,"33":1,"65":1,"95":1,"106":1,"127":3,"137":1,"165":1,"173":1,"222":1,"366":1,"401":1,"408":1}}],["blockrange",{"0":{"285":1},"2":{"285":2}}],["blockhash",{"2":{"283":1,"296":1}}],["blockbyhash",{"0":{"283":1},"2":{"283":1}}],["blockbynumber",{"0":{"282":1},"2":{"282":1}}],["blocknative",{"2":{"244":1}}],["blocknumbers",{"2":{"285":1}}],["blocknumber",{"0":{"284":1},"2":{"43":1,"281":5,"282":2,"284":2,"285":1,"287":3,"289":2,"291":3}}],["blocking",{"2":{"173":2}}],["block",{"2":{"54":1,"135":1,"171":4,"173":1,"281":3,"282":4,"283":4,"284":1,"285":2,"296":2,"393":1}}],["blocks",{"2":{"33":1,"267":2,"285":1,"289":1}}],["blueprintcallable",{"2":{"152":5}}],["blueprint",{"2":{"150":2}}],["bp",{"2":{"150":1,"157":1}}],["bd",{"2":{"145":1}}],["brave",{"2":{"382":1}}],["branded",{"2":{"369":1}}],["brackets",{"2":{"299":1}}],["breaches",{"2":{"358":1}}],["breaking",{"2":{"111":3,"145":3,"251":1}}],["broken",{"2":{"158":1}}],["broadcast",{"2":{"152":1}}],["browsable",{"2":{"124":2}}],["browse",{"2":{"54":1,"124":1}}],["browsers",{"2":{"102":1,"173":3,"404":1}}],["browser",{"0":{"104":1,"406":1},"2":{"45":1,"103":1,"108":1,"154":1,"172":3,"173":1,"216":1,"264":1,"266":4,"405":1,"410":1,"432":1}}],["bring",{"2":{"144":1}}],["bob",{"2":{"357":1}}],["box",{"2":{"164":1}}],["bounds",{"2":{"329":1}}],["bound",{"2":{"152":1}}],["bool",{"2":{"152":1,"301":2,"338":1,"358":1}}],["boolean",{"2":{"49":1}}],["bonus",{"0":{"305":1},"2":{"140":1}}],["body",{"2":{"49":3,"160":2}}],["both",{"2":{"6":1,"107":1,"166":1,"349":2,"367":1,"368":1,"409":1}}],["bottom",{"2":{"2":1,"77":3}}],["biginteger",{"2":{"291":1,"301":1}}],["bigintegar",{"2":{"281":2,"288":1,"291":1,"293":1,"294":1,"296":1,"302":6,"304":1}}],["bignumber",{"2":{"42":2}}],["bit",{"2":{"164":1}}],["binaries",{"2":{"164":1}}],["binary",{"2":{"135":1}}],["bindufunction",{"2":{"152":1}}],["bind",{"2":{"150":1,"152":3}}],["bin",{"2":{"44":1}}],["b",{"0":{"38":1},"2":{"114":1,"117":2,"124":1,"150":1}}],["bundling",{"2":{"214":1,"430":1}}],["bundle",{"2":{"211":1,"212":1,"213":1,"346":1,"349":3,"427":1,"428":1,"429":1}}],["bunch",{"2":{"8":1,"172":1}}],["bug",{"2":{"124":1,"266":1}}],["bugfixes",{"2":{"111":1,"145":1}}],["built",{"2":{"30":1,"62":1,"63":1,"64":1,"111":1,"142":1,"145":1,"150":1,"157":1,"164":1,"166":1,"172":1,"217":1,"218":1,"221":1,"400":1,"433":1,"434":1}}],["builds",{"2":{"111":1,"112":1,"145":1}}],["building",{"0":{"34":1,"215":1,"431":1},"1":{"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"216":1,"217":1,"218":1,"219":1,"432":1,"433":1,"434":1,"435":1},"2":{"219":1,"220":1,"435":1}}],["build",{"2":{"4":1,"33":1,"36":1,"43":1,"49":1,"50":2,"102":1,"103":1,"114":2,"116":1,"118":1,"124":1,"164":4,"201":1,"220":1,"267":1,"308":1,"404":1,"405":1,"417":1}}],["builder",{"0":{"0":1,"26":1,"36":1,"46":1,"306":1,"312":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"47":1,"48":1,"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1},"2":{"5":1,"13":1,"30":3,"33":1,"41":1,"43":2,"46":2,"76":1,"117":2,"129":3,"131":2,"133":2,"139":1,"148":1,"165":3,"167":1,"171":1,"279":1,"307":1,"312":1,"313":1}}],["burn",{"0":{"18":1,"24":1},"2":{"136":1}}],["bump",{"2":{"8":1}}],["button",{"2":{"46":1,"53":1,"71":2,"72":2,"87":2,"261":1}}],["but",{"2":{"7":1,"30":1,"33":2,"41":2,"61":1,"62":1,"63":1,"116":1,"127":1,"135":1,"140":1,"143":1,"172":2,"199":1,"217":1,"218":1,"220":1,"280":1,"305":1,"341":1,"347":1,"368":1,"369":1,"370":1,"377":1,"393":1,"416":1,"433":1,"434":1}}],["balancequery",{"2":{"302":3}}],["balanceof",{"2":{"302":2,"304":1}}],["balance",{"2":{"281":5,"302":3,"304":1}}],["balanceat",{"0":{"281":1},"2":{"280":1,"281":2}}],["balances",{"0":{"13":1},"2":{"30":1}}],["banner",{"2":{"173":2,"185":3}}],["bannerurl",{"0":{"185":1},"2":{"173":2,"185":1}}],["bar",{"2":{"117":1,"143":1}}],["basis",{"2":{"92":1}}],["basics",{"2":{"308":1}}],["basic",{"2":{"43":1,"69":1,"128":2,"130":1,"132":1,"134":1,"143":1}}],["bash",{"2":{"44":1}}],["based",{"0":{"153":1,"154":1,"155":1},"2":{"135":1,"153":2,"154":2,"157":1,"231":1,"241":3,"242":1,"243":2,"264":1,"265":1,"267":1,"384":1}}],["base",{"0":{"316":1},"2":{"6":1,"315":1,"316":1}}],["baseuris",{"2":{"6":1}}],["batching",{"0":{"359":1},"2":{"42":1,"136":1,"211":1,"212":1,"213":1,"427":1,"428":1,"429":1}}],["batch",{"0":{"136":1,"214":1,"430":1},"2":{"42":3,"136":3}}],["batched",{"2":{"8":1,"42":1,"136":1,"276":1,"277":1}}],["background",{"2":{"168":1}}],["backend",{"0":{"219":1,"435":1},"2":{"150":2,"152":1,"153":1,"166":1,"219":3,"264":1,"370":1,"435":3}}],["backends",{"0":{"215":1,"431":1},"1":{"216":1,"217":1,"218":1,"219":1,"432":1,"433":1,"434":1,"435":1},"2":{"8":1,"62":1,"63":1,"165":1,"216":1,"217":1,"218":1,"432":1,"433":1,"434":1}}],["back",{"2":{"107":1,"195":1,"409":1}}],["backup",{"2":{"2":1,"327":1}}],["byte",{"2":{"301":1,"358":1}}],["bytecode",{"2":{"139":5,"287":1}}],["bytes4",{"2":{"358":4}}],["bytesn",{"2":{"301":1}}],["bytes",{"2":{"54":1,"213":2,"214":1,"301":2,"317":1,"358":3,"429":2,"430":1}}],["bytes32",{"2":{"46":1,"336":1,"338":1,"342":1,"352":1,"358":3}}],["by",{"2":{"6":1,"8":1,"33":2,"34":1,"35":4,"36":1,"41":3,"43":1,"44":1,"46":4,"47":1,"50":1,"51":1,"52":1,"65":1,"74":1,"76":1,"84":1,"93":1,"94":2,"95":2,"106":1,"107":1,"109":1,"110":1,"115":2,"116":1,"117":1,"118":2,"124":6,"128":1,"130":2,"132":2,"133":1,"134":2,"135":1,"136":1,"137":1,"143":1,"148":1,"157":1,"159":1,"162":1,"170":1,"173":3,"184":1,"189":1,"190":1,"192":1,"195":2,"198":1,"202":1,"220":1,"222":1,"228":1,"238":1,"258":1,"261":1,"265":1,"266":2,"269":1,"279":1,"280":2,"281":1,"283":1,"285":1,"295":1,"296":1,"329":1,"333":2,"335":1,"336":1,"337":1,"343":1,"344":1,"345":1,"346":1,"350":1,"351":1,"358":1,"362":1,"368":3,"369":3,"370":1,"380":2,"381":1,"386":1,"391":1,"393":1,"394":1,"401":1,"408":1,"409":1,"411":1,"412":1,"415":1,"418":1}}],["beyond",{"2":{"345":1}}],["beauty",{"2":{"172":1}}],["beautify",{"2":{"142":1}}],["beautifully",{"2":{"102":1,"103":1,"404":1,"405":1}}],["being",{"2":{"136":1,"149":2,"150":1,"264":1,"347":1}}],["bespoke",{"2":{"136":1}}],["best",{"2":{"8":1,"53":1,"173":2,"185":1,"219":1,"267":1,"435":1}}],["beneficial",{"2":{"136":1}}],["benefit",{"2":{"43":1,"94":1}}],["benefits",{"2":{"8":1,"170":1,"172":1}}],["behalf",{"2":{"202":1,"418":1}}],["behaves",{"2":{"195":1}}],["behaviour",{"2":{"117":1,"334":1,"341":1}}],["behind",{"2":{"30":1,"298":1}}],["bells",{"2":{"267":1}}],["believers",{"2":{"133":1}}],["believe",{"2":{"115":1}}],["below",{"2":{"5":1,"6":2,"36":1,"52":1,"69":1,"70":1,"86":1,"158":1,"164":1,"165":1,"166":2,"167":1,"168":1,"174":1,"220":2,"233":1,"265":1,"266":1,"343":1,"381":1}}],["become",{"2":{"116":1}}],["becomes",{"2":{"106":1,"408":1}}],["because",{"2":{"115":1,"116":1,"329":1,"332":1,"370":1}}],["begin",{"2":{"381":1}}],["beginning",{"2":{"36":1}}],["began",{"2":{"115":1}}],["better",{"2":{"135":1,"144":2,"160":1}}],["beta",{"2":{"60":1,"145":1,"376":1}}],["between",{"2":{"42":1,"118":1,"173":1}}],["been",{"2":{"33":1,"157":1,"368":1,"380":1,"390":2,"391":1}}],["before",{"2":{"5":1,"36":2,"49":1,"136":1,"148":1,"159":1,"164":1,"265":2,"349":2,"393":1,"394":2}}],["be",{"2":{"4":1,"6":1,"8":1,"33":4,"34":2,"35":7,"41":1,"42":3,"43":2,"44":1,"46":1,"47":1,"51":1,"53":1,"60":1,"61":1,"76":1,"79":1,"80":1,"81":1,"82":3,"83":3,"84":3,"95":4,"100":1,"105":3,"106":2,"108":1,"109":1,"110":5,"111":1,"115":3,"116":2,"117":1,"126":1,"127":1,"129":1,"130":1,"132":1,"134":1,"135":3,"140":2,"143":1,"145":1,"148":2,"149":2,"150":3,"152":3,"153":1,"157":2,"159":3,"160":1,"162":1,"164":1,"173":1,"175":1,"177":2,"180":1,"183":1,"184":1,"186":1,"187":1,"188":1,"189":1,"190":1,"192":2,"195":2,"198":1,"202":1,"209":1,"214":2,"225":1,"228":1,"229":1,"230":1,"234":1,"238":1,"240":1,"244":1,"251":1,"252":1,"254":1,"255":1,"258":1,"260":1,"264":1,"265":2,"266":9,"267":1,"268":1,"271":1,"276":3,"277":3,"278":1,"280":2,"282":1,"285":1,"287":1,"289":1,"291":1,"301":1,"304":1,"316":2,"317":1,"324":3,"329":1,"333":2,"335":2,"337":1,"339":1,"341":1,"343":4,"346":1,"347":1,"349":5,"350":1,"351":2,"352":2,"356":1,"357":1,"358":1,"366":2,"367":1,"369":2,"370":3,"376":1,"377":1,"379":1,"380":3,"383":2,"386":1,"389":1,"391":1,"393":1,"394":4,"399":1,"407":3,"408":2,"410":1,"411":1,"412":5,"415":1,"418":1,"425":1,"430":2}}],["languages",{"0":{"219":1,"435":1}}],["language",{"2":{"166":1,"199":1,"219":1,"416":1,"435":1}}],["landscape",{"2":{"157":1}}],["launch",{"2":{"150":1,"319":1}}],["launcher",{"2":{"124":2}}],["later",{"2":{"112":1,"146":1,"251":1,"300":1,"302":1,"304":1}}],["latestblock",{"2":{"171":2}}],["latest",{"2":{"100":1,"116":1,"168":1,"171":5,"225":2,"281":3,"282":1,"285":1,"287":1,"289":1,"291":3,"399":1}}],["lastest",{"2":{"233":1}}],["last",{"2":{"36":1,"44":1,"164":1}}],["len",{"2":{"356":1}}],["length",{"2":{"276":2,"277":2}}],["lemur",{"2":{"316":1}}],["let",{"2":{"135":1}}],["left",{"2":{"74":1,"77":3,"164":2}}],["leaked",{"2":{"370":1}}],["lead",{"2":{"334":1}}],["leading",{"2":{"65":1,"222":1,"401":1}}],["least",{"2":{"107":1,"409":1}}],["learn",{"2":{"105":1,"129":1,"131":1,"133":1,"135":1,"324":1,"407":1}}],["learning",{"2":{"73":1}}],["leverages",{"2":{"119":1}}],["leveraging",{"2":{"57":1,"97":1,"322":1,"373":1,"396":1}}],["level",{"2":{"6":4,"35":1,"172":1}}],["loss",{"2":{"334":1}}],["lost",{"2":{"107":3,"109":1,"409":3,"411":1}}],["long",{"2":{"173":1,"317":1,"380":1}}],["locking",{"2":{"192":1}}],["lockfundingcurrencytodefault",{"0":{"192":1},"2":{"173":2}}],["located",{"2":{"117":1}}],["locate",{"2":{"117":1,"118":1,"143":1}}],["location",{"2":{"77":1}}],["localhost",{"2":{"336":1}}],["localstorage",{"2":{"205":1,"421":1}}],["locally",{"2":{"46":1}}],["local",{"2":{"44":4,"46":1,"53":1,"202":1,"205":1,"209":1,"356":1,"357":1,"418":1,"421":1,"425":1}}],["lots",{"2":{"160":2}}],["loading",{"2":{"209":1,"381":1,"425":1}}],["load",{"2":{"117":2}}],["love",{"2":{"94":1}}],["look",{"2":{"49":1,"66":1,"70":1,"99":1,"135":1,"198":1,"223":1,"300":1,"302":1,"308":1,"309":1,"316":2,"398":1,"402":1,"415":1}}],["logs",{"2":{"381":1,"393":3}}],["logic",{"2":{"329":1}}],["logically",{"2":{"268":1}}],["loginpanel",{"2":{"118":5}}],["logins",{"2":{"65":1,"107":1,"222":1,"380":2,"387":2,"401":1,"409":1}}],["login",{"0":{"107":1,"174":1,"385":1,"386":1,"409":1},"1":{"108":1,"109":1,"110":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"410":1,"411":1,"412":1},"2":{"44":3,"52":1,"106":1,"107":2,"110":1,"120":1,"126":1,"150":1,"152":5,"368":3,"370":1,"381":5,"384":1,"387":1,"408":1,"409":2,"412":1}}],["logging",{"2":{"185":1,"385":1,"386":1}}],["logged",{"2":{"44":1}}],["logtemp",{"2":{"152":1}}],["logolight",{"2":{"92":2}}],["logodark",{"2":{"92":2}}],["logo",{"2":{"79":1}}],["logourl",{"0":{"79":1}}],["log",{"2":{"35":3,"41":2,"46":1,"49":1,"89":1,"152":1,"171":1,"173":2,"197":1,"199":2,"207":2,"209":2,"210":1,"211":2,"212":2,"213":2,"214":2,"336":1,"379":1,"380":1,"381":1,"382":1,"386":1,"387":1,"390":1,"391":1,"393":1,"394":1,"414":1,"416":2,"423":2,"425":2,"426":1,"427":2,"428":2,"429":2,"430":2}}],["lt",{"0":{"231":1,"242":1},"2":{"35":2,"41":1,"45":2,"46":1,"49":4,"52":2,"53":4,"54":3,"69":8,"70":19,"71":4,"72":2,"74":3,"86":9,"87":2,"93":8,"99":1,"100":4,"124":38,"152":1,"160":2,"171":2,"173":1,"198":4,"199":1,"231":1,"233":1,"242":1,"265":3,"266":5,"285":2,"302":5,"319":3,"381":11,"398":1,"399":4,"415":4,"416":1}}],["little",{"2":{"307":1}}],["live",{"2":{"224":2,"234":2,"244":2,"260":2}}],["lives",{"2":{"115":1}}],["limitation",{"2":{"265":2}}],["limited",{"2":{"202":1,"370":1,"418":1}}],["limit",{"2":{"173":1,"188":1}}],["limits",{"2":{"7":2,"369":1}}],["libs",{"2":{"361":1}}],["libraries",{"2":{"220":2,"233":1,"241":3,"243":2,"264":4,"265":1}}],["library",{"0":{"61":1,"265":1,"266":1,"377":1},"2":{"61":1,"64":1,"111":1,"130":1,"132":1,"134":1,"171":1,"219":1,"221":1,"265":1,"266":2,"267":3,"268":1,"271":1,"301":1,"356":1,"357":1,"377":1,"400":1,"435":1}}],["lib",{"2":{"100":1,"399":1}}],["lightweight",{"2":{"267":1}}],["light",{"2":{"74":1,"76":1,"173":1,"184":1}}],["linux",{"2":{"122":2}}],["links",{"2":{"161":1}}],["linking",{"2":{"120":1,"124":3}}],["linked",{"2":{"46":1}}],["link",{"2":{"36":1,"59":1,"120":1,"375":1,"394":1}}],["line",{"2":{"2":1,"51":2,"369":1}}],["likewise",{"2":{"214":1,"430":1}}],["like",{"2":{"33":1,"44":1,"49":1,"52":1,"63":1,"65":1,"70":1,"99":1,"106":1,"135":1,"152":5,"166":1,"167":1,"168":1,"172":2,"173":2,"198":1,"199":1,"218":1,"219":2,"222":1,"241":1,"300":1,"302":1,"308":2,"309":1,"316":1,"366":1,"386":1,"390":1,"398":1,"401":1,"408":1,"415":1,"416":1,"434":1,"435":2}}],["listsessions",{"2":{"382":1,"383":1}}],["list",{"0":{"382":1},"2":{"31":1,"82":1,"83":1,"84":2,"90":1,"93":1,"164":1,"166":1,"167":1,"168":1,"189":1,"226":1,"236":1,"285":2,"351":1,"382":1}}],["listen",{"0":{"390":1},"2":{"30":1}}],["ll",{"2":{"2":1,"43":1,"47":1,"51":1,"60":1,"61":1,"117":1,"126":1,"130":3,"132":3,"134":3,"139":2,"140":1,"150":2,"152":1,"153":1,"157":1,"158":1,"166":1,"198":1,"281":1,"300":5,"302":3,"308":1,"376":1,"377":1,"415":1}}],["nitro",{"2":{"368":1,"380":1}}],["nil",{"2":{"168":3}}],["npx",{"2":{"266":1}}],["npm",{"2":{"43":1,"68":1,"86":1,"99":2,"167":1,"172":1,"225":2,"231":1,"235":2,"242":1,"245":2,"252":2,"398":2}}],["n",{"2":{"121":1,"122":1,"301":1,"356":1}}],["null",{"2":{"265":1,"393":1,"394":1}}],["nuget",{"2":{"116":1}}],["numbers",{"2":{"128":2}}],["number",{"2":{"49":3,"54":3,"84":1,"178":1,"180":1,"202":1,"230":1,"240":1,"257":1,"272":1,"280":1,"282":1,"284":1,"296":1,"300":1,"317":1,"369":1,"418":1}}],["navigating",{"2":{"143":1}}],["navigate",{"2":{"46":1,"117":1,"124":1,"312":1,"315":1,"381":2}}],["nametypedescription",{"2":{"335":1,"339":1,"340":1,"343":1}}],["named",{"2":{"308":1}}],["name=",{"2":{"124":14}}],["name",{"2":{"49":1,"50":1,"80":1,"92":2,"99":2,"116":1,"124":1,"135":1,"143":1,"164":1,"173":3,"175":1,"184":1,"198":1,"229":1,"239":1,"249":1,"299":1,"308":2,"309":2,"311":1,"313":1,"319":1,"357":4,"393":1,"394":1,"398":2,"415":1}}],["names",{"2":{"44":1,"135":2,"318":1}}],["nativereceipt",{"2":{"393":1}}],["native",{"0":{"100":1,"399":1},"2":{"35":1,"137":1,"211":1,"212":1,"213":1,"214":1,"367":1,"427":1,"428":1,"429":1,"430":1}}],["normally",{"2":{"266":1}}],["normalizeasbiginteger",{"2":{"130":1,"136":1,"304":2}}],["normalize",{"2":{"128":2,"129":1,"135":2,"136":1,"298":1}}],["nobody",{"2":{"144":1,"368":1}}],["none",{"2":{"209":1,"281":1,"425":1}}],["non",{"2":{"95":1,"110":1,"111":1,"126":1,"131":1,"135":1,"145":1,"153":1,"352":3,"366":1,"412":1}}],["nonce=",{"2":{"381":1}}],["nonceat",{"0":{"291":1},"2":{"291":2}}],["nonce",{"2":{"42":4,"180":1,"291":4,"298":1,"300":1,"379":1}}],["noncespace",{"2":{"42":2}}],["nonces",{"2":{"8":1}}],["no",{"0":{"201":1,"417":1},"2":{"42":1,"44":1,"84":1,"111":1,"118":1,"123":1,"135":1,"140":1,"149":1,"172":1,"281":1,"344":1,"345":1,"369":1}}],["nodeurl",{"2":{"54":4}}],["nodes",{"2":{"46":1,"54":2,"171":1,"280":1}}],["nodejs",{"0":{"35":1,"36":1,"216":1,"432":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1},"2":{"41":1,"216":1,"432":1}}],["node",{"0":{"167":1,"170":1},"1":{"171":1},"2":{"30":1,"44":1,"51":1,"166":1,"167":2,"170":1,"279":1}}],["now",{"2":{"6":1,"30":1,"36":1,"42":1,"49":1,"52":1,"164":1,"165":1,"310":1,"315":1,"319":1}}],["notable",{"2":{"212":1,"213":1,"428":1,"429":1}}],["nothing",{"2":{"152":1,"195":1}}],["notice",{"2":{"140":1,"300":1,"358":1}}],["note",{"2":{"61":1,"114":1,"115":1,"116":3,"118":1,"120":1,"124":2,"128":1,"129":1,"133":1,"143":1,"157":2,"167":1,"173":1,"198":1,"209":1,"210":1,"251":1,"278":1,"280":1,"281":1,"282":1,"285":1,"287":1,"289":1,"291":1,"300":1,"362":1,"377":1,"379":1,"415":1,"425":1,"426":1}}],["noted",{"2":{"51":1,"53":1}}],["notes",{"0":{"33":1}}],["not",{"2":{"2":1,"33":1,"35":4,"36":1,"41":1,"42":1,"43":1,"53":1,"117":1,"118":1,"120":1,"128":2,"129":2,"130":1,"132":1,"134":1,"135":1,"149":1,"152":1,"157":1,"170":1,"191":1,"199":1,"207":1,"267":1,"278":1,"280":1,"299":1,"304":1,"329":1,"343":2,"349":1,"352":1,"369":2,"385":1,"389":1,"394":1,"416":1,"423":1}}],["nfts",{"2":{"30":1,"32":1,"131":1}}],["nft",{"0":{"28":1,"212":1,"428":1},"2":{"5":1,"6":2,"30":3,"165":1,"212":2,"315":1,"369":1,"428":2}}],["never",{"2":{"394":1}}],["nesting",{"2":{"160":1}}],["nested",{"0":{"359":1},"2":{"160":1}}],["nethereum",{"2":{"111":1,"267":1}}],["networkid",{"0":{"290":1},"2":{"290":2}}],["network",{"0":{"248":1},"2":{"8":1,"35":2,"41":2,"46":1,"49":3,"53":1,"61":1,"110":2,"128":1,"135":2,"136":1,"171":2,"210":1,"229":1,"230":2,"239":1,"240":2,"246":1,"248":1,"292":1,"298":1,"312":1,"377":1,"379":1,"380":1,"381":1,"382":1,"383":1,"393":2,"394":5,"412":2,"426":1}}],["networks",{"0":{"31":1},"2":{"8":1,"30":2,"31":1,"49":1,"54":1,"166":2,"168":1}}],["necessary",{"2":{"68":1,"154":1}}],["nextjs",{"0":{"232":1,"241":1,"263":1,"265":1},"1":{"264":1,"265":1,"266":1},"2":{"232":2,"233":2,"241":2,"243":2,"264":3,"265":1,"266":6}}],["next",{"0":{"66":1,"223":1,"264":1,"265":1,"266":1,"402":1},"2":{"35":1,"44":1,"47":1,"93":1,"115":1,"117":1,"119":1,"153":1,"264":2,"266":2,"281":1,"309":1}}],["needs",{"2":{"144":1,"195":1,"344":1,"352":1}}],["needing",{"2":{"42":1}}],["needed",{"2":{"35":1,"92":1,"107":1,"116":1,"126":1,"202":1,"409":1,"418":1}}],["need",{"2":{"4":1,"30":1,"35":1,"43":1,"47":1,"60":1,"61":1,"93":1,"95":1,"106":1,"115":1,"117":1,"130":1,"132":1,"134":1,"135":1,"139":1,"143":1,"148":1,"150":2,"152":1,"157":1,"162":1,"163":1,"195":1,"220":1,"267":1,"280":1,"299":1,"304":1,"308":1,"345":1,"347":1,"368":1,"376":1,"377":1,"378":2,"380":1,"386":1,"408":1}}],["newimagehash",{"2":{"344":1,"350":1}}],["newindexer",{"2":{"168":1}}],["newestblock",{"2":{"289":2}}],["newer",{"2":{"115":1,"167":1}}],["newobject",{"2":{"152":1}}],["newlydeployedcontractaddress",{"2":{"139":1,"303":1}}],["newly",{"2":{"117":1,"143":1,"300":1}}],["newtonsoft",{"2":{"116":2}}],["new",{"0":{"38":1},"2":{"2":1,"35":6,"41":2,"46":3,"49":12,"54":4,"61":2,"69":1,"70":1,"110":1,"111":1,"121":1,"122":1,"124":2,"126":1,"128":2,"129":2,"130":4,"131":2,"132":4,"133":4,"134":4,"135":7,"136":12,"137":1,"143":1,"145":1,"164":2,"167":1,"171":1,"172":1,"199":4,"204":1,"205":2,"209":1,"211":2,"212":2,"213":2,"214":3,"226":1,"254":1,"266":1,"270":2,"271":1,"279":1,"289":1,"299":1,"300":4,"302":2,"304":2,"311":1,"312":1,"335":1,"336":1,"343":1,"377":2,"379":1,"380":1,"381":1,"382":1,"383":1,"393":1,"394":1,"412":1,"416":4,"420":1,"421":2,"425":1,"427":2,"428":2,"429":2,"430":3}}],["myetherwallet",{"2":{"328":1}}],["mypinata",{"2":{"316":1}}],["mypage",{"2":{"69":3,"70":3}}],["myapp",{"2":{"266":1}}],["mytokenaddress",{"2":{"130":2,"132":2,"134":2}}],["mytoken",{"2":{"130":3,"132":3,"134":3}}],["my",{"0":{"264":1},"2":{"92":2,"93":3,"99":1,"175":1,"246":1,"398":1}}],["mycustomlogolight",{"2":{"92":1}}],["mycustomlogodark",{"2":{"92":1}}],["mycustomconnectoroptions",{"2":{"92":1}}],["mycustomconnector",{"2":{"92":2,"93":1}}],["mycomponent",{"2":{"72":1,"87":1}}],["myreactcomponent",{"2":{"71":1}}],["much",{"2":{"115":1}}],["mutable",{"2":{"115":1}}],["mumbai",{"2":{"61":1,"319":1,"377":1,"379":1,"380":1,"381":1,"382":1,"383":1,"393":1,"394":1}}],["must",{"2":{"46":2,"82":1,"83":1,"117":1,"120":1,"127":1,"140":1,"149":2,"254":1,"264":1,"265":1,"266":1,"337":1,"358":1,"370":1,"393":1}}],["multisig",{"2":{"367":1}}],["multisigs",{"2":{"367":1}}],["multisignature",{"2":{"106":1,"408":1}}],["multi",{"2":{"30":1,"49":1,"50":1,"95":1,"133":1}}],["multiple",{"2":{"2":1,"35":1,"42":1,"95":1,"106":2,"133":2,"136":1,"143":1,"170":1,"172":1,"195":1,"211":2,"212":2,"213":2,"214":1,"330":1,"408":2,"427":2,"428":2,"429":2,"430":1}}],["mkdir",{"2":{"44":1}}],["mitm",{"2":{"370":1}}],["mimics",{"2":{"341":1}}],["might",{"2":{"319":1,"379":1,"386":1}}],["migrated",{"2":{"35":1}}],["migration",{"0":{"353":1},"2":{"35":4}}],["mistakes",{"2":{"319":1}}],["missed",{"2":{"165":1}}],["miss",{"2":{"160":1}}],["missing",{"2":{"51":1}}],["mix",{"2":{"214":1,"430":1}}],["middle",{"2":{"77":2}}],["middleware",{"2":{"49":1}}],["minimum",{"2":{"308":1}}],["minor",{"2":{"111":2,"145":2}}],["min",{"2":{"100":2,"399":2}}],["minutes",{"2":{"43":1,"388":1}}],["minted",{"2":{"318":2}}],["minter",{"0":{"16":1,"22":1,"27":1},"2":{"43":1,"46":4}}],["mints",{"2":{"43":1,"315":1}}],["mint",{"0":{"17":1,"23":1,"26":1,"43":1,"54":1},"1":{"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1},"2":{"43":1,"46":1,"54":4,"129":1,"130":2,"131":1,"133":1,"134":2,"135":3,"304":1,"315":1,"316":1,"317":3,"319":1}}],["minting",{"0":{"317":1},"2":{"13":1,"89":1,"319":1}}],["mined",{"2":{"8":1,"33":1}}],["move",{"0":{"314":1},"2":{"281":1}}],["mounted",{"2":{"265":2}}],["money",{"2":{"170":1}}],["monobehaviour",{"2":{"118":1,"143":1}}],["mono",{"2":{"112":2}}],["moments",{"2":{"164":1}}],["moment",{"2":{"145":1}}],["mocks",{"2":{"140":1}}],["mocked",{"2":{"49":3,"53":1,"54":1}}],["moonpay",{"2":{"105":1,"173":2,"189":1,"324":1,"407":1}}],["mobile",{"0":{"103":1,"155":1,"405":1},"2":{"103":2,"157":2,"172":2,"173":1,"220":1,"405":2}}],["most",{"2":{"95":1,"116":1,"128":2,"173":1,"272":1,"280":1,"284":1,"326":1}}],["more",{"0":{"144":1},"2":{"35":1,"41":1,"42":1,"59":1,"65":1,"92":1,"95":1,"99":1,"105":1,"106":2,"114":1,"116":1,"118":1,"124":2,"128":1,"144":1,"173":1,"195":1,"198":1,"222":1,"229":1,"232":1,"239":1,"241":1,"266":1,"324":1,"330":1,"375":1,"401":1,"407":1,"408":2,"415":1}}],["modifier",{"2":{"335":1,"343":1}}],["modification",{"2":{"210":1,"426":1}}],["modify",{"2":{"116":1,"304":1,"315":1,"316":1}}],["modals",{"2":{"77":1}}],["modal",{"0":{"71":1,"72":1,"78":1,"87":1,"88":1},"1":{"79":1,"80":1,"81":1,"82":1,"83":1,"89":1,"90":1},"2":{"67":1,"71":2,"76":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"87":1,"88":1}}],["moduleauth",{"2":{"337":1}}],["module",{"2":{"86":1,"245":1,"332":1,"333":1,"337":2,"341":1,"345":1,"368":1}}],["modules",{"0":{"332":1},"1":{"333":1,"334":1,"335":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"351":1,"352":1},"2":{"44":1,"51":1,"332":3,"333":1,"337":1,"345":1}}],["modular",{"2":{"30":3,"68":1}}],["modes",{"2":{"157":1}}],["mode",{"2":{"116":1,"118":1,"143":1,"157":2}}],["modern",{"2":{"102":1,"172":1,"404":1}}],["moderately",{"2":{"106":1,"408":1}}],["moderate",{"2":{"7":1}}],["model",{"0":{"370":1},"2":{"8":1,"370":1}}],["march",{"2":{"365":1}}],["marked",{"2":{"349":1}}],["marketplace",{"0":{"4":1,"19":1,"25":1},"2":{"4":4,"89":1,"321":1,"323":2}}],["mail",{"2":{"357":1}}],["mainmoduleinterface",{"2":{"344":2,"350":2}}],["mainmoduleupgradable",{"2":{"341":1,"344":3,"349":1,"350":1,"351":1,"352":1,"361":1}}],["mainmoduleupgradeable",{"0":{"341":1,"353":1},"1":{"342":1,"343":1}}],["mainmodule",{"2":{"332":1,"337":2,"341":1,"344":3,"361":1}}],["maintaining",{"2":{"172":1,"202":1,"418":1}}],["main",{"2":{"84":3,"124":3,"268":1,"381":3}}],["mainnet",{"2":{"35":2,"41":2,"46":1,"69":2,"70":2,"166":2,"167":1,"173":1,"199":1,"230":1,"240":1,"416":1}}],["mapped",{"2":{"301":1}}],["mappings",{"0":{"301":1}}],["max",{"2":{"294":1}}],["master",{"2":{"266":1}}],["match",{"2":{"214":1,"430":1}}],["material",{"2":{"136":1}}],["matic",{"2":{"35":1,"128":3,"173":1}}],["magicvalue",{"2":{"358":1}}],["magic",{"2":{"136":1,"358":3}}],["macbook",{"2":{"379":1,"381":1,"382":2,"383":1}}],["machine",{"2":{"114":1,"329":1}}],["macos",{"0":{"122":1},"2":{"112":1,"114":1,"161":1,"164":1}}],["mac",{"2":{"112":1,"122":3,"146":1,"152":2,"164":1}}],["made",{"2":{"111":1,"115":1,"139":1,"145":1,"152":3,"267":1}}],["major",{"2":{"111":2,"145":2}}],["making",{"2":{"110":1,"136":1,"140":1,"152":1,"267":1,"412":1}}],["make",{"2":{"32":1,"35":2,"44":1,"49":4,"51":1,"92":1,"116":1,"118":1,"124":1,"127":1,"129":1,"142":1,"154":1,"157":3,"159":3,"160":1,"164":1,"166":1,"167":1,"168":1,"195":1,"280":1,"299":1,"319":1}}],["makes",{"2":{"30":2,"46":1,"368":1}}],["malicious",{"2":{"106":1,"109":1,"110":1,"408":1,"411":1,"412":1}}],["many",{"2":{"129":1,"198":1,"219":1,"220":1,"415":1,"435":1}}],["manifest",{"2":{"124":5}}],["manual",{"0":{"116":1},"2":{"124":1}}],["manually",{"0":{"26":1},"2":{"117":1,"388":1}}],["managing",{"0":{"6":1}}],["manages",{"2":{"152":1}}],["manager",{"0":{"114":1,"143":1},"1":{"115":1},"2":{"114":4,"115":1,"116":5,"143":1}}],["management",{"0":{"106":1,"378":1,"408":1},"1":{"107":1,"108":1,"109":1,"110":1,"379":1,"380":1,"381":1,"382":1,"383":1,"409":1,"410":1,"411":1,"412":1},"2":{"13":1,"366":1,"368":1,"378":1}}],["managed",{"2":{"5":1,"6":1,"30":1,"165":1,"391":1}}],["manage",{"0":{"306":1},"1":{"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1},"2":{"5":1,"8":1,"65":1,"158":1,"222":1,"307":1,"401":1}}],["may",{"2":{"8":1,"30":1,"35":1,"99":1,"115":1,"135":1,"143":2,"166":1,"173":1,"220":2,"252":1,"264":1,"266":1,"267":1,"271":1,"276":1,"277":1,"304":2,"325":1,"334":1,"343":1,"364":1,"390":1,"398":1}}],["me",{"2":{"236":1}}],["measures",{"2":{"172":1}}],["meant",{"2":{"95":1,"143":1,"369":1}}],["means",{"2":{"33":1,"53":1,"103":1,"107":1,"172":1,"335":1,"343":1,"344":1,"369":1,"370":1,"378":1,"405":1,"409":1}}],["memory",{"2":{"160":1}}],["members",{"2":{"2":1}}],["menu",{"2":{"121":1,"122":1,"195":1}}],["mentioned",{"2":{"49":1}}],["message",{"0":{"196":1,"206":1,"208":1,"413":1,"422":1,"424":1},"1":{"197":1,"198":1,"199":1,"414":1,"415":1,"416":1},"2":{"115":1,"138":2,"198":4,"202":1,"206":1,"208":3,"209":1,"278":4,"338":1,"356":5,"357":1,"389":1,"394":2,"415":4,"418":1,"422":1,"424":3,"425":1}}],["messages",{"0":{"138":1},"2":{"35":1,"199":1,"201":1,"202":1,"355":1,"356":1,"416":1,"417":1,"418":1}}],["media",{"2":{"47":1}}],["metatxhash",{"2":{"393":1}}],["metamask",{"2":{"65":1,"83":1,"92":1,"93":1,"172":2,"193":1,"220":1,"222":1,"224":1,"234":1,"244":1,"328":1,"401":1}}],["meta",{"2":{"8":3,"99":1,"124":2,"219":1,"330":1,"369":1,"398":1,"435":1}}],["metadataoptions",{"2":{"33":3,"168":3}}],["metadatafield",{"2":{"6":1}}],["metadata",{"0":{"5":1,"6":1,"33":1,"46":1,"47":1,"306":1,"308":1,"310":1,"316":1,"319":1},"1":{"6":1,"7":1,"47":1,"48":1,"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1},"2":{"5":4,"6":18,"7":1,"13":2,"30":2,"32":1,"33":3,"43":1,"47":1,"307":1,"308":1,"309":1,"310":1,"315":1,"316":1,"319":4}}],["methods",{"0":{"160":1,"272":1,"280":1},"1":{"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"281":1,"282":1,"283":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},"2":{"33":1,"49":1,"54":1,"118":1,"130":1,"132":1,"134":1,"267":1,"272":1,"280":2,"305":2,"315":1,"345":1,"347":1,"392":1}}],["method",{"2":{"6":1,"46":1,"49":1,"118":1,"127":1,"129":1,"130":1,"132":1,"134":1,"135":4,"138":1,"139":1,"140":1,"173":1,"199":1,"264":1,"265":1,"266":1,"278":1,"299":1,"300":2,"302":1,"335":2,"343":2,"344":1,"350":1,"351":2,"352":1,"358":1,"384":1,"385":1,"387":1,"388":4,"416":1}}],["otp",{"2":{"369":1,"380":4}}],["otherrainbowkitwallets",{"2":{"236":1}}],["otherconnectors",{"2":{"226":1}}],["others",{"2":{"94":1,"157":1}}],["otherwise",{"2":{"46":1,"281":1,"356":1,"357":1,"358":1,"388":2}}],["other",{"0":{"219":1,"435":1},"2":{"8":1,"68":1,"92":1,"93":1,"118":1,"121":1,"122":1,"159":1,"192":1,"199":1,"219":1,"220":1,"226":1,"228":1,"236":1,"238":1,"254":1,"255":1,"317":1,"332":1,"335":1,"343":1,"369":2,"416":1,"435":1}}],["oauth",{"2":{"369":1,"381":4}}],["omit",{"2":{"278":1}}],["omitted",{"2":{"33":2,"177":1}}],["older",{"0":{"231":1,"242":1},"2":{"231":1,"232":1,"233":2,"241":1,"242":1,"243":1}}],["os",{"2":{"195":2}}],["obvious",{"2":{"135":1}}],["obtained",{"2":{"380":1,"381":1}}],["obtain",{"2":{"118":1,"127":1,"138":1,"139":1,"380":2,"381":2}}],["objects",{"2":{"133":1}}],["objectdark",{"2":{"76":1}}],["object",{"0":{"51":1},"2":{"36":1,"51":1,"54":1,"76":2,"78":1,"87":1,"88":1,"114":2,"116":1,"127":1,"130":1,"132":1,"134":1,"135":1,"138":1,"139":1,"143":3,"154":1,"174":1,"198":2,"278":1,"279":1,"299":2,"300":3,"393":2,"394":1,"415":2}}],["oidc",{"2":{"118":1,"120":1}}],["over",{"2":{"95":1,"109":1,"110":1,"150":1,"160":1,"170":1,"309":1,"318":1,"411":1,"412":1}}],["overview",{"0":{"85":1,"367":1},"1":{"368":1,"369":1},"2":{"165":1}}],["override",{"2":{"76":1,"334":1,"338":1,"342":1,"358":1}}],["overwritten",{"2":{"76":1,"116":1}}],["ownable",{"0":{"305":1},"2":{"305":4}}],["owned",{"0":{"326":1},"1":{"327":1,"328":1},"2":{"84":1,"95":1,"109":1,"325":1,"326":1,"411":1}}],["ownership",{"2":{"35":1,"53":1}}],["owner",{"2":{"35":1,"95":1,"366":1}}],["own",{"2":{"65":1,"92":1,"106":1,"111":1,"140":1,"142":1,"144":1,"150":1,"154":1,"170":1,"222":1,"267":1,"279":1,"304":1,"319":1,"401":1,"408":1}}],["o",{"2":{"35":2}}],["operated",{"2":{"368":1}}],["operate",{"2":{"367":1}}],["operation",{"2":{"334":1,"346":1,"349":1,"379":1}}],["operations",{"2":{"230":1,"240":1}}],["operational",{"2":{"61":1,"377":1}}],["openwithoptions",{"2":{"173":2}}],["openwalletintent",{"2":{"173":1}}],["openwallet",{"2":{"173":3}}],["opened",{"2":{"140":1,"379":1,"380":1}}],["openidauthentication",{"2":{"112":1}}],["opening",{"0":{"87":1},"2":{"115":1,"136":1,"177":1}}],["openning",{"2":{"35":2}}],["open",{"2":{"35":2,"41":1,"46":2,"63":1,"72":2,"87":1,"114":1,"118":2,"121":1,"122":1,"140":1,"164":2,"173":2,"182":1,"190":1,"218":1,"220":1,"311":1,"380":2,"381":1,"434":1}}],["opensea",{"2":{"33":1}}],["optionally",{"2":{"100":1,"128":1,"130":1,"132":1,"134":1,"173":1,"399":1}}],["optional",{"0":{"229":1,"230":1,"239":1,"240":1,"248":1,"249":1,"258":1},"2":{"35":2,"41":1,"70":1,"129":1,"152":1,"180":1,"278":1}}],["options",{"0":{"74":1,"75":1,"174":1,"229":1,"230":1,"256":1},"1":{"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"257":1,"258":1},"2":{"33":1,"35":2,"41":1,"49":1,"66":1,"74":2,"82":2,"83":2,"92":2,"105":2,"106":1,"171":1,"173":2,"188":1,"223":1,"226":1,"229":1,"239":2,"254":2,"324":2,"402":1,"407":2,"408":1}}],["option",{"2":{"33":1,"35":2,"53":1,"172":2,"174":1,"187":1,"192":1,"195":1,"266":1,"304":1}}],["optimal",{"2":{"8":1}}],["outlined",{"2":{"54":1}}],["out",{"2":{"49":1,"54":1,"56":1,"65":1,"66":1,"89":1,"97":1,"115":2,"126":1,"127":1,"138":1,"139":1,"143":1,"144":1,"173":1,"199":1,"220":1,"222":1,"223":1,"321":1,"356":1,"357":1,"372":1,"396":1,"401":1,"402":1,"416":1}}],["outside",{"2":{"13":1,"130":1,"132":1,"134":1,"173":1}}],["ours",{"2":{"157":1}}],["our",{"2":{"5":1,"6":1,"30":1,"33":1,"35":1,"56":2,"57":1,"63":1,"64":1,"65":1,"66":1,"97":1,"111":1,"112":1,"115":3,"116":1,"118":2,"120":1,"129":2,"130":1,"131":2,"132":1,"133":2,"134":1,"136":1,"137":1,"143":2,"144":1,"165":1,"170":1,"171":1,"218":1,"220":3,"221":1,"222":1,"223":1,"266":1,"267":1,"279":1,"280":1,"299":1,"300":2,"302":2,"304":1,"321":1,"322":1,"372":2,"373":1,"396":1,"400":1,"401":1,"402":1,"434":1}}],["onvalidationrequired",{"0":{"389":1},"2":{"389":2,"390":2,"391":3}}],["onboard",{"0":{"244":1},"1":{"245":1,"246":1,"247":1,"248":1,"249":1,"250":1},"2":{"172":1,"220":1,"244":3,"245":2,"246":3,"250":1}}],["onboarding",{"2":{"64":1,"65":1,"117":1,"148":1,"172":1,"221":1,"222":1,"400":1,"401":1}}],["onfailuretest",{"2":{"160":1}}],["onresponse",{"2":{"160":1}}],["onramp",{"0":{"29":1}}],["ondeploycontractfailedhandler",{"2":{"139":2}}],["ondeploycontractfailed",{"2":{"139":2}}],["ondeploycontractcompletehandler",{"2":{"139":2}}],["ondeploycontractcomplete",{"2":{"139":2}}],["onsessionstatechanged",{"2":{"381":2}}],["onsendtransactionfailedhandler",{"2":{"127":2}}],["onsendtransactionfailed",{"2":{"127":2,"139":1}}],["onsendtransactioncompletehandler",{"2":{"127":2}}],["onsendtransactioncomplete",{"2":{"127":2,"139":1}}],["onsuccess=",{"2":{"381":1}}],["onsuccess",{"2":{"157":1}}],["onsignmessagecompletehandler",{"2":{"138":2}}],["onsignmessagecomplete",{"2":{"138":2}}],["onwaaswalletcreatedhander",{"2":{"127":1,"138":1,"139":1}}],["onwaaswalletcreatedhandler",{"2":{"126":3}}],["onwaaswalletcreated",{"2":{"126":2}}],["onmeta",{"2":{"105":1,"324":1,"407":1}}],["onmigration",{"2":{"35":1}}],["onlyself",{"2":{"334":1,"335":1,"342":1,"343":1}}],["only",{"0":{"266":1},"2":{"46":2,"60":1,"68":1,"84":1,"99":1,"105":1,"106":2,"110":1,"112":2,"116":2,"126":1,"136":1,"145":1,"152":1,"186":1,"192":1,"209":1,"210":2,"212":1,"213":1,"264":1,"265":1,"276":1,"277":1,"299":1,"304":1,"324":1,"333":1,"335":1,"337":1,"343":1,"366":1,"369":3,"376":1,"382":1,"394":1,"398":1,"407":1,"408":2,"412":1,"425":1,"426":2,"428":1,"429":1}}],["onclick=",{"2":{"71":1,"72":1,"87":1}}],["onclick",{"2":{"71":2,"72":2,"87":2,"173":1}}],["once",{"2":{"35":1,"44":1,"54":1,"60":1,"71":1,"107":1,"119":1,"120":1,"126":1,"150":2,"157":1,"159":1,"164":1,"173":1,"195":1,"265":1,"271":1,"276":1,"277":1,"314":1,"350":1,"376":1,"380":1,"388":1,"409":1}}],["onchainreader",{"2":{"199":1,"416":1}}],["onchain",{"2":{"13":1}}],["on",{"0":{"27":1,"28":1,"29":1,"33":1,"105":1,"154":1,"155":1,"309":1,"312":1,"324":1,"360":1,"407":1},"2":{"8":1,"30":2,"33":2,"35":1,"42":1,"43":1,"44":1,"52":1,"53":1,"59":1,"64":1,"77":1,"92":2,"93":1,"95":1,"99":3,"102":1,"103":2,"105":5,"106":2,"112":1,"114":5,"115":2,"116":1,"117":1,"118":1,"119":2,"120":1,"128":1,"129":1,"135":5,"140":1,"142":1,"143":1,"145":1,"149":1,"152":2,"158":4,"160":1,"164":7,"165":1,"166":2,"172":5,"173":3,"175":1,"192":1,"193":1,"199":4,"202":1,"207":1,"209":1,"211":1,"212":1,"213":1,"216":1,"219":1,"220":1,"221":1,"231":1,"232":3,"241":3,"242":1,"264":4,"265":2,"266":1,"267":2,"281":3,"304":1,"305":1,"308":1,"310":1,"311":2,"312":2,"313":1,"314":1,"315":2,"316":1,"324":5,"326":1,"332":1,"336":1,"337":1,"345":1,"347":1,"349":1,"358":1,"366":1,"368":1,"370":1,"375":1,"384":1,"394":2,"398":2,"400":1,"404":1,"405":2,"407":5,"408":2,"416":4,"418":1,"423":1,"425":1,"427":1,"428":1,"429":1,"432":1,"435":1}}],["one",{"0":{"385":1},"2":{"2":1,"6":1,"33":1,"35":3,"41":1,"44":1,"46":3,"95":1,"106":1,"107":1,"124":1,"128":1,"136":1,"139":1,"157":1,"160":1,"164":1,"184":1,"195":1,"211":1,"212":1,"213":1,"220":1,"265":1,"266":1,"276":1,"277":1,"315":1,"333":1,"338":1,"351":1,"367":1,"380":1,"385":1,"386":1,"408":1,"409":1,"427":1,"428":1,"429":1}}],["origin",{"0":{"177":1},"2":{"49":1,"177":1}}],["orgs",{"2":{"34":1,"43":1}}],["organizations",{"2":{"30":1}}],["or",{"0":{"169":1,"193":1},"2":{"6":4,"8":2,"30":1,"32":1,"33":1,"35":4,"41":1,"43":2,"46":4,"47":1,"49":3,"50":1,"53":1,"66":1,"68":2,"76":1,"86":2,"89":1,"92":1,"93":1,"99":2,"102":1,"103":1,"106":1,"107":3,"110":3,"112":1,"114":3,"116":1,"118":1,"120":1,"124":2,"126":1,"127":1,"128":2,"135":3,"136":1,"138":1,"139":3,"144":1,"146":1,"149":1,"152":1,"154":1,"157":2,"159":1,"166":2,"167":3,"171":1,"172":1,"173":1,"185":1,"192":1,"199":2,"201":1,"202":1,"207":1,"209":1,"214":1,"216":1,"219":2,"220":3,"223":1,"225":1,"231":1,"232":1,"235":1,"241":3,"242":1,"245":1,"276":2,"277":2,"282":1,"285":1,"287":1,"289":1,"291":1,"298":1,"299":1,"300":2,"301":1,"302":1,"304":1,"317":1,"325":1,"333":1,"337":1,"352":1,"366":1,"368":1,"369":1,"370":2,"386":1,"389":2,"391":2,"392":1,"393":1,"394":1,"398":2,"402":1,"404":1,"405":1,"408":1,"409":3,"412":3,"416":2,"417":1,"418":1,"423":1,"425":1,"430":1,"432":1,"435":2}}],["orderbookcontractaddress",{"2":{"323":1}}],["orderbook",{"2":{"322":1}}],["ordersummaryitems",{"0":{"90":1},"2":{"88":1,"90":2}}],["order",{"0":{"90":1},"2":{"2":1,"6":1,"35":1,"42":1,"43":1,"44":1,"46":1,"48":1,"49":1,"82":1,"83":1,"90":1,"115":1,"120":1,"135":1,"150":1,"158":1,"162":1,"297":1,"298":1,"300":1,"367":1,"379":1}}],["often",{"2":{"133":1}}],["offer",{"2":{"172":1,"220":1,"368":1}}],["offered",{"2":{"137":1}}],["offers",{"2":{"4":1,"5":1,"8":1,"166":1,"366":1}}],["official",{"2":{"82":1,"83":1,"91":1,"92":1,"265":1}}],["of",{"0":{"13":1,"214":1,"231":1,"242":1,"265":1,"430":1},"2":{"2":3,"6":3,"8":7,"30":3,"31":1,"32":2,"33":3,"35":3,"41":1,"42":2,"43":1,"44":1,"46":2,"49":2,"53":1,"56":1,"61":1,"62":2,"63":2,"64":2,"65":2,"77":1,"79":1,"80":1,"82":1,"83":1,"84":1,"90":1,"92":2,"93":2,"94":1,"95":1,"99":1,"106":3,"107":2,"108":1,"109":1,"110":2,"115":4,"116":1,"117":1,"127":2,"128":4,"130":3,"131":1,"132":3,"133":1,"134":3,"135":4,"136":4,"137":3,"139":1,"140":2,"141":1,"143":1,"144":1,"150":1,"152":4,"154":1,"157":1,"158":3,"159":2,"160":4,"166":3,"167":2,"168":2,"169":1,"170":1,"172":7,"173":1,"175":1,"177":1,"184":2,"185":1,"189":1,"190":1,"193":1,"195":1,"198":1,"202":1,"211":1,"212":1,"213":1,"217":2,"218":2,"220":3,"221":2,"222":2,"225":2,"226":1,"229":1,"231":3,"232":1,"233":3,"236":1,"239":2,"241":1,"242":3,"249":1,"250":2,"251":1,"258":1,"264":1,"265":3,"266":5,"268":1,"269":2,"271":1,"272":2,"276":2,"277":2,"278":1,"279":1,"280":3,"281":2,"288":1,"296":1,"299":1,"300":2,"302":1,"304":5,"309":1,"311":2,"312":1,"315":3,"317":1,"326":2,"329":2,"332":3,"334":3,"335":2,"336":1,"337":5,"338":1,"339":1,"341":1,"343":5,"344":2,"348":1,"349":3,"351":1,"352":1,"355":1,"356":1,"357":1,"362":1,"366":3,"367":4,"369":4,"370":3,"372":1,"377":1,"378":1,"379":1,"382":1,"383":1,"386":1,"387":1,"393":2,"398":1,"400":2,"401":2,"408":3,"409":2,"410":1,"411":1,"412":2,"415":1,"418":1,"427":1,"428":1,"429":1,"433":2,"434":2}}],["ipfs",{"2":{"307":1,"308":1,"309":3,"316":1}}],["ignored",{"2":{"173":1,"186":1,"187":1,"188":1}}],["iwallet",{"2":{"140":1,"269":2,"270":2,"271":2,"272":1}}],["iindexer",{"2":{"137":2}}],["icon",{"2":{"114":1,"116":1,"164":1}}],["ios",{"0":{"121":1,"163":1},"2":{"112":1,"114":1,"121":2,"146":1,"161":1,"163":1,"164":1}}],["io",{"2":{"100":1,"199":1,"399":1,"416":1}}],["identifier",{"2":{"309":1,"394":1}}],["identity",{"2":{"198":1,"199":1,"369":1,"370":1,"385":1,"386":1,"415":1,"416":1}}],["ideas",{"2":{"144":2}}],["ideal",{"2":{"116":1}}],["idea",{"2":{"8":1}}],["ids",{"2":{"133":1}}],["idtokenin",{"2":{"152":1,"154":1}}],["idtoken",{"2":{"118":1,"119":1,"120":1,"126":1,"379":2,"380":6,"381":2,"382":1,"383":1,"393":1,"394":1}}],["id",{"2":{"35":1,"41":1,"69":2,"70":2,"82":1,"83":1,"92":2,"93":1,"152":1,"154":2,"162":6,"213":2,"214":1,"229":1,"239":1,"257":1,"278":3,"286":1,"290":1,"308":1,"315":1,"316":2,"317":1,"319":1,"369":1,"381":1,"382":2,"383":2,"393":1,"429":2,"430":1}}],["immediately",{"2":{"42":1}}],["imperative",{"2":{"349":1}}],["improperly",{"2":{"267":1}}],["improved",{"2":{"106":1,"408":1}}],["implicit",{"2":{"120":1}}],["implementing",{"2":{"305":1}}],["implement",{"0":{"51":1},"2":{"54":1,"118":1,"166":1,"327":1,"329":2,"337":1,"378":1}}],["implementationaddressaddress",{"2":{"335":1}}],["implementations",{"2":{"269":1}}],["implementation",{"0":{"333":1,"336":1},"1":{"334":1,"335":1,"336":1},"2":{"43":1,"54":1,"137":1,"149":1,"154":2,"166":1,"332":1,"334":4,"335":1,"336":4,"344":1}}],["implemented",{"2":{"43":1,"130":1,"132":1,"134":1,"149":1,"152":1,"280":1,"325":1,"329":1,"337":1}}],["implements",{"2":{"41":1,"150":1}}],["important",{"0":{"268":1},"2":{"117":1,"118":1,"141":1,"272":1,"301":1}}],["imported",{"2":{"117":2,"143":1,"226":1,"236":1,"266":1}}],["importing",{"2":{"115":1}}],["import",{"2":{"35":2,"41":1,"46":2,"49":2,"54":2,"61":1,"69":6,"70":8,"71":2,"72":1,"86":1,"87":1,"93":1,"114":4,"115":2,"116":3,"167":1,"168":1,"171":2,"173":2,"198":1,"199":5,"204":2,"226":1,"236":2,"246":1,"254":1,"255":2,"265":2,"266":2,"336":1,"356":1,"357":2,"377":1,"379":1,"380":1,"381":8,"382":1,"383":1,"393":1,"394":1,"415":1,"416":5,"420":2}}],["imagehashbytes32hash",{"2":{"339":1,"343":1}}],["imagehash",{"2":{"338":3,"340":1,"342":2,"343":3,"349":3,"352":4}}],["images",{"0":{"308":1},"2":{"13":1,"308":1,"309":1,"318":1}}],["image",{"2":{"6":7,"173":2,"185":3,"308":1,"309":1}}],["iterate",{"2":{"356":2,"357":2,"358":1}}],["items",{"2":{"307":1}}],["item",{"0":{"306":1},"1":{"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1},"2":{"164":2,"308":1,"313":1}}],["itself",{"2":{"110":1,"212":1,"213":1,"335":1,"336":1,"343":1,"347":2,"380":1,"412":1,"428":1,"429":1}}],["its",{"2":{"93":1,"133":1,"173":1,"198":1,"266":1,"415":1}}],["it",{"0":{"141":1,"171":1},"2":{"30":4,"33":2,"35":3,"46":2,"49":2,"51":1,"52":1,"53":3,"61":1,"63":1,"93":1,"102":1,"103":1,"115":3,"116":3,"117":1,"118":3,"124":3,"126":1,"129":1,"135":5,"136":1,"140":1,"142":2,"143":2,"150":5,"152":1,"153":2,"157":2,"160":1,"164":2,"165":1,"172":1,"173":1,"198":1,"201":1,"205":1,"218":1,"220":1,"224":1,"230":1,"232":1,"234":1,"240":1,"241":1,"244":1,"260":1,"266":1,"268":1,"271":1,"274":1,"275":1,"281":1,"298":1,"299":3,"300":1,"301":1,"302":2,"304":1,"309":2,"314":1,"315":1,"316":3,"317":3,"319":1,"329":1,"332":3,"333":1,"335":1,"343":2,"346":1,"349":3,"350":1,"351":1,"368":2,"369":5,"370":3,"377":1,"379":1,"388":2,"389":2,"393":1,"394":2,"404":1,"405":1,"415":1,"417":1,"421":1,"434":1}}],["iethclient",{"2":{"279":2,"280":1}}],["ie",{"2":{"6":1,"8":1,"181":1}}],["i",{"0":{"265":1,"266":1},"2":{"6":1,"41":1,"95":1,"124":1}}],["isthis",{"2":{"382":2}}],["issenttransactionresponse",{"2":{"393":3,"394":2}}],["issessionvalid",{"2":{"387":2}}],["issignedin",{"2":{"381":1}}],["issued",{"2":{"394":1}}],["issuer",{"2":{"382":2}}],["issue",{"2":{"264":1}}],["islisting",{"2":{"323":1}}],["ismounted",{"2":{"265":2}}],["isbound",{"2":{"152":1}}],["isn",{"2":{"116":1,"143":1}}],["isconnected",{"2":{"71":2}}],["isvalidsignature",{"2":{"358":3}}],["isvalidbooltrue",{"2":{"340":1}}],["isvalidimage",{"0":{"338":1},"1":{"339":1,"340":1},"2":{"338":1}}],["isvalidmessagesignature",{"2":{"207":1,"423":1}}],["isvalidethauthproof",{"2":{"49":1}}],["isvalid",{"2":{"49":2,"207":2,"338":1,"358":2,"387":2,"423":2}}],["is",{"2":{"4":1,"5":1,"6":4,"7":1,"8":1,"30":4,"32":2,"33":3,"35":2,"41":2,"42":2,"43":1,"44":1,"46":2,"49":6,"53":2,"60":2,"61":1,"62":4,"63":1,"64":1,"68":1,"69":1,"78":1,"92":1,"95":2,"99":1,"106":2,"107":3,"109":1,"110":3,"115":4,"116":2,"117":2,"118":3,"120":1,"124":1,"126":2,"127":3,"128":4,"129":3,"131":1,"133":1,"135":2,"136":2,"137":3,"138":2,"139":4,"140":3,"141":1,"142":1,"143":1,"145":1,"150":1,"152":9,"153":2,"158":1,"159":2,"160":1,"164":2,"165":2,"166":3,"169":1,"172":6,"173":2,"178":2,"180":1,"182":1,"186":1,"187":1,"188":1,"191":1,"195":6,"198":3,"199":3,"201":2,"211":1,"212":3,"213":3,"214":1,"216":1,"217":4,"218":1,"219":2,"220":1,"221":1,"224":1,"225":1,"226":1,"228":1,"229":1,"231":1,"233":3,"234":1,"235":1,"236":1,"238":1,"239":1,"242":1,"243":3,"244":1,"245":1,"250":1,"251":1,"259":1,"260":1,"261":2,"262":1,"264":4,"265":5,"266":5,"267":2,"269":1,"270":2,"271":2,"276":5,"277":5,"278":1,"279":1,"281":4,"286":1,"290":1,"298":1,"299":3,"301":1,"304":2,"314":1,"315":1,"317":2,"319":1,"325":1,"332":1,"336":1,"337":2,"338":2,"341":1,"342":1,"343":4,"344":4,"345":2,"346":1,"347":1,"348":2,"349":4,"350":1,"351":1,"352":3,"356":2,"357":2,"358":5,"368":3,"369":2,"370":4,"376":2,"377":1,"379":1,"380":3,"381":7,"385":1,"387":1,"388":1,"389":4,"391":1,"393":1,"394":3,"398":1,"400":1,"408":2,"409":3,"411":1,"412":3,"415":3,"416":3,"417":2,"427":1,"428":3,"429":3,"430":1,"432":1,"433":4,"434":1,"435":2}}],["iframe",{"2":{"13":1}}],["if",{"2":{"2":1,"6":1,"7":1,"33":1,"35":7,"36":1,"41":3,"42":2,"49":9,"51":1,"52":1,"54":1,"66":1,"84":1,"92":2,"99":1,"106":1,"107":2,"109":2,"110":2,"114":2,"115":1,"116":4,"117":1,"124":2,"126":2,"127":2,"129":2,"130":1,"132":1,"134":1,"135":3,"138":2,"139":2,"150":2,"152":2,"159":1,"160":2,"164":1,"166":1,"167":1,"172":3,"173":4,"186":1,"187":1,"188":1,"191":1,"192":1,"195":2,"199":3,"202":1,"207":1,"209":2,"210":1,"219":3,"220":2,"223":1,"225":1,"231":1,"242":1,"265":1,"276":4,"277":4,"278":2,"279":1,"281":1,"299":1,"300":2,"301":2,"302":2,"303":1,"316":1,"319":1,"329":1,"335":1,"338":1,"340":1,"343":1,"346":1,"349":1,"351":1,"352":1,"356":1,"357":1,"358":3,"370":1,"379":1,"381":1,"386":1,"388":2,"389":2,"393":2,"394":2,"398":1,"402":1,"408":1,"409":2,"411":2,"412":2,"416":3,"418":1,"423":1,"425":2,"426":1,"435":3}}],["inactive",{"2":{"370":1}}],["inherit",{"2":{"265":1,"305":1}}],["inherits",{"2":{"150":1}}],["incorrect",{"2":{"343":1}}],["increase",{"2":{"172":1}}],["increment",{"2":{"111":3,"145":3}}],["including",{"2":{"32":2,"93":1,"133":1,"229":1,"239":1,"298":1}}],["included",{"2":{"280":1,"393":1}}],["includedpaymentproviders",{"0":{"189":1},"2":{"173":2,"189":1}}],["includemetadata",{"2":{"168":2}}],["includes",{"2":{"35":1,"172":1,"382":1,"393":1}}],["includecontracts",{"2":{"33":1}}],["include",{"2":{"6":1,"33":1,"36":1,"76":1,"77":1,"128":1,"129":1,"136":1,"300":1,"343":1}}],["indicating",{"2":{"266":1}}],["individual",{"2":{"106":1,"408":1}}],["index",{"2":{"49":1,"393":1}}],["indexing",{"2":{"30":1}}],["indexeddb",{"2":{"108":2,"410":2}}],["indexes",{"2":{"30":2}}],["indexer",{"0":{"30":1,"165":1},"1":{"31":1,"32":1,"166":1,"167":1,"168":1,"169":1},"2":{"30":8,"33":3,"111":1,"137":3,"145":1,"165":4,"166":10,"167":6,"168":6,"169":1}}],["independently",{"2":{"368":1,"369":1,"370":1}}],["independent",{"2":{"8":1,"42":1,"106":2,"362":1,"408":2}}],["input",{"2":{"81":1,"128":1,"157":1,"343":1}}],["inputted",{"2":{"46":1}}],["inline",{"2":{"81":1}}],["involve",{"2":{"392":1}}],["involves",{"2":{"139":1}}],["invoking",{"0":{"72":1}}],["invoke",{"2":{"71":1}}],["invalid",{"2":{"52":1,"209":1,"334":1,"425":1}}],["investigate",{"2":{"2":1}}],["insecurely",{"2":{"149":1}}],["inspector",{"2":{"143":2}}],["instructions",{"2":{"162":1,"165":1}}],["instead",{"2":{"93":1,"106":1,"124":1,"198":1,"231":1,"242":1,"279":1,"300":1,"344":1,"378":1,"408":1,"415":1}}],["instantiating",{"2":{"173":1}}],["instantiate",{"2":{"54":1}}],["instances",{"2":{"390":1}}],["instance",{"2":{"61":1,"137":1,"173":2,"377":1,"380":2}}],["installing",{"0":{"68":1},"2":{"67":1,"116":1}}],["installation",{"0":{"59":1,"113":1,"147":1,"165":1,"166":1,"167":1,"168":1,"169":1,"225":1,"235":1,"245":1,"252":1,"375":1},"1":{"114":1,"115":1,"116":1,"148":1,"149":1,"166":1,"167":2,"168":2,"169":2}}],["install",{"0":{"99":1,"398":1},"1":{"100":1,"399":1},"2":{"44":1,"49":2,"54":2,"59":2,"68":5,"70":1,"86":3,"99":4,"104":1,"115":1,"167":2,"171":2,"172":1,"173":2,"194":1,"225":1,"231":2,"235":1,"242":2,"245":1,"252":1,"375":2,"398":2,"406":1}}],["installed",{"2":{"44":1,"100":1,"114":1,"172":1,"225":2,"235":1,"252":1,"399":1}}],["inside",{"2":{"8":1,"169":1}}],["initiateauth",{"2":{"380":1}}],["initiated",{"2":{"195":1}}],["initiating",{"2":{"258":1}}],["initialization",{"0":{"254":1}}],["initializes",{"2":{"266":1}}],["initialized",{"2":{"92":1,"254":1,"255":1,"266":1}}],["initialize",{"0":{"204":1,"420":1},"2":{"35":1,"44":2,"344":1}}],["initial",{"2":{"157":1,"332":1,"333":1}}],["initwallet",{"2":{"173":2}}],["init",{"2":{"44":3}}],["infura",{"2":{"199":2,"416":2}}],["informs",{"2":{"266":1}}],["informed",{"2":{"110":1,"412":1}}],["information",{"2":{"30":1,"59":1,"99":1,"109":1,"149":3,"166":1,"266":1,"375":1,"411":1}}],["info",{"2":{"34":1,"36":1,"43":1,"44":1,"110":1,"124":2,"173":1,"337":1,"412":1}}],["infrastructure",{"2":{"30":1,"62":1,"170":2,"217":1,"433":1}}],["int256",{"2":{"301":1}}],["int",{"2":{"129":1,"289":1,"301":1}}],["into",{"0":{"221":1,"400":1},"1":{"222":1,"401":1},"2":{"44":1,"45":1,"49":1,"64":1,"66":2,"99":1,"115":1,"116":1,"124":1,"135":1,"136":1,"139":1,"150":2,"157":1,"158":1,"165":1,"170":1,"185":1,"221":1,"223":2,"232":1,"241":1,"266":1,"276":1,"277":1,"281":1,"301":1,"310":1,"398":1,"400":1,"402":2}}],["integers",{"2":{"301":1}}],["integer",{"2":{"191":1,"290":1,"301":2}}],["integrity",{"2":{"177":1,"198":1,"415":1}}],["integration",{"0":{"86":1,"152":1,"156":1,"264":1},"1":{"87":1,"88":1,"89":1,"90":1,"157":1,"158":1,"159":1,"160":1},"2":{"65":1,"94":1,"95":1,"111":1,"145":1,"174":1,"222":1,"250":1,"401":1}}],["integrating",{"2":{"8":1,"64":1,"105":1,"173":1,"221":1,"324":1,"400":1,"407":1}}],["integrated",{"2":{"111":1,"169":1,"189":1,"190":1}}],["integrate",{"0":{"14":1,"19":1,"20":1,"25":1,"28":1,"29":1,"221":1,"400":1},"1":{"222":1,"401":1},"2":{"2":1,"65":1,"66":1,"86":1,"91":1,"103":1,"165":1,"166":1,"219":1,"222":1,"223":1,"366":1,"401":1,"402":1,"405":1,"435":1}}],["intent",{"2":{"124":19,"173":3,"369":1}}],["intend",{"2":{"110":1,"412":1}}],["internally",{"2":{"338":1}}],["internal",{"2":{"338":1,"368":1}}],["interchangeably",{"2":{"271":1}}],["intercepted",{"2":{"157":1}}],["interpret",{"2":{"202":1,"418":1}}],["interoperability",{"2":{"172":1}}],["intermediate",{"2":{"164":1}}],["interfacing",{"2":{"68":1}}],["interface",{"2":{"8":1,"35":1,"41":1,"49":1,"54":2,"137":1,"195":1,"211":2,"212":2,"213":2,"214":3,"269":2,"271":1,"272":1,"279":1,"280":1,"305":1,"337":3,"427":2,"428":2,"429":2,"430":3}}],["interacting",{"2":{"89":1,"128":1,"135":1,"301":1,"304":1}}],["interactions",{"0":{"130":1,"132":1,"134":1},"2":{"130":1,"132":1,"134":1,"202":1,"418":1}}],["interaction",{"2":{"43":1,"208":1,"424":1}}],["interact",{"2":{"4":1,"53":1,"61":1,"305":1,"368":1,"377":1,"378":1}}],["introduction",{"0":{"111":1,"145":1,"267":1,"307":1},"1":{"112":1,"146":1,"268":1}}],["introduced",{"2":{"33":1}}],["introducing",{"2":{"30":1,"165":1}}],["intro",{"0":{"0":1},"2":{"1":1}}],["in",{"0":{"9":1,"11":1,"17":1,"18":1,"23":1,"24":1,"51":1,"78":1,"91":1,"119":1,"120":1,"306":1,"379":1,"380":1},"1":{"79":1,"80":1,"81":1,"82":1,"83":1,"92":1,"121":1,"122":1,"123":1,"124":1,"125":1,"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"380":1,"381":1},"2":{"2":3,"6":4,"8":3,"30":4,"32":3,"33":2,"35":2,"36":1,"42":5,"43":2,"44":7,"45":1,"46":6,"48":1,"49":6,"50":2,"54":1,"62":3,"64":1,"67":2,"71":2,"76":1,"78":1,"79":2,"80":2,"81":2,"82":4,"83":3,"84":4,"86":1,"90":1,"92":1,"93":1,"105":1,"107":1,"108":2,"109":1,"110":1,"111":1,"112":3,"114":4,"115":2,"116":6,"117":5,"118":1,"119":2,"120":5,"121":2,"122":2,"124":7,"126":3,"127":1,"128":2,"129":1,"131":1,"133":4,"135":6,"136":2,"138":1,"139":4,"140":3,"143":7,"145":4,"148":2,"149":3,"150":6,"152":6,"153":1,"157":2,"158":2,"160":1,"162":2,"164":5,"165":1,"166":1,"167":1,"168":1,"173":2,"178":2,"183":2,"186":2,"187":2,"188":2,"189":1,"190":1,"195":1,"198":3,"199":3,"201":1,"202":2,"205":1,"209":1,"211":1,"212":2,"213":2,"214":1,"216":1,"217":3,"219":2,"220":1,"221":1,"229":1,"239":1,"249":1,"261":1,"264":2,"265":4,"266":7,"267":7,"269":2,"276":1,"277":1,"278":1,"279":2,"280":2,"281":2,"282":1,"284":1,"285":2,"286":1,"287":2,"289":1,"290":1,"291":1,"296":1,"297":1,"298":1,"299":1,"300":3,"301":1,"307":1,"308":1,"309":1,"312":1,"317":1,"319":1,"321":1,"324":1,"327":1,"334":1,"337":1,"338":1,"343":1,"345":1,"346":1,"352":2,"357":1,"362":1,"367":1,"368":1,"369":1,"370":4,"379":3,"380":2,"381":1,"385":1,"386":2,"393":1,"400":1,"407":1,"409":1,"410":2,"411":1,"412":1,"415":3,"416":3,"417":1,"418":2,"421":1,"425":1,"427":1,"428":2,"429":2,"430":1,"432":1,"433":3,"435":2}}],["ffailurecallback",{"2":{"160":1}}],["fsequenceerror",{"2":{"160":2}}],["fstoredcredentials",{"2":{"159":1}}],["fstring",{"2":{"152":4,"153":1,"154":1,"159":1,"160":2}}],["fscriptdelegate",{"2":{"152":1}}],["fcredentials",{"2":{"150":1,"152":2,"159":2}}],["fly",{"2":{"308":1}}],["flexible",{"2":{"172":1,"330":1}}],["flexibility",{"2":{"116":1}}],["flagged",{"2":{"346":1}}],["flag",{"2":{"159":1,"181":1}}],["floating",{"2":{"128":1}}],["flows",{"2":{"384":1}}],["flow",{"2":{"120":1,"195":1}}],["fashion",{"2":{"357":1}}],["fast",{"2":{"4":1,"5":1,"8":1,"30":1}}],["false",{"0":{"345":1},"2":{"173":2,"192":1,"344":2,"350":1,"381":1,"382":1,"387":1,"388":2,"389":1,"391":1,"394":1}}],["fauthenticatorconfig",{"2":{"162":1}}],["failing",{"2":{"394":1}}],["fails",{"2":{"164":1,"276":1,"277":1,"346":1,"394":2}}],["failedtransactionresponse",{"2":{"394":1}}],["failedtransactionreturn",{"2":{"127":1}}],["failed",{"0":{"394":1},"2":{"392":2,"393":1}}],["failedcontractdeploymentreturn",{"2":{"139":1}}],["fail",{"2":{"136":1,"164":1,"170":1,"267":1,"276":1,"277":1}}],["failure",{"2":{"117":1,"149":1,"299":1}}],["failures",{"2":{"30":1}}],["familiar",{"2":{"66":1,"135":1,"172":1,"223":1,"366":1,"402":1}}],["facet",{"2":{"367":1}}],["facebook",{"2":{"65":1,"82":1,"93":1,"120":1,"186":1,"222":1,"379":1,"386":1,"401":1}}],["facilitate",{"2":{"85":1}}],["factual",{"2":{"337":1,"352":1}}],["factory",{"2":{"332":1,"333":1,"337":1,"344":2,"361":1}}],["fact",{"2":{"30":1,"62":1,"106":1,"217":1,"408":1,"433":1}}],["feb",{"2":{"363":1}}],["feature",{"2":{"86":1,"170":1,"264":1,"266":2,"310":1}}],["features",{"0":{"65":1,"222":1,"401":1},"2":{"4":1,"8":1,"30":1,"111":1,"115":1,"145":1,"219":2,"435":2}}],["feehistoryresult",{"2":{"289":2}}],["feehistory",{"0":{"289":1},"2":{"289":2}}],["feel",{"2":{"94":1,"116":1,"118":1,"140":1,"220":1}}],["fee",{"2":{"35":1,"36":1,"294":1}}],["feeoption",{"2":{"35":1,"41":1}}],["fees",{"2":{"35":3,"41":1,"289":1,"330":1}}],["few",{"2":{"32":1,"65":1,"115":1,"141":1,"143":1,"158":1,"164":1,"222":1,"401":1}}],["fetching",{"2":{"140":1}}],["fetch",{"0":{"13":1},"2":{"32":4,"49":1,"171":2}}],["freshly",{"2":{"315":1}}],["frequent",{"2":{"202":1,"418":1}}],["free",{"2":{"7":1,"8":1,"30":1,"94":1,"118":1,"140":1,"165":1,"220":1}}],["framework",{"2":{"145":1}}],["friendlyname",{"2":{"382":2}}],["friendly",{"2":{"95":1}}],["from",{"0":{"137":1,"200":1},"2":{"2":1,"4":1,"6":1,"13":1,"30":6,"32":1,"33":2,"35":3,"41":2,"42":2,"43":1,"44":1,"46":5,"49":5,"50":1,"52":1,"53":2,"54":5,"61":1,"69":6,"70":8,"71":3,"72":1,"84":1,"86":1,"87":1,"93":1,"94":1,"102":1,"103":1,"106":1,"108":1,"109":1,"114":3,"119":1,"124":1,"126":1,"127":2,"129":1,"133":1,"135":2,"137":1,"138":2,"139":3,"148":1,"150":1,"152":1,"153":4,"159":2,"164":1,"166":1,"167":3,"170":1,"171":2,"172":1,"173":2,"192":1,"195":4,"198":3,"199":5,"202":2,"204":2,"210":1,"212":2,"213":2,"214":2,"219":2,"226":1,"236":2,"246":1,"254":1,"255":3,"265":2,"266":1,"278":1,"279":1,"285":1,"300":1,"302":1,"305":1,"307":1,"308":1,"309":1,"316":1,"332":1,"335":1,"336":1,"343":1,"356":1,"357":2,"367":1,"368":1,"369":2,"370":1,"377":1,"379":1,"380":2,"381":10,"382":1,"383":2,"391":1,"393":1,"394":1,"404":1,"405":1,"408":1,"410":1,"411":1,"415":3,"416":5,"418":2,"420":2,"426":1,"428":2,"429":2,"430":2,"435":2}}],["frontend",{"2":{"8":1,"370":2}}],["front",{"2":{"2":1}}],["fixedbyte",{"2":{"301":1}}],["fixed",{"2":{"301":1,"337":1}}],["fixing",{"2":{"264":1}}],["filter",{"2":{"124":9}}],["fill",{"2":{"117":1,"317":1}}],["files",{"0":{"310":1},"2":{"115":2,"308":1,"309":3,"310":1,"311":1,"315":1}}],["file",{"2":{"6":1,"51":1,"116":1,"124":2,"148":1,"162":1,"164":2,"308":1,"309":1,"317":1,"381":1}}],["fit",{"2":{"116":2,"268":1}}],["fiat",{"0":{"105":1,"324":1,"407":1}}],["fields",{"2":{"92":1,"393":1}}],["field",{"2":{"89":1,"90":1,"93":1,"121":1,"122":1,"162":1}}],["firm",{"2":{"133":1}}],["first",{"0":{"344":1},"1":{"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"351":1,"352":1},"2":{"44":1,"46":2,"53":1,"93":1,"107":1,"112":1,"124":1,"130":1,"132":1,"134":1,"139":1,"164":1,"173":1,"308":2,"344":1,"349":2,"409":1}}],["fires",{"2":{"159":1}}],["fired",{"2":{"152":1}}],["fire",{"2":{"8":1,"153":2,"154":1}}],["finishvalidatesession",{"2":{"388":2}}],["finishes",{"2":{"349":2}}],["finished",{"2":{"164":1,"195":1}}],["finalizeauth",{"2":{"380":1}}],["finalize",{"0":{"318":1}}],["finally",{"2":{"6":1,"45":1,"48":1,"53":1,"54":1,"153":1,"317":1}}],["fingerprints",{"2":{"162":1}}],["findobjectoftype",{"2":{"118":1}}],["finding",{"2":{"115":1}}],["findsupportednetwork",{"2":{"49":2,"54":4}}],["find",{"2":{"6":1,"35":5,"41":1,"46":1,"150":1,"166":1,"198":1,"351":1,"352":1,"415":1}}],["focus",{"2":{"315":1}}],["folder",{"0":{"311":1},"2":{"44":2,"45":1,"114":2,"115":2,"117":4,"150":7,"164":2,"264":3,"266":2,"310":4,"311":2,"316":1,"317":1}}],["follows",{"2":{"54":1,"111":1,"145":1,"195":1,"356":1}}],["follow",{"2":{"36":1,"44":1,"46":1,"48":1,"52":1,"69":1,"86":1,"166":1,"185":1}}],["following",{"2":{"5":1,"6":1,"35":1,"36":1,"41":1,"43":2,"46":2,"47":1,"51":1,"54":1,"124":1,"126":1,"143":1,"148":1,"157":1,"158":1,"161":1,"162":1,"163":1,"164":2,"171":1,"199":1,"225":1,"231":1,"242":1,"307":1,"349":1,"370":1,"378":1,"416":1}}],["found",{"2":{"35":9,"115":1,"117":1,"140":2,"148":1,"150":1,"209":1,"265":1,"266":2,"280":1,"425":1}}],["force",{"2":{"181":1}}],["forward",{"2":{"150":2,"154":1}}],["forwarder",{"2":{"150":1}}],["formerly",{"2":{"362":1}}],["forms",{"2":{"325":1}}],["form",{"2":{"128":1,"140":1,"326":1}}],["format",{"2":{"119":1,"128":1,"129":2,"135":4,"278":2,"281":2,"282":1,"284":1,"285":1,"286":1,"287":2,"289":1,"290":1,"291":1,"319":1}}],["forum",{"2":{"124":1}}],["foreach",{"2":{"69":1,"70":1}}],["forget",{"2":{"8":1,"143":1}}],["for",{"0":{"46":1,"99":1,"197":1,"219":1,"390":1,"414":1,"435":1},"1":{"47":1,"48":1,"100":1},"2":{"2":1,"5":1,"6":4,"7":1,"8":4,"30":2,"32":2,"33":1,"34":1,"35":7,"36":2,"41":3,"42":4,"43":1,"44":1,"46":1,"47":1,"49":1,"50":2,"54":1,"59":2,"62":1,"63":2,"64":1,"68":2,"69":3,"73":1,"76":2,"82":1,"83":1,"89":1,"92":3,"95":3,"99":2,"106":1,"107":3,"110":2,"111":2,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"124":2,"126":1,"127":3,"128":2,"130":3,"132":3,"133":1,"134":3,"135":1,"136":2,"138":2,"139":2,"140":2,"145":1,"150":2,"152":2,"157":2,"161":1,"162":2,"163":1,"166":3,"167":3,"168":3,"170":2,"172":4,"173":1,"176":1,"177":1,"178":1,"180":1,"191":1,"193":1,"195":2,"198":1,"199":3,"202":3,"216":1,"217":1,"218":2,"219":2,"220":4,"221":1,"230":2,"232":2,"233":4,"239":1,"240":2,"241":2,"243":5,"251":1,"259":1,"262":1,"264":4,"266":1,"267":2,"270":1,"272":1,"273":1,"275":1,"277":1,"279":1,"280":1,"281":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"294":1,"297":1,"298":2,"299":2,"300":1,"301":2,"304":2,"305":3,"307":2,"308":1,"309":2,"310":1,"315":2,"316":2,"317":1,"319":1,"329":1,"337":1,"343":3,"349":2,"351":1,"352":1,"356":1,"357":1,"358":1,"366":1,"369":1,"375":2,"379":1,"380":1,"382":1,"385":1,"387":2,"390":2,"391":1,"393":1,"400":1,"408":1,"409":3,"412":2,"415":1,"416":3,"418":3,"432":1,"433":1,"434":2,"435":2}}],["future",{"2":{"35":1}}],["fungible",{"2":{"129":1,"131":1,"133":1}}],["funding",{"2":{"191":1,"192":1}}],["funds",{"2":{"173":1,"334":1,"348":1}}],["fund",{"2":{"36":1}}],["funded",{"2":{"35":1}}],["functionnameasstring",{"2":{"135":2,"136":1}}],["functions",{"0":{"300":1},"2":{"127":1,"130":1,"132":1,"134":1,"139":1,"157":1,"207":1,"232":1,"241":1,"423":1}}],["function",{"2":{"35":1,"41":1,"49":1,"54":1,"69":1,"70":1,"92":1,"93":1,"126":1,"128":1,"135":5,"138":1,"149":2,"150":2,"171":3,"198":1,"211":2,"212":2,"213":2,"214":3,"219":1,"266":1,"299":3,"300":1,"334":1,"338":2,"342":1,"344":1,"358":1,"381":5,"382":1,"415":1,"427":2,"428":2,"429":2,"430":3,"435":1}}],["functionality",{"2":{"137":1,"158":1,"195":1,"211":1,"212":1,"213":1,"220":1,"325":1,"329":1,"345":1,"427":1,"428":1,"429":1}}],["functional",{"2":{"4":1,"366":1,"381":1}}],["full",{"2":{"31":1,"42":1,"54":1,"82":1,"83":1,"95":1,"111":1,"145":1,"166":1,"181":1,"193":1,"265":1,"266":1,"393":1,"394":1}}],["fully",{"2":{"4":1,"137":1,"261":1,"299":1,"366":1}}],["further",{"2":{"2":1,"173":1}}],["w3c",{"2":{"172":1}}],["wyre",{"2":{"105":1,"407":1}}],["won",{"2":{"368":1}}],["wooden",{"2":{"316":1}}],["wouldn",{"2":{"370":1}}],["would",{"2":{"49":1,"54":1,"95":1,"109":1,"110":1,"135":1,"139":1,"173":1,"228":1,"238":1,"300":1,"302":1,"411":1,"412":1}}],["world",{"2":{"44":1,"45":1,"64":1,"221":1,"356":1,"400":1}}],["worried",{"2":{"34":1,"43":1}}],["workflow",{"2":{"198":1,"415":1}}],["works",{"0":{"141":1},"2":{"102":1,"103":1,"118":2,"135":1,"172":1,"173":3,"185":1,"216":1,"404":1,"405":1,"432":1}}],["working",{"2":{"46":1,"126":1,"127":1,"138":1,"139":1,"265":1,"267":1,"268":1,"278":1}}],["workers",{"0":{"27":1},"2":{"45":1,"52":1,"53":1}}],["worker",{"2":{"13":1,"43":1,"44":1,"49":1,"52":1,"53":1}}],["work",{"2":{"6":1,"33":1,"94":1,"112":1,"116":1,"117":1,"120":1,"140":1,"172":4,"220":2,"281":1,"317":1,"380":1}}],["wrapping",{"2":{"159":1,"267":2}}],["wrappers",{"2":{"92":1,"116":1,"304":3}}],["wrapper",{"0":{"69":1,"70":1},"2":{"69":2,"70":1,"74":1,"130":1,"132":1,"134":1,"137":1,"139":1,"266":6,"304":1,"305":1}}],["wrap",{"2":{"69":1,"266":2}}],["wrangler=",{"2":{"44":1}}],["wrangler",{"0":{"44":1,"51":1},"1":{"45":1},"2":{"43":2,"44":8,"45":1,"50":1,"51":1,"52":1}}],["writing",{"2":{"160":1}}],["written",{"2":{"62":1,"199":1,"216":1,"217":1,"219":1,"416":1,"432":1,"433":1,"435":1}}],["write",{"0":{"127":1},"1":{"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1},"2":{"46":2,"116":1,"127":1,"315":1,"316":1,"318":1}}],["wrong",{"2":{"49":2,"192":2}}],["w",{"2":{"35":2}}],["why",{"0":{"264":1,"325":1},"1":{"326":1,"327":1,"328":1,"329":1,"330":1,"331":1}}],["who",{"2":{"172":1,"370":1,"386":1}}],["whole",{"2":{"128":1,"136":1,"276":1,"277":1,"346":1}}],["whistles",{"2":{"267":1}}],["whitespace",{"2":{"135":1}}],["while",{"2":{"103":1,"110":1,"111":1,"139":1,"144":1,"145":1,"172":1,"183":1,"195":1,"198":1,"202":1,"264":1,"267":1,"276":1,"277":1,"299":1,"344":1,"366":1,"368":1,"405":1,"412":1,"415":1,"418":1}}],["which",{"2":{"6":1,"8":2,"33":3,"35":1,"42":1,"45":1,"46":1,"47":1,"63":1,"82":1,"83":1,"84":1,"95":1,"103":1,"105":2,"127":1,"137":1,"138":1,"139":2,"143":2,"150":1,"154":1,"157":1,"172":1,"175":1,"193":1,"195":1,"198":2,"211":1,"212":1,"213":1,"216":1,"218":1,"231":1,"232":2,"241":2,"242":1,"243":2,"249":1,"265":1,"266":4,"272":1,"276":1,"277":1,"298":1,"300":1,"305":1,"324":2,"325":1,"335":1,"338":1,"343":1,"351":1,"367":1,"405":1,"407":2,"415":2,"427":1,"428":1,"429":1,"432":1,"434":1}}],["whether",{"2":{"81":1,"183":1,"192":1,"232":1,"241":1,"358":1,"386":1,"389":1}}],["where",{"2":{"46":1,"126":1,"128":1,"135":1,"139":1,"152":1,"157":1,"159":2,"160":2,"185":1,"201":1,"219":1,"267":1,"301":1,"315":1,"417":1,"435":1}}],["whereby",{"2":{"8":1}}],["whenever",{"2":{"305":1,"378":1}}],["when",{"0":{"264":1},"2":{"33":1,"53":1,"93":1,"107":1,"112":1,"115":2,"116":1,"117":1,"118":1,"127":1,"128":1,"130":1,"132":1,"134":1,"135":2,"136":1,"138":1,"139":1,"153":1,"159":1,"164":1,"173":2,"174":1,"185":1,"190":1,"198":1,"232":1,"241":1,"258":1,"265":1,"266":2,"267":4,"268":1,"281":1,"299":2,"300":1,"301":1,"304":1,"344":1,"349":2,"358":1,"369":1,"381":2,"386":1,"389":2,"391":1,"409":1,"415":1}}],["whatever",{"2":{"154":1}}],["what",{"2":{"32":2,"46":1,"266":1,"315":1,"329":1,"345":1,"369":1}}],["width=",{"2":{"381":1}}],["width",{"2":{"157":1}}],["wip",{"2":{"152":2,"155":1}}],["wish",{"2":{"115":1,"127":1,"135":1,"138":1,"139":1,"150":2,"159":1,"302":1,"305":1,"386":1}}],["windows",{"2":{"122":2,"152":2,"161":1}}],["window",{"0":{"51":1},"2":{"51":1,"114":2,"116":2,"121":1,"122":1,"124":1,"173":1,"182":1}}],["will",{"2":{"6":4,"8":2,"33":4,"34":1,"35":9,"41":2,"43":1,"44":1,"46":2,"60":1,"65":1,"67":1,"70":1,"71":1,"81":1,"82":2,"83":2,"84":2,"91":1,"103":1,"105":2,"110":2,"111":3,"114":3,"115":2,"116":5,"117":4,"118":2,"119":1,"126":1,"128":1,"135":1,"136":1,"137":1,"140":2,"145":3,"148":1,"149":2,"150":1,"153":2,"154":1,"157":4,"162":1,"164":1,"172":3,"173":2,"175":1,"177":1,"179":1,"181":1,"182":1,"183":2,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"192":1,"195":1,"198":3,"210":1,"220":1,"222":1,"229":1,"230":1,"239":1,"240":1,"248":1,"249":1,"257":1,"258":1,"264":1,"265":1,"266":2,"270":1,"276":4,"277":4,"279":1,"280":1,"281":2,"298":2,"299":3,"300":1,"301":1,"311":1,"313":1,"316":4,"317":2,"324":2,"334":1,"335":1,"343":2,"346":1,"349":1,"356":2,"357":2,"358":1,"369":3,"376":1,"380":3,"388":1,"392":1,"393":1,"394":4,"401":1,"405":1,"407":2,"412":2,"415":3,"426":1}}],["without",{"2":{"30":1,"34":1,"36":1,"41":1,"42":2,"43":1,"115":1,"127":1,"136":1,"138":1,"139":1,"172":1,"173":2,"201":1,"202":1,"208":2,"267":1,"343":1,"350":1,"392":1,"417":1,"418":1,"424":2}}],["within",{"2":{"6":1,"65":1,"69":1,"115":2,"127":1,"138":1,"139":1,"150":1,"164":1,"172":1,"222":1,"329":1,"369":1,"388":1,"401":1}}],["with",{"0":{"14":1,"20":1,"36":1,"44":1,"46":1,"67":1,"126":1,"173":1,"193":1,"194":1,"196":1,"200":1,"203":1,"208":1,"215":1,"264":1,"265":1,"266":1,"413":1,"419":1,"424":1,"431":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"45":1,"47":1,"48":1,"68":1,"197":1,"198":1,"199":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"216":1,"217":1,"218":1,"219":1,"414":1,"415":1,"416":1,"420":1,"421":1,"422":1,"423":1,"424":1,"425":1,"432":1,"433":1,"434":1,"435":1},"2":{"2":2,"4":1,"6":2,"7":1,"8":2,"13":1,"30":3,"33":4,"34":1,"35":2,"36":2,"42":1,"43":4,"44":2,"46":3,"47":1,"49":1,"52":1,"53":5,"54":1,"57":1,"59":1,"60":1,"61":1,"62":1,"64":2,"65":3,"66":1,"68":1,"69":1,"76":1,"89":2,"91":1,"92":1,"94":1,"95":1,"98":1,"99":2,"102":1,"103":1,"105":1,"106":1,"107":3,"108":1,"111":1,"114":3,"115":4,"116":2,"117":3,"118":4,"119":2,"120":1,"124":4,"126":5,"127":3,"128":2,"130":5,"132":5,"134":5,"135":4,"138":2,"139":3,"143":2,"144":1,"145":1,"152":2,"153":2,"154":3,"157":2,"160":1,"165":1,"166":4,"170":1,"171":2,"172":4,"173":1,"174":1,"184":1,"186":2,"187":2,"198":2,"199":2,"202":1,"206":1,"211":1,"212":1,"213":1,"217":1,"219":2,"220":4,"221":2,"222":3,"223":1,"224":2,"225":1,"232":4,"233":2,"234":1,"241":4,"243":2,"244":1,"251":1,"260":2,"261":2,"264":2,"265":2,"266":6,"267":2,"268":1,"271":2,"278":1,"280":1,"281":1,"282":1,"300":1,"301":1,"304":2,"305":2,"307":1,"309":1,"316":1,"318":1,"319":1,"322":1,"324":1,"334":1,"356":1,"358":2,"362":1,"366":2,"368":2,"369":3,"370":2,"373":1,"375":1,"376":1,"377":1,"378":1,"379":2,"380":3,"381":1,"383":1,"384":1,"385":1,"388":2,"397":1,"398":1,"400":2,"401":3,"402":1,"404":1,"405":1,"407":1,"408":1,"409":3,"410":1,"415":2,"416":2,"418":1,"422":1,"427":1,"428":1,"429":1,"433":1,"435":2}}],["warning",{"2":{"334":1,"349":1}}],["wagmiclient",{"2":{"266":2}}],["wagmiconfig",{"2":{"69":3,"70":4,"86":2,"93":3,"226":1,"266":2}}],["wagmiwrapper",{"2":{"266":6}}],["wagmiprovider",{"2":{"69":1,"70":1,"266":1}}],["wagmi",{"0":{"224":1,"231":1,"242":1},"1":{"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1},"2":{"64":1,"68":4,"69":5,"70":2,"71":2,"82":1,"83":1,"92":3,"93":1,"220":1,"221":1,"224":3,"225":5,"226":2,"231":4,"232":3,"233":5,"241":5,"242":4,"243":4,"264":2,"265":5,"266":4,"400":1}}],["waitfortransactionreceipt",{"0":{"297":1},"2":{"297":1}}],["waits",{"2":{"275":1,"277":1}}],["wait",{"2":{"42":1,"164":1,"265":2,"297":1,"300":1}}],["wants",{"2":{"109":1,"411":1}}],["want",{"2":{"36":1,"42":1,"54":1,"115":1,"116":1,"126":1,"130":1,"132":1,"134":1,"135":3,"152":1,"164":1,"172":1,"183":1,"198":1,"210":1,"220":1,"281":2,"300":3,"303":1,"315":1,"319":1,"415":1,"426":1}}],["was",{"2":{"35":2,"41":1,"110":1,"115":2,"358":1,"362":1,"393":2,"412":1}}],["waasadapter",{"2":{"271":1}}],["waastowalletadapter",{"2":{"271":3,"276":2,"277":2}}],["waastenantkey",{"2":{"148":1}}],["waaswallet",{"2":{"126":4,"127":5,"128":1,"138":4,"139":9,"140":1,"271":3}}],["waaslogin",{"2":{"126":1}}],["waasconfigkey",{"2":{"61":1,"377":1,"379":1,"380":1,"381":1,"382":1,"383":1,"393":1,"394":1}}],["waas",{"0":{"14":1,"20":1,"126":1},"2":{"59":1,"61":4,"99":1,"115":1,"117":2,"118":1,"119":1,"126":2,"127":1,"128":1,"129":1,"130":3,"131":1,"132":3,"133":1,"134":3,"135":2,"136":1,"148":1,"375":1,"377":4,"378":1,"379":6,"380":6,"381":5,"382":5,"383":6,"387":1,"388":2,"389":1,"390":2,"391":1,"393":5,"394":5}}],["walk",{"2":{"6":1,"67":1,"91":1}}],["walletcontext",{"2":{"361":1}}],["walletconnectprojectid",{"2":{"69":1,"70":1}}],["walletconnect",{"0":{"195":1},"2":{"65":1,"172":1,"193":1,"195":4,"222":1,"401":1}}],["walletinterface",{"2":{"344":2}}],["walletpanel",{"2":{"140":1}}],["walletauthoptions",{"0":{"83":1},"2":{"93":2}}],["walletaddress",{"2":{"49":2,"381":2}}],["wallets",{"0":{"107":1,"221":1,"269":1,"325":1,"329":1,"400":1,"409":1},"1":{"108":1,"109":1,"110":1,"222":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"326":1,"327":1,"328":1,"329":1,"330":2,"331":1,"401":1,"410":1,"411":1,"412":1},"2":{"35":3,"63":1,"64":1,"65":1,"69":1,"82":1,"83":1,"91":1,"95":1,"110":1,"172":1,"218":1,"220":1,"221":1,"222":1,"228":1,"236":2,"238":1,"246":1,"271":1,"325":2,"329":3,"332":2,"333":1,"334":1,"337":1,"343":1,"344":1,"352":1,"355":1,"366":3,"367":1,"368":1,"369":1,"370":5,"400":1,"401":1,"412":1,"434":1}}],["walleteoa",{"2":{"35":4,"41":2,"46":2,"54":2}}],["wallet",{"0":{"3":1,"13":1,"54":1,"70":1,"72":1,"95":1,"102":1,"103":1,"104":1,"140":1,"172":1,"174":1,"194":1,"197":1,"198":1,"199":1,"201":1,"204":1,"220":1,"264":1,"265":1,"266":1,"332":1,"333":1,"337":1,"347":1,"352":1,"361":1,"366":1,"404":1,"405":1,"406":1,"414":1,"415":1,"416":1,"417":1,"420":1},"1":{"141":1,"142":1,"143":1,"144":1,"173":1,"174":1,"175":2,"176":2,"177":2,"178":2,"179":2,"180":2,"181":2,"182":2,"183":2,"184":2,"185":2,"186":2,"187":2,"188":2,"189":2,"190":2,"191":2,"192":2,"193":1,"194":1,"195":1,"333":1,"334":2,"335":2,"336":2,"337":1,"338":2,"339":2,"340":2,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"351":1,"352":1,"367":1,"368":1,"369":1,"370":1},"2":{"30":2,"32":3,"34":1,"35":17,"36":1,"41":3,"42":1,"43":1,"46":12,"49":3,"50":1,"52":2,"53":3,"54":2,"56":1,"57":1,"59":2,"60":3,"61":2,"65":3,"67":1,"68":3,"69":1,"70":4,"72":3,"83":3,"84":1,"95":6,"97":1,"99":2,"103":2,"105":2,"106":8,"107":3,"110":1,"111":2,"118":3,"126":2,"127":3,"128":2,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":2,"136":3,"138":3,"139":4,"140":2,"145":2,"172":12,"173":19,"174":2,"175":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":3,"183":2,"184":2,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"195":2,"197":3,"198":6,"199":1,"201":1,"202":5,"204":6,"205":1,"206":1,"207":3,"208":1,"210":2,"211":3,"212":3,"213":3,"214":2,"219":1,"220":2,"222":3,"224":2,"234":2,"239":1,"244":2,"248":1,"257":1,"258":1,"260":2,"261":3,"262":1,"264":3,"266":2,"269":1,"270":2,"273":2,"274":1,"275":1,"276":5,"277":5,"278":3,"281":3,"291":2,"298":2,"300":6,"303":1,"304":3,"317":1,"324":2,"325":1,"326":1,"332":1,"333":1,"334":3,"335":3,"336":5,"337":3,"338":3,"339":1,"340":1,"341":1,"342":2,"343":6,"344":6,"345":1,"346":2,"347":2,"349":3,"350":2,"351":3,"352":5,"356":6,"357":7,"358":2,"362":3,"366":5,"367":1,"368":2,"372":1,"373":1,"375":2,"376":3,"377":2,"378":1,"379":1,"380":1,"384":1,"394":3,"396":1,"401":3,"405":2,"407":2,"408":8,"409":3,"412":1,"414":3,"415":6,"416":1,"417":1,"418":5,"420":6,"421":1,"422":1,"423":3,"424":1,"426":2,"427":3,"428":3,"429":3,"430":2,"435":1}}],["ways",{"2":{"172":1,"369":1}}],["way",{"2":{"4":1,"35":3,"42":1,"94":1,"143":2,"202":1,"337":1,"344":1,"368":1,"418":1}}],["weight",{"2":{"343":1}}],["weights",{"2":{"338":1,"342":1}}],["weeds",{"2":{"281":1}}],["week",{"2":{"178":1}}],["were",{"2":{"202":1,"301":1,"370":1,"418":1}}],["went",{"2":{"49":2}}],["weth",{"2":{"35":1}}],["websocketprovider",{"2":{"266":1}}],["websocketpublicclient",{"2":{"226":1}}],["web2",{"2":{"172":1}}],["webgl",{"0":{"125":1},"2":{"112":1,"120":1}}],["web",{"0":{"28":1,"29":1,"102":1,"167":1,"404":1},"2":{"102":1,"103":1,"154":1,"162":3,"166":1,"172":3,"368":1,"404":1,"405":1}}],["webapps",{"2":{"165":1}}],["webapp",{"2":{"13":1,"166":1}}],["web3modal",{"0":{"260":1},"1":{"261":1,"262":1},"2":{"173":1,"193":1,"220":1,"260":3,"261":1,"262":2}}],["web3",{"0":{"193":1,"221":1,"244":1,"251":1,"400":1},"1":{"222":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"401":1},"2":{"2":1,"30":2,"51":1,"64":2,"65":2,"69":1,"83":1,"103":1,"169":2,"172":6,"220":3,"221":2,"222":2,"244":3,"245":2,"246":1,"250":1,"251":3,"252":1,"254":2,"255":1,"259":1,"313":1,"400":2,"401":2,"405":1}}],["we",{"2":{"2":1,"33":2,"36":1,"49":4,"54":1,"59":1,"67":1,"99":1,"110":1,"111":1,"115":3,"116":3,"117":1,"118":2,"120":2,"126":1,"130":1,"132":1,"133":1,"134":1,"135":2,"137":1,"139":2,"140":2,"142":1,"143":2,"144":2,"145":1,"152":1,"158":1,"160":3,"166":1,"167":1,"172":1,"198":1,"265":2,"266":3,"267":1,"280":1,"300":2,"302":2,"304":1,"305":2,"368":1,"375":1,"386":3,"412":1,"415":1}}],["well",{"2":{"2":1,"49":1,"110":1,"135":1,"162":1,"166":1,"210":1,"219":1,"300":2,"302":2,"305":1,"356":1,"357":1,"412":1,"426":1,"435":1}}],["turn",{"2":{"266":1}}],["turned",{"2":{"264":1}}],["tfunction",{"2":{"160":2}}],["tfunctions",{"2":{"160":2}}],["typically",{"2":{"127":1,"198":1,"202":1,"415":1,"418":1}}],["typical",{"2":{"127":1}}],["typeddata",{"2":{"357":2}}],["typed",{"2":{"357":1}}],["typedefault",{"2":{"84":1}}],["typedefaultbooleantrue",{"2":{"81":1}}],["typedefaultstringundefined",{"2":{"79":1,"80":1}}],["typedefaultstringcenter",{"2":{"77":1}}],["typedefaultstring",{"2":{"76":1,"82":1,"83":1}}],["typescript",{"2":{"44":1,"59":2,"99":2,"166":2,"199":1,"216":1,"375":2,"416":1,"432":1}}],["types",{"2":{"6":1,"127":1,"299":1}}],["type",{"0":{"301":1},"2":{"6":1,"49":2,"52":1,"53":1,"136":2,"152":1,"157":1,"159":1,"173":1,"302":1,"323":1,"357":3,"393":1,"394":1}}],["tmp",{"2":{"114":1,"116":1}}],["twitter",{"2":{"379":1}}],["twitch",{"2":{"82":1,"186":1}}],["two",{"2":{"60":1,"107":2,"118":1,"211":1,"212":1,"213":1,"281":1,"315":1,"325":1,"362":1,"369":1,"376":1,"384":1,"409":2,"427":1,"428":1,"429":1}}],["tsx",{"2":{"266":1,"381":1}}],["tsuccesscallback",{"2":{"160":1}}],["ts",{"2":{"49":1,"381":1,"394":1}}],["txhash",{"2":{"393":2}}],["tx",{"2":{"389":1,"391":1,"393":3,"394":4}}],["txs",{"2":{"35":1,"41":1}}],["txns",{"2":{"42":1}}],["txn2",{"2":{"42":2}}],["txn1",{"2":{"42":2}}],["txnreceipt",{"2":{"35":4,"41":2}}],["txnresponse",{"2":{"35":2,"41":1,"210":2,"211":4,"212":4,"213":4,"426":2,"427":4,"428":4,"429":4}}],["txn",{"2":{"35":2,"41":2,"54":2}}],["tip",{"2":{"173":1,"224":1,"234":1,"244":1,"260":1}}],["tips",{"0":{"33":1},"2":{"110":1,"412":1}}],["times",{"2":{"44":1,"143":1}}],["time",{"0":{"317":1,"385":1},"2":{"30":1,"33":2,"43":1,"54":1,"107":1,"111":1,"143":1,"145":1,"198":1,"201":1,"202":1,"300":1,"302":1,"317":1,"333":1,"349":1,"370":1,"380":1,"385":1,"386":1,"409":1,"415":1,"417":1,"418":1}}],["timezones",{"2":{"2":1}}],["t",{"2":{"8":1,"61":1,"93":1,"112":1,"114":1,"116":2,"124":2,"135":1,"143":2,"144":1,"157":2,"195":1,"214":1,"300":1,"302":3,"332":1,"337":1,"343":1,"344":1,"348":1,"349":1,"352":1,"368":2,"370":1,"377":1,"378":1,"379":1,"386":1,"430":1}}],["tries",{"2":{"389":1}}],["triggered",{"2":{"89":1,"173":1,"389":3,"390":2,"391":1}}],["triggertransaction",{"2":{"89":1}}],["triggercheckout",{"2":{"87":2}}],["triggering",{"0":{"71":1},"2":{"67":1}}],["trigger",{"0":{"388":1},"1":{"389":1},"2":{"35":1,"388":1}}],["triggers",{"2":{"35":1}}],["trying",{"2":{"65":1,"222":1,"401":1}}],["try",{"0":{"56":1,"97":1,"171":1,"321":1,"323":1,"372":1,"396":1},"2":{"49":3,"51":1,"56":1,"97":1,"102":1,"103":1,"164":1,"199":1,"224":2,"234":2,"244":2,"260":2,"267":2,"372":1,"381":1,"394":2,"396":1,"404":1,"405":1,"416":1}}],["trust",{"2":{"199":1,"328":1,"368":1,"416":1}}],["trusted",{"2":{"49":1,"385":1,"386":1,"387":1}}],["true",{"0":{"346":1},"2":{"33":2,"51":1,"54":2,"71":1,"72":1,"124":3,"168":2,"173":1,"179":1,"181":1,"182":1,"183":1,"192":1,"198":2,"226":1,"264":1,"266":1,"323":1,"344":2,"349":1,"350":1,"382":1,"387":2,"388":4,"389":2,"391":2,"394":1,"415":2}}],["tranfereth",{"2":{"298":1}}],["transports",{"2":{"69":3,"70":3,"93":1}}],["transferring",{"2":{"348":1}}],["transfereth",{"2":{"298":1}}],["transfertransaction",{"2":{"298":2}}],["transfers",{"0":{"298":1},"2":{"130":1,"132":1,"134":1,"211":2,"212":2,"213":2,"427":2,"428":2,"429":2}}],["transfer",{"2":{"35":1,"42":2,"211":7,"212":1,"213":1,"214":2,"298":1,"299":2,"300":4,"304":1,"427":7,"428":1,"429":1,"430":2}}],["transactionfailed",{"2":{"394":1}}],["transactioncreator",{"2":{"300":4,"304":2}}],["transactioncount",{"0":{"296":1},"2":{"296":2}}],["transactioncall",{"2":{"288":2}}],["transactionbyhash",{"0":{"295":1},"2":{"295":1}}],["transactionhashes",{"2":{"276":1}}],["transactionhash",{"2":{"274":1,"292":1,"295":1,"297":1}}],["transaction2",{"2":{"211":2,"212":2,"213":2,"214":2,"427":2,"428":2,"429":2,"430":2}}],["transaction1",{"2":{"211":2,"212":2,"213":2,"214":2,"427":2,"428":2,"429":2,"430":2}}],["transactionreceipt",{"2":{"275":2,"277":4,"297":2,"298":1,"300":4,"304":2,"393":1}}],["transactionreturn",{"2":{"127":1}}],["transactionresponse",{"2":{"49":1,"54":1}}],["transaction",{"0":{"354":1,"359":1,"392":1,"393":1,"394":1},"1":{"393":1,"394":1},"2":{"8":3,"32":2,"34":1,"35":5,"36":2,"41":5,"43":2,"46":1,"54":2,"89":1,"127":3,"128":4,"129":2,"130":1,"131":2,"132":1,"133":4,"134":1,"135":4,"136":6,"139":1,"140":1,"210":4,"211":4,"212":4,"213":4,"214":1,"219":1,"274":1,"275":1,"276":3,"277":2,"288":1,"292":3,"295":4,"297":1,"298":1,"300":4,"304":3,"314":1,"318":1,"335":1,"338":1,"343":1,"346":2,"348":3,"349":4,"350":1,"389":1,"390":1,"392":3,"393":8,"394":4,"426":4,"427":4,"428":4,"429":4,"430":1,"435":1}}],["transactions",{"0":{"42":1,"136":1,"210":1,"214":1,"426":1,"430":1},"2":{"8":10,"30":2,"34":3,"35":2,"36":2,"42":8,"127":1,"136":5,"211":1,"212":1,"213":1,"214":4,"276":3,"277":3,"296":1,"330":1,"344":1,"349":2,"350":1,"355":1,"369":2,"379":1,"392":1,"393":1,"394":3,"427":1,"428":1,"429":1,"430":4}}],["tradeoff",{"2":{"110":1,"412":1}}],["traditional",{"2":{"106":1,"368":1,"408":1}}],["trackers",{"2":{"199":2,"416":2}}],["tracked",{"2":{"44":1}}],["track",{"2":{"33":1}}],["troubles",{"2":{"2":1}}],["technique",{"2":{"232":1,"241":1}}],["technical",{"2":{"167":1}}],["text",{"2":{"152":1,"198":1,"415":1}}],["textmeshpro",{"2":{"114":1,"116":1}}],["terms",{"2":{"110":1,"412":1}}],["template",{"0":{"51":1,"57":1,"98":1,"322":1,"373":1,"397":1},"2":{"57":1,"98":1,"115":3,"322":1,"373":1,"397":1}}],["tested",{"2":{"267":1}}],["test",{"0":{"44":1,"45":1},"1":{"45":1},"2":{"43":1,"52":1,"54":1,"61":1,"157":1,"377":1,"379":1,"380":1,"381":1,"382":1,"383":1,"393":1,"394":1}}],["testing",{"0":{"52":1},"2":{"4":1,"30":1,"44":2,"73":1,"112":1}}],["team",{"2":{"2":3,"7":1,"60":1,"63":1,"117":1,"145":1,"148":1,"218":1,"220":1,"368":1,"376":1,"434":1}}],["tampered",{"2":{"368":1}}],["taking",{"2":{"195":1}}],["takes",{"2":{"173":1,"388":1}}],["take",{"2":{"66":1,"106":1,"127":1,"138":1,"139":1,"143":1,"164":2,"223":1,"232":1,"241":1,"299":1,"325":1,"369":1,"402":1,"408":1}}],["taken",{"2":{"41":1,"349":1}}],["tag",{"2":{"190":1}}],["target",{"2":{"166":1}}],["targets",{"2":{"118":1}}],["tasks",{"2":{"267":1}}],["task",{"2":{"127":2,"138":2,"139":2,"300":1}}],["tanstack",{"2":{"68":3,"69":1,"70":1}}],["tank",{"0":{"39":1},"2":{"41":2}}],["tablet",{"2":{"102":1,"103":1,"404":1,"405":1}}],["tab",{"2":{"46":1,"164":3,"311":1}}],["talking",{"2":{"2":1}}],["tackle",{"2":{"2":1}}],["thought",{"2":{"127":1}}],["those",{"2":{"99":1,"150":1,"398":1}}],["threat",{"0":{"370":1}}],["threats",{"2":{"367":1}}],["threads",{"2":{"124":1}}],["threshold",{"2":{"110":1,"337":1,"338":1,"342":1,"343":1,"356":1,"357":1,"358":1,"412":1}}],["three",{"2":{"107":3,"409":3}}],["throwing",{"2":{"267":1}}],["throw",{"2":{"35":2,"267":2}}],["throughout",{"2":{"271":1}}],["throughput",{"2":{"34":1,"43":1}}],["through",{"2":{"5":1,"6":1,"30":1,"43":1,"67":1,"91":1,"118":1,"135":1,"152":2,"157":1,"158":1,"165":1,"172":1,"202":1,"224":1,"234":1,"244":1,"245":1,"264":1,"266":1,"356":2,"357":2,"358":1,"384":1,"418":1}}],["than",{"2":{"95":1,"144":1,"199":1,"219":1,"416":1,"435":1}}],["that",{"2":{"2":1,"6":3,"8":1,"30":2,"33":1,"35":1,"41":2,"42":3,"44":2,"46":1,"49":4,"61":1,"73":1,"84":1,"95":2,"99":1,"105":1,"106":3,"107":1,"109":1,"110":2,"111":1,"114":1,"115":3,"116":3,"117":1,"118":1,"127":1,"128":1,"129":1,"130":2,"132":2,"134":2,"135":2,"136":1,"139":1,"140":1,"143":1,"149":1,"150":1,"157":1,"159":1,"164":4,"166":1,"170":1,"172":2,"173":1,"178":1,"186":1,"195":2,"202":2,"210":1,"229":1,"232":1,"241":1,"248":1,"251":1,"257":1,"266":3,"267":3,"271":2,"276":1,"277":1,"280":1,"299":1,"300":1,"301":1,"317":1,"319":1,"324":1,"329":2,"334":1,"335":1,"336":1,"341":1,"342":1,"343":2,"344":1,"346":1,"349":1,"358":2,"366":1,"368":1,"369":3,"370":1,"377":1,"380":2,"381":2,"382":1,"385":1,"388":1,"389":1,"392":1,"393":2,"398":1,"407":1,"408":3,"409":1,"411":1,"412":2,"418":2,"426":1}}],["third",{"2":{"115":1,"368":1}}],["think",{"2":{"63":1,"172":1,"218":1,"434":1}}],["thing",{"2":{"53":1,"160":1}}],["things",{"2":{"33":1,"160":1,"281":1,"308":1}}],["this",{"2":{"6":2,"33":3,"35":5,"36":1,"41":2,"42":1,"43":1,"44":2,"45":1,"46":5,"47":1,"48":1,"49":1,"51":3,"52":1,"53":3,"54":2,"60":1,"67":1,"70":1,"84":1,"91":1,"94":1,"99":1,"103":1,"107":1,"109":3,"110":1,"111":1,"114":5,"115":4,"116":3,"117":3,"118":5,"120":1,"124":3,"126":3,"127":1,"128":3,"129":2,"130":1,"131":1,"132":1,"133":1,"134":1,"135":7,"137":1,"138":1,"139":2,"140":2,"143":2,"145":1,"148":3,"149":1,"150":4,"152":16,"153":3,"157":3,"162":1,"164":2,"167":1,"172":5,"173":1,"177":1,"198":7,"201":1,"206":2,"220":1,"228":1,"230":1,"232":2,"238":1,"240":1,"241":2,"264":2,"265":3,"266":5,"269":1,"270":1,"279":2,"281":1,"298":1,"299":1,"305":1,"307":1,"308":2,"309":2,"310":1,"311":2,"315":3,"316":3,"317":3,"319":1,"329":1,"334":1,"335":2,"337":2,"338":1,"342":1,"343":3,"344":2,"345":1,"346":1,"349":1,"351":1,"352":2,"356":1,"357":1,"358":1,"368":3,"369":3,"370":4,"376":1,"378":1,"380":2,"382":1,"385":1,"386":1,"387":1,"388":1,"389":1,"391":1,"393":1,"394":5,"398":1,"405":1,"409":1,"411":3,"412":1,"415":7,"417":1,"422":2}}],["thus",{"2":{"8":1}}],["these",{"2":{"54":1,"69":1,"74":1,"86":1,"95":2,"110":1,"112":1,"115":2,"116":1,"117":1,"136":1,"140":1,"143":1,"148":1,"152":2,"160":1,"162":2,"163":1,"280":2,"304":2,"308":2,"329":1,"335":1,"343":1,"362":1,"366":1,"369":1,"370":1,"412":1}}],["then",{"2":{"33":1,"46":1,"49":1,"50":1,"53":2,"70":1,"121":2,"122":2,"148":1,"150":3,"158":1,"164":1,"167":1,"168":1,"172":1,"181":1,"198":3,"199":1,"202":1,"219":1,"226":1,"236":1,"266":2,"275":1,"277":1,"310":1,"319":1,"344":1,"379":1,"380":1,"415":3,"416":1,"418":1,"435":1}}],["themselves",{"2":{"110":1,"345":1,"368":1,"412":1}}],["theme=",{"2":{"124":2}}],["theme",{"0":{"184":1},"2":{"76":1,"173":2,"184":2}}],["them",{"2":{"8":1,"42":3,"65":1,"110":1,"126":1,"131":1,"140":1,"150":1,"158":1,"202":1,"222":1,"267":1,"276":1,"277":1,"280":1,"367":1,"401":1,"412":1,"418":1}}],["their",{"2":{"8":1,"65":1,"105":1,"106":3,"107":5,"108":3,"109":1,"110":4,"120":1,"135":1,"149":1,"172":3,"173":1,"195":2,"198":3,"201":1,"202":3,"222":1,"265":1,"266":1,"304":1,"318":1,"324":1,"369":1,"385":1,"386":1,"401":1,"407":1,"408":3,"409":5,"410":3,"411":1,"412":4,"415":3,"417":1,"418":3}}],["they",{"2":{"8":1,"33":1,"42":1,"82":1,"83":1,"107":1,"116":1,"135":1,"159":1,"173":1,"183":2,"195":1,"198":1,"202":3,"267":1,"268":1,"300":1,"329":1,"394":1,"409":1,"415":1,"418":3}}],["therefore",{"2":{"139":1,"261":1,"264":1}}],["there",{"2":{"6":1,"42":1,"115":2,"116":1,"120":1,"139":1,"143":1,"164":1,"232":1,"241":1,"266":1,"269":1,"280":1,"281":1,"344":1,"345":1}}],["the",{"0":{"52":1,"53":1,"69":1,"70":1,"71":1,"72":1,"87":1,"88":1,"194":1,"197":1,"265":1,"266":1,"311":1,"316":1,"351":1,"352":1,"414":1},"1":{"89":1,"90":1,"352":1},"2":{"2":6,"4":3,"5":2,"6":11,"7":2,"8":9,"30":12,"31":1,"32":5,"33":11,"35":20,"36":5,"41":8,"42":2,"43":5,"44":14,"45":4,"46":16,"47":1,"48":1,"49":10,"50":2,"51":3,"52":1,"53":9,"54":8,"59":4,"60":2,"61":2,"62":1,"63":1,"64":3,"65":2,"66":2,"67":2,"68":5,"69":4,"70":4,"71":6,"72":2,"73":1,"74":3,"76":5,"77":4,"78":2,"79":2,"80":2,"81":2,"82":7,"83":7,"84":5,"85":1,"86":4,"87":2,"88":2,"89":1,"90":3,"91":1,"92":3,"93":4,"94":2,"95":3,"97":1,"99":6,"103":1,"105":5,"106":7,"107":9,"108":1,"109":3,"110":9,"111":1,"114":3,"115":16,"116":11,"117":13,"118":7,"119":8,"120":4,"121":5,"122":5,"124":10,"126":4,"127":5,"128":6,"129":5,"130":4,"131":1,"132":4,"133":4,"134":4,"135":24,"136":5,"137":5,"138":4,"139":7,"140":5,"141":1,"142":1,"143":16,"144":1,"145":3,"148":3,"149":1,"150":15,"152":10,"153":4,"154":3,"157":14,"158":4,"159":11,"161":1,"162":4,"164":29,"165":4,"166":12,"167":2,"168":2,"169":2,"170":1,"171":8,"172":7,"173":11,"174":1,"175":1,"177":2,"179":2,"182":3,"183":1,"184":2,"185":1,"186":1,"187":1,"188":1,"190":5,"191":2,"192":6,"193":1,"195":25,"197":1,"198":12,"199":8,"202":4,"205":1,"206":2,"207":2,"208":1,"209":4,"210":6,"211":2,"212":4,"213":4,"214":2,"216":1,"217":1,"218":1,"219":5,"220":5,"221":3,"222":2,"223":2,"224":2,"225":6,"226":3,"228":1,"229":1,"230":1,"231":3,"232":11,"233":3,"234":2,"235":2,"236":3,"238":1,"239":5,"240":1,"241":9,"242":3,"243":2,"244":2,"245":1,"248":2,"249":2,"251":2,"252":2,"254":1,"255":2,"257":2,"258":2,"260":1,"261":3,"262":1,"264":7,"265":13,"266":24,"267":4,"268":2,"269":3,"271":3,"272":2,"273":2,"274":2,"275":3,"276":8,"277":9,"278":8,"279":4,"280":2,"281":13,"282":1,"283":1,"284":1,"285":1,"286":3,"287":1,"288":2,"290":3,"291":1,"292":2,"294":1,"296":1,"297":1,"298":4,"299":4,"300":12,"301":2,"302":6,"303":1,"304":5,"305":2,"308":1,"309":3,"310":2,"311":2,"312":2,"314":2,"315":4,"316":5,"317":5,"318":2,"319":4,"324":5,"325":2,"326":1,"329":3,"332":8,"333":2,"334":8,"335":4,"336":5,"337":11,"338":6,"340":2,"341":3,"342":3,"343":17,"344":16,"345":4,"346":3,"347":4,"348":3,"349":14,"350":3,"351":6,"352":8,"356":7,"357":8,"358":13,"366":5,"367":4,"368":1,"369":11,"370":11,"375":4,"376":2,"377":2,"378":2,"379":4,"380":16,"381":18,"382":1,"383":2,"384":1,"386":1,"387":3,"388":9,"389":5,"390":1,"391":3,"392":1,"393":13,"394":8,"396":1,"398":2,"400":3,"401":2,"402":2,"405":1,"407":5,"408":7,"409":9,"410":1,"411":3,"412":9,"414":1,"415":12,"416":8,"418":4,"421":1,"422":2,"423":2,"424":1,"425":4,"426":6,"427":2,"428":4,"429":4,"430":2,"432":1,"433":1,"434":1,"435":5}}],["touch",{"2":{"145":1}}],["toutf8bytes",{"2":{"46":1}}],["together",{"2":{"135":1,"136":2,"158":1,"268":1,"276":1,"277":1}}],["toaddress",{"2":{"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":4,"300":4,"304":2}}],["tower",{"2":{"115":2}}],["too",{"2":{"172":2,"173":1,"220":1,"224":1,"234":1,"244":1,"260":1}}],["took",{"2":{"109":1,"411":1}}],["toolkit",{"2":{"63":1,"64":1,"218":1,"221":1,"400":1,"434":1}}],["tools=",{"2":{"124":2}}],["tools",{"0":{"144":1},"2":{"63":1,"64":1,"124":2,"144":1,"218":1,"220":1,"221":1,"400":1,"434":1}}],["torus",{"0":{"110":1,"412":1},"2":{"107":3,"110":7,"409":3,"412":7}}],["toying",{"2":{"76":1}}],["topics",{"2":{"393":2}}],["top",{"2":{"74":1,"77":3,"117":1,"143":1,"164":1}}],["toml",{"2":{"50":1,"51":1}}],["total",{"2":{"32":3}}],["tokenresponse",{"2":{"381":2}}],["tokenbaseuri",{"2":{"316":2}}],["tokenbalances",{"2":{"167":1,"168":1}}],["token4id",{"2":{"214":1,"430":1}}],["token2id",{"2":{"213":1,"429":1}}],["token1id",{"2":{"213":1,"429":1}}],["tokencontract",{"2":{"42":2}}],["tokenids",{"2":{"323":1}}],["tokenidasstring",{"2":{"131":1,"133":1,"136":2}}],["tokenid",{"2":{"6":4,"35":1,"41":1,"49":3,"52":1,"53":1,"54":3,"90":1,"134":1,"212":4,"213":1,"214":1,"317":2,"428":4,"429":1,"430":1}}],["tokens",{"0":{"6":1,"17":1,"18":1,"23":1,"24":1,"26":1,"211":1,"212":1,"213":1,"304":1,"427":1,"428":1,"429":1},"2":{"6":8,"8":1,"30":2,"32":3,"33":1,"35":1,"129":1,"130":1,"131":1,"132":1,"133":2,"134":1,"192":1,"304":1,"305":1,"315":1,"317":1,"318":2,"319":4,"330":1}}],["token",{"0":{"13":1,"308":1},"2":{"5":1,"6":5,"30":7,"32":4,"33":2,"35":1,"105":1,"128":1,"129":4,"131":2,"133":4,"152":1,"154":2,"165":1,"211":4,"212":3,"213":3,"214":2,"307":1,"308":5,"309":4,"316":2,"317":2,"318":1,"319":2,"324":1,"369":1,"389":1,"407":1,"427":4,"428":3,"429":3,"430":2}}],["todo",{"0":{"200":1},"2":{"4":1,"59":1,"375":1,"394":1}}],["today",{"2":{"2":1,"30":1,"165":1}}],["to",{"0":{"49":1,"54":1,"127":1,"194":1,"306":1,"314":1,"347":1},"1":{"50":1,"51":1,"52":1,"53":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1},"2":{"2":5,"4":5,"5":2,"6":10,"8":4,"13":2,"30":6,"32":1,"33":11,"34":2,"35":16,"36":3,"41":2,"42":8,"43":6,"44":11,"45":1,"46":6,"47":1,"48":2,"49":6,"51":4,"52":1,"53":3,"54":4,"59":1,"60":2,"61":3,"65":1,"66":1,"68":2,"69":3,"70":1,"71":1,"74":1,"78":1,"79":1,"80":1,"82":2,"83":2,"84":1,"85":1,"86":1,"87":1,"91":1,"92":6,"93":3,"94":1,"95":3,"99":4,"102":1,"103":2,"105":5,"106":4,"107":2,"108":1,"109":1,"110":7,"114":2,"115":10,"116":8,"117":6,"118":7,"119":3,"120":5,"121":2,"122":2,"124":6,"126":2,"127":5,"128":5,"129":5,"130":4,"131":1,"132":4,"133":2,"134":4,"135":16,"136":3,"137":1,"138":3,"139":6,"140":7,"142":2,"143":10,"144":4,"145":1,"148":2,"149":3,"150":14,"152":11,"153":3,"154":3,"157":5,"158":2,"159":4,"160":5,"161":2,"162":6,"163":1,"164":9,"165":3,"166":3,"167":1,"168":1,"170":2,"171":5,"172":9,"173":10,"175":1,"179":1,"180":1,"182":1,"183":3,"186":1,"187":1,"188":1,"189":1,"190":2,"191":1,"192":5,"195":7,"197":1,"198":11,"199":4,"201":1,"202":3,"206":2,"208":1,"210":5,"211":7,"212":7,"213":7,"214":11,"219":2,"220":6,"222":1,"223":1,"226":1,"228":1,"229":1,"230":3,"231":1,"232":2,"234":1,"236":1,"238":1,"239":1,"240":3,"241":2,"242":1,"248":2,"249":1,"251":1,"254":1,"255":1,"257":2,"261":1,"264":1,"265":3,"266":2,"267":2,"268":1,"271":1,"276":1,"277":1,"278":2,"279":1,"280":2,"281":5,"282":1,"283":1,"284":1,"285":1,"286":2,"287":1,"290":2,"291":2,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":2,"299":5,"300":7,"301":3,"302":4,"303":1,"304":4,"305":3,"309":2,"310":1,"312":1,"314":1,"315":5,"316":4,"317":6,"318":2,"319":3,"321":1,"324":5,"325":1,"327":3,"329":2,"332":1,"333":2,"334":2,"335":1,"336":1,"337":3,"338":2,"339":1,"340":1,"341":1,"343":4,"344":8,"345":2,"346":1,"347":2,"349":2,"350":2,"351":3,"352":3,"355":1,"356":1,"358":2,"366":1,"367":2,"368":6,"369":1,"370":5,"375":1,"376":2,"377":3,"378":2,"379":2,"380":9,"381":7,"385":1,"386":4,"387":1,"388":1,"389":2,"390":2,"391":1,"393":3,"394":7,"398":3,"401":1,"402":1,"404":1,"405":2,"407":5,"408":4,"409":2,"410":1,"411":1,"412":7,"414":1,"415":11,"416":4,"417":1,"418":3,"422":2,"424":1,"426":5,"427":7,"428":7,"429":7,"430":11,"435":2}}],["azure",{"2":{"316":1}}],["awesome",{"2":{"172":1}}],["aware",{"2":{"160":1,"199":1,"416":1}}],["away",{"2":{"135":1}}],["await",{"2":{"35":4,"41":2,"42":2,"46":1,"49":6,"54":3,"127":2,"138":2,"139":2,"167":1,"171":1,"173":2,"174":1,"175":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"198":1,"199":2,"204":1,"205":1,"206":1,"207":2,"208":1,"210":1,"211":2,"212":3,"213":3,"214":2,"274":1,"275":1,"276":1,"277":1,"278":2,"281":2,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":2,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":2,"300":6,"302":3,"303":1,"304":5,"336":1,"356":1,"357":1,"379":2,"380":4,"381":3,"382":2,"383":3,"387":1,"388":2,"389":1,"390":1,"391":1,"393":2,"394":2,"415":1,"416":2,"420":1,"421":1,"422":1,"423":2,"424":1,"426":1,"427":2,"428":3,"429":3,"430":2}}],["aggregating",{"2":{"170":1}}],["against",{"2":{"110":1,"344":1,"352":1,"370":2,"412":1}}],["again",{"2":{"107":1,"164":2,"181":1,"316":1,"409":1}}],["ayourclass",{"2":{"152":2}}],["avoid",{"2":{"92":1,"160":1,"173":1}}],["availability",{"2":{"30":1}}],["available",{"0":{"75":1},"1":{"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1},"2":{"7":1,"35":1,"60":1,"62":1,"66":1,"92":1,"105":1,"119":1,"120":1,"145":1,"172":1,"173":1,"184":1,"188":1,"216":1,"217":1,"223":1,"224":1,"229":1,"233":3,"234":1,"239":1,"243":1,"244":1,"245":1,"250":1,"251":1,"259":1,"260":1,"262":1,"264":2,"279":1,"324":1,"329":1,"368":1,"376":1,"381":1,"402":1,"407":1,"432":1,"433":1}}],["after",{"2":{"44":1,"49":1,"111":1,"124":1,"143":1,"145":1,"152":3,"154":1,"157":1,"164":1,"173":1,"182":2,"309":1,"333":1}}],["amazon",{"2":{"119":2,"368":1,"385":1}}],["amountasbiginteger",{"2":{"300":4}}],["amountasstring",{"2":{"129":1,"133":1,"136":2}}],["amount4",{"2":{"214":1,"430":1}}],["amount3",{"2":{"214":1,"430":1}}],["amountrequiredraw",{"2":{"89":1}}],["amount",{"2":{"54":1,"129":1,"130":1,"134":1,"135":1,"136":1,"191":2,"211":2,"213":1,"288":1,"317":1,"349":1,"427":2,"429":1}}],["amount2",{"2":{"42":1,"211":1,"212":1,"213":1,"214":1,"427":1,"428":1,"429":1,"430":1}}],["amount1",{"2":{"42":1,"211":1,"212":1,"213":1,"427":1,"428":1,"429":1}}],["amp",{"0":{"7":1,"31":1,"33":1,"332":1,"353":1},"1":{"333":1,"334":1,"335":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"351":1,"352":1},"2":{"5":1,"13":2,"32":1,"36":1,"43":1,"71":2,"152":10,"153":1,"154":1,"160":2,"168":3,"381":2}}],["admire",{"0":{"318":1}}],["advantage",{"2":{"299":1}}],["advanced",{"0":{"267":1},"1":{"268":1},"2":{"69":1,"116":1,"128":1,"267":1}}],["adapter",{"2":{"271":1}}],["adhere",{"2":{"33":1}}],["adddynamic",{"2":{"152":2}}],["addition",{"2":{"115":1,"139":1,"220":1,"266":1}}],["additional",{"2":{"91":1,"109":2,"123":1,"172":1,"220":1,"325":1,"350":1,"385":1,"386":2,"411":2}}],["additionally",{"2":{"68":1,"128":1,"166":1,"220":1}}],["adds",{"2":{"106":1,"408":1}}],["added",{"2":{"95":1,"110":1,"143":1,"226":1,"234":1,"236":1,"244":1,"412":1}}],["addresses",{"2":{"335":2,"343":3}}],["address",{"0":{"41":1,"197":1,"414":1},"2":{"32":2,"33":1,"35":6,"36":1,"41":4,"42":2,"43":1,"46":9,"49":10,"50":2,"52":4,"53":4,"54":5,"119":1,"128":1,"130":1,"132":1,"134":1,"135":1,"139":1,"152":1,"168":1,"173":1,"187":1,"197":3,"198":3,"199":3,"205":1,"211":2,"212":8,"213":8,"214":7,"219":1,"273":3,"287":1,"291":1,"299":1,"301":2,"302":2,"304":2,"309":1,"315":1,"317":4,"319":1,"334":1,"336":10,"344":1,"347":1,"352":2,"357":1,"380":1,"381":1,"382":2,"386":1,"393":2,"394":1,"414":3,"415":3,"416":3,"421":1,"427":2,"428":8,"429":8,"430":7,"435":1}}],["add",{"0":{"40":1,"41":1,"50":1},"2":{"4":1,"49":1,"51":2,"59":1,"68":1,"70":1,"86":1,"99":4,"110":2,"114":2,"116":3,"121":1,"122":1,"124":2,"139":1,"140":2,"148":1,"152":1,"164":1,"167":1,"171":1,"173":1,"225":1,"231":1,"235":1,"242":1,"245":1,"368":1,"375":1,"398":4,"412":2}}],["achieves",{"2":{"369":1}}],["achievement",{"0":{"17":1,"18":1,"23":1,"24":1}}],["act",{"2":{"202":1,"418":1}}],["active",{"2":{"383":1}}],["activate",{"2":{"255":2}}],["activated",{"2":{"255":1}}],["activation",{"0":{"255":1}}],["activity",{"2":{"109":1,"124":4,"195":1,"411":1}}],["actions",{"2":{"202":1,"369":1,"391":1,"418":1}}],["action",{"2":{"124":8,"173":1,"202":1,"208":1,"321":1,"369":1,"389":2,"391":1,"418":1,"424":1}}],["acting",{"2":{"106":1,"408":1}}],["actor",{"2":{"106":1,"109":1,"110":1,"150":2,"157":1,"408":1,"411":1,"412":1}}],["actually",{"2":{"210":1,"426":1}}],["actual",{"2":{"52":1,"99":1,"171":1,"173":1,"198":1,"398":1,"415":1}}],["acquire",{"2":{"52":1,"60":1,"148":1,"171":1,"376":1}}],["acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",{"2":{"393":2}}],["accepted",{"2":{"173":1}}],["accepts",{"2":{"128":1,"300":1}}],["accepting",{"2":{"44":1,"126":1}}],["accessing",{"2":{"393":1}}],["accessible",{"2":{"6":2,"107":1,"409":1}}],["accessed",{"2":{"279":1,"366":1}}],["access",{"2":{"5":1,"13":1,"30":1,"33":1,"35":2,"41":1,"46":2,"49":8,"50":1,"54":1,"60":1,"61":1,"69":1,"70":1,"93":1,"108":2,"110":1,"117":1,"118":1,"130":1,"132":1,"134":1,"145":1,"148":1,"165":1,"167":2,"171":2,"172":3,"173":2,"189":2,"368":3,"370":3,"376":1,"377":1,"379":1,"380":1,"381":1,"382":1,"383":1,"393":1,"394":1,"410":2,"412":1}}],["accountaddress",{"2":{"168":2}}],["accounts",{"0":{"326":1},"1":{"327":1,"328":1},"2":{"120":1,"325":1,"326":2,"382":4}}],["account",{"2":{"35":3,"41":2,"42":2,"44":1,"45":1,"46":4,"54":1,"95":1,"107":3,"110":1,"126":1,"168":1,"173":1,"198":1,"219":1,"232":1,"241":1,"309":1,"312":1,"368":1,"378":1,"379":1,"409":3,"412":1,"415":1,"435":1}}],["accurately",{"2":{"30":1}}],["across",{"2":{"30":1,"166":1}}],["ai",{"2":{"13":1}}],["audited",{"2":{"368":1}}],["audits",{"0":{"362":1},"1":{"363":1,"364":1,"365":1},"2":{"362":1}}],["audio",{"2":{"6":2}}],["autoconnect",{"2":{"226":1,"266":2}}],["auto",{"2":{"107":1,"409":1}}],["automatic",{"0":{"391":1},"2":{"43":1,"391":1}}],["automatically",{"2":{"8":1,"30":3,"71":1,"103":1,"112":1,"114":2,"116":1,"118":1,"158":1,"177":1,"182":1,"186":1,"187":1,"198":3,"220":1,"313":1,"379":1,"405":1,"415":3}}],["authorizationmessage",{"2":{"206":2,"207":1,"422":2,"423":1}}],["authorization",{"0":{"206":1,"207":1,"422":1,"423":1},"2":{"199":1,"416":1}}],["authorized",{"2":{"207":2,"423":2}}],["authorizenonce",{"0":{"180":1},"2":{"180":2}}],["authorize",{"0":{"179":1},"2":{"173":1,"179":2,"198":2,"202":2,"206":1,"415":2,"418":2,"422":1}}],["authfailure",{"2":{"152":2}}],["authsuccess",{"2":{"152":3,"153":1,"154":1,"159":1}}],["authrequirescode",{"2":{"152":3,"153":1}}],["authenticating",{"2":{"369":1}}],["authentication",{"0":{"118":1,"151":1,"153":1,"154":1,"155":1},"1":{"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"152":1,"153":1,"154":1,"155":1},"2":{"59":1,"82":1,"83":1,"99":1,"107":1,"118":4,"152":1,"153":1,"154":1,"157":1,"202":1,"375":1,"378":1,"386":1,"409":1,"418":1}}],["authenticates",{"2":{"370":1}}],["authenticate",{"0":{"196":1,"198":1,"199":1,"413":1,"415":1,"416":1},"1":{"197":1,"198":1,"199":1,"414":1,"415":1,"416":1},"2":{"171":1,"198":2,"199":1,"369":1,"378":1,"415":2,"416":1}}],["authenticated",{"2":{"61":1,"377":1}}],["authenticator",{"2":{"152":3,"153":1}}],["auth",{"0":{"368":1,"381":1},"2":{"35":2,"41":1,"46":1,"54":2,"150":1,"152":1,"153":1,"158":1,"159":2,"162":1,"176":1,"186":1,"199":1,"368":1,"369":1,"370":2,"378":2,"379":1,"381":4,"384":1,"386":1,"416":1}}],["absolute",{"2":{"198":1,"415":1}}],["abstracted",{"2":{"135":1}}],["abstraction",{"2":{"8":1}}],["abis",{"2":{"135":1,"304":1}}],["abi",{"2":{"35":1,"54":1,"130":1,"132":1,"134":1,"135":5,"299":3,"300":1,"301":1,"304":1,"305":1,"358":1}}],["ability",{"2":{"35":1,"110":1,"412":1}}],["about",{"2":{"34":1,"42":1,"43":1,"173":1,"266":1,"319":1}}],["above",{"0":{"266":1},"2":{"6":2,"33":1,"41":1,"114":1,"128":2,"129":1,"135":1,"173":1,"198":1,"199":1,"264":1,"265":1,"266":2,"282":1,"285":1,"287":1,"289":1,"291":1,"356":1,"357":1,"415":1,"416":1}}],["able",{"2":{"33":1,"35":1,"110":1,"116":1,"162":1,"172":3,"189":1,"192":1,"195":1,"356":1,"370":2,"412":1}}],["arcadeum",{"2":{"362":2}}],["architectures",{"2":{"164":1}}],["architecture",{"0":{"367":1},"1":{"368":1,"369":1},"2":{"6":1}}],["argent",{"2":{"331":1}}],["argument",{"2":{"140":1,"388":1}}],["arguments",{"2":{"33":1,"118":1,"300":2}}],["arbitrary",{"2":{"135":1,"300":1,"305":1,"329":1}}],["arbitrum",{"2":{"35":1,"41":1,"323":1}}],["array",{"2":{"82":1,"83":1,"136":1,"358":1}}],["arrive",{"2":{"53":1}}],["are",{"2":{"8":3,"32":1,"33":5,"46":1,"49":1,"54":1,"82":1,"83":1,"84":2,"92":1,"95":1,"105":1,"107":3,"108":1,"110":1,"117":1,"118":1,"120":1,"128":2,"130":1,"132":1,"133":1,"134":1,"135":3,"136":1,"139":1,"140":1,"152":2,"153":1,"159":3,"160":1,"165":1,"172":2,"173":1,"174":1,"202":2,"219":2,"220":1,"225":1,"231":1,"232":1,"233":1,"241":1,"242":1,"266":1,"269":1,"272":1,"278":1,"280":2,"281":1,"300":1,"301":1,"315":1,"319":1,"324":1,"326":2,"329":3,"332":1,"335":1,"343":3,"344":1,"345":1,"347":1,"356":2,"357":1,"362":1,"367":2,"369":1,"370":3,"379":1,"381":1,"382":1,"391":1,"392":1,"393":1,"394":1,"407":1,"409":3,"410":1,"412":1,"418":2,"435":2}}],["arise",{"2":{"2":1}}],["aka",{"2":{"6":1}}],["atomic",{"2":{"346":1}}],["attested",{"2":{"368":1}}],["attempts",{"2":{"264":1}}],["attempting",{"2":{"159":1}}],["attempt",{"2":{"114":1,"116":1,"239":1,"248":1,"249":1,"257":1}}],["attributes",{"0":{"315":1},"2":{"308":1,"315":1}}],["attacks",{"2":{"381":1}}],["attackers",{"2":{"368":1}}],["attacker",{"2":{"108":1,"370":2,"410":1}}],["attach",{"2":{"150":1}}],["attached",{"2":{"118":1,"143":1}}],["at",{"2":{"6":1,"35":1,"36":1,"44":1,"56":1,"66":1,"97":1,"102":1,"103":1,"107":1,"111":1,"117":2,"145":2,"149":1,"164":2,"198":1,"223":1,"276":1,"277":1,"281":4,"287":2,"291":2,"300":1,"302":1,"308":1,"332":1,"333":1,"370":1,"372":1,"396":1,"402":1,"404":1,"405":1,"409":1,"415":1}}],["alternatively",{"2":{"195":2,"300":1,"302":1}}],["alongside",{"2":{"226":1,"236":1}}],["along",{"2":{"166":1,"316":1}}],["alpha",{"2":{"143":1}}],["always",{"2":{"111":1,"145":1,"195":1,"199":1,"319":1,"348":1,"349":1,"369":1,"394":1,"416":1}}],["alias",{"2":{"44":2}}],["already",{"2":{"36":1,"66":1,"114":1,"116":2,"124":2,"150":1,"173":1,"186":1,"187":1,"188":1,"195":2,"223":1,"299":1,"317":1,"379":1,"402":1}}],["also",{"2":{"6":1,"33":2,"35":3,"42":1,"43":1,"62":1,"63":1,"91":1,"92":1,"99":1,"105":1,"114":1,"115":1,"140":1,"152":1,"162":1,"163":1,"165":1,"173":2,"192":1,"195":1,"216":1,"217":1,"218":1,"220":3,"230":1,"240":1,"304":2,"305":1,"324":1,"329":1,"344":1,"352":1,"357":1,"369":1,"370":1,"381":1,"398":1,"407":1,"432":1,"433":1,"434":1}}],["allowlists",{"2":{"369":1}}],["allowed",{"2":{"345":1,"369":1}}],["allowing",{"2":{"68":1,"135":1,"172":1}}],["allows",{"2":{"42":1,"105":1,"109":1,"135":1,"136":2,"172":1,"198":3,"266":2,"271":1,"315":1,"324":1,"325":1,"329":1,"334":1,"337":1,"341":1,"407":1,"411":1,"415":3}}],["allow",{"2":{"8":3,"49":3,"120":1,"130":1,"132":1,"134":1,"150":1,"172":1,"187":1,"192":1,"355":1,"366":1}}],["all",{"0":{"265":1},"2":{"4":1,"30":3,"32":4,"33":2,"42":1,"62":1,"65":1,"84":1,"102":1,"103":1,"107":1,"110":1,"119":1,"120":1,"130":1,"132":1,"134":1,"135":1,"136":3,"137":1,"158":2,"172":1,"189":1,"199":1,"217":1,"220":2,"222":1,"230":1,"240":1,"264":1,"265":1,"266":2,"267":1,"276":1,"277":1,"305":1,"308":1,"310":1,"311":1,"334":1,"337":1,"344":1,"349":1,"368":1,"401":1,"404":1,"405":1,"409":1,"412":1,"416":1,"433":1}}],["apk",{"2":{"124":2}}],["appprops",{"2":{"266":1}}],["appprotocol",{"0":{"176":1}}],["appended",{"2":{"316":1}}],["append",{"2":{"171":1}}],["appear",{"2":{"135":1}}],["appears",{"2":{"92":1,"135":1}}],["appropriate",{"2":{"117":1,"135":1,"143":1,"231":1,"242":1,"298":1,"300":1}}],["approach",{"2":{"35":1,"127":1,"138":1,"139":1,"160":1}}],["applicable",{"2":{"243":2}}],["application",{"2":{"44":1,"52":1,"53":1,"65":1,"66":1,"67":1,"69":1,"117":1,"120":2,"124":4,"139":1,"157":1,"162":4,"170":1,"201":1,"202":1,"209":1,"222":1,"223":1,"232":1,"241":1,"265":4,"266":1,"323":1,"366":1,"378":1,"381":2,"401":1,"402":1,"417":1,"418":1,"425":1}}],["applications",{"0":{"221":1,"400":1},"1":{"222":1,"401":1},"2":{"2":1,"33":1,"64":1,"198":1,"199":1,"202":2,"221":1,"267":1,"368":1,"400":1,"415":1,"416":1,"418":2}}],["apply",{"2":{"143":3}}],["applevision",{"2":{"164":1}}],["appleid",{"2":{"110":1,"412":1}}],["apple",{"0":{"381":1},"2":{"82":1,"120":1,"186":1,"188":1,"380":1,"381":1}}],["appname",{"0":{"249":1,"258":1},"2":{"69":1,"70":1,"93":1,"246":1,"254":3,"258":1}}],["app`",{"2":{"54":1}}],["apps",{"2":{"30":1,"140":1,"163":1}}],["app",{"0":{"175":1,"266":1},"2":{"6":8,"43":1,"45":1,"46":1,"49":1,"53":1,"54":2,"69":4,"70":3,"73":1,"74":1,"86":2,"93":4,"102":1,"103":1,"124":1,"142":1,"164":2,"166":2,"167":2,"168":2,"171":1,"172":1,"173":2,"175":3,"198":1,"199":1,"220":1,"226":2,"228":1,"229":1,"232":5,"233":5,"236":2,"238":1,"239":1,"241":5,"243":4,"246":1,"249":1,"254":1,"259":1,"264":2,"265":1,"266":3,"267":1,"319":2,"323":1,"368":1,"370":1,"381":1,"404":1,"405":1,"415":1,"416":1}}],["apis",{"2":{"49":1,"53":1,"115":1,"366":1}}],["api",{"0":{"4":1,"5":1,"8":1,"156":1,"157":1,"158":1,"160":1,"323":1},"1":{"6":1,"7":1,"157":1,"158":1,"159":1,"160":1},"2":{"4":3,"5":4,"6":1,"8":1,"30":4,"43":2,"44":1,"49":5,"60":1,"111":1,"115":1,"117":2,"119":1,"145":1,"148":1,"150":1,"157":5,"159":1,"165":3,"166":4,"167":2,"279":1,"322":1,"323":1,"376":1,"380":1,"394":1}}],["announced",{"2":{"175":1}}],["another",{"2":{"107":1,"166":1,"369":1,"409":1}}],["animation",{"2":{"6":2}}],["an",{"0":{"9":1,"11":1,"19":1,"25":1,"46":1,"264":1,"323":1},"1":{"47":1,"48":1},"2":{"6":5,"32":1,"33":1,"35":1,"42":2,"43":1,"44":2,"46":2,"53":1,"54":1,"63":1,"73":1,"92":4,"95":1,"107":1,"108":1,"114":1,"118":1,"119":1,"120":1,"127":2,"128":1,"129":3,"130":2,"131":3,"132":2,"133":3,"134":2,"135":4,"137":1,"138":2,"139":2,"140":2,"143":1,"149":1,"150":2,"153":1,"160":1,"162":1,"167":1,"172":2,"179":1,"180":1,"187":1,"191":1,"195":1,"198":2,"199":1,"201":1,"211":1,"212":2,"213":2,"218":1,"220":1,"231":1,"232":2,"241":2,"242":1,"249":1,"250":2,"262":1,"264":1,"266":3,"270":1,"271":2,"276":2,"277":2,"278":1,"299":1,"300":2,"301":3,"302":1,"304":2,"305":1,"309":1,"315":1,"334":1,"343":1,"344":1,"349":1,"366":2,"369":1,"370":2,"378":1,"379":1,"380":6,"383":1,"385":1,"388":1,"389":1,"394":3,"409":1,"410":1,"415":2,"416":1,"417":1,"427":1,"428":2,"429":2,"434":1}}],["android=",{"2":{"124":2}}],["androidmanifest",{"2":{"124":1}}],["android",{"0":{"124":1},"2":{"112":1,"124":41,"146":1,"161":1,"162":3}}],["and",{"0":{"6":1,"44":1,"46":1,"164":1,"174":1,"204":1,"265":1,"266":2,"308":1,"318":1,"360":1,"420":1},"1":{"45":1,"47":1,"48":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1},"2":{"2":1,"4":3,"5":3,"6":6,"8":4,"30":11,"33":5,"34":1,"36":1,"42":1,"43":5,"44":4,"45":1,"46":3,"49":6,"52":4,"53":5,"54":6,"59":1,"60":1,"62":1,"63":1,"64":1,"65":3,"67":1,"68":2,"73":1,"82":1,"83":1,"87":1,"91":1,"92":1,"93":1,"94":1,"95":3,"99":1,"105":1,"107":3,"109":1,"110":5,"111":2,"114":2,"115":3,"116":4,"117":4,"118":3,"119":2,"121":1,"122":1,"124":4,"126":1,"127":4,"128":4,"129":1,"130":2,"131":1,"132":2,"133":1,"134":2,"135":4,"136":1,"138":1,"139":4,"140":3,"142":1,"143":3,"144":1,"145":2,"149":1,"150":1,"152":1,"153":1,"154":1,"157":2,"160":1,"161":1,"162":3,"164":4,"165":2,"166":5,"169":1,"170":1,"171":3,"172":6,"173":5,"177":2,"179":1,"183":1,"193":1,"195":2,"198":3,"199":1,"202":3,"205":1,"209":1,"214":1,"217":1,"218":1,"220":2,"221":1,"222":3,"226":1,"233":1,"236":1,"239":1,"255":1,"261":1,"264":4,"265":2,"266":7,"267":1,"268":1,"274":1,"275":1,"276":2,"277":2,"278":1,"279":1,"280":1,"281":1,"282":1,"285":1,"287":1,"289":1,"291":1,"292":1,"297":1,"298":1,"299":2,"300":3,"302":2,"304":2,"305":2,"308":1,"309":2,"312":1,"313":1,"315":1,"316":2,"317":1,"318":2,"319":1,"324":1,"325":1,"329":1,"338":2,"344":1,"348":1,"349":1,"352":1,"355":1,"356":2,"357":1,"358":2,"362":1,"366":3,"368":4,"369":5,"375":1,"376":1,"379":1,"381":4,"382":1,"387":2,"394":1,"400":1,"401":3,"407":1,"409":3,"411":1,"412":5,"415":3,"416":1,"418":3,"421":1,"425":1,"430":1,"433":1,"434":1}}],["anywhere",{"2":{"127":1,"138":1,"139":1}}],["anyway",{"2":{"41":1}}],["anyone",{"2":{"53":1,"368":1}}],["anything",{"2":{"33":1,"173":1}}],["any",{"0":{"194":1},"2":{"2":1,"8":2,"30":1,"32":3,"33":1,"35":3,"36":1,"41":1,"42":1,"44":1,"49":6,"61":1,"102":1,"103":1,"111":1,"115":1,"116":1,"118":1,"130":1,"132":1,"134":1,"135":1,"136":1,"144":1,"145":1,"152":1,"157":2,"165":1,"172":3,"173":1,"195":1,"199":1,"301":1,"304":1,"305":1,"316":1,"317":1,"343":2,"350":1,"362":1,"370":1,"377":1,"381":1,"383":2,"392":1,"393":1,"394":1,"404":1,"405":1,"416":1}}],["answered",{"2":{"44":1}}],["answer",{"2":{"2":2,"380":2}}],["asking",{"2":{"198":1,"386":1,"415":1}}],["ask",{"0":{"197":1,"414":1},"2":{"183":1,"211":1,"427":1}}],["askforemail",{"0":{"183":1},"2":{"183":2}}],["asks",{"2":{"115":1}}],["aspects",{"2":{"378":1}}],["aspect",{"2":{"173":2,"185":1}}],["asequencebackendmanager",{"2":{"152":1}}],["assured",{"2":{"368":1}}],["assuming",{"2":{"157":1}}],["assumes",{"2":{"173":1}}],["assume",{"2":{"36":1}}],["assigned",{"2":{"333":2}}],["assembled",{"2":{"300":1}}],["assets",{"2":{"6":1,"47":1,"84":5,"114":1,"115":2,"117":2,"124":1,"143":1}}],["assetid",{"2":{"6":2}}],["assetidorassettype",{"2":{"6":1}}],["assettype",{"2":{"6":3}}],["asset",{"2":{"6":6}}],["asstring",{"2":{"278":2}}],["associated",{"2":{"205":1,"358":1,"421":1}}],["association",{"2":{"118":1}}],["asynchronous",{"2":{"127":1,"138":1,"139":1,"267":1}}],["async",{"2":{"35":2,"41":1,"46":1,"49":5,"54":2,"89":1,"127":1,"138":1,"139":1,"171":1,"255":2,"267":1,"300":1,"381":3}}],["as",{"0":{"100":1,"399":1},"2":{"2":2,"6":2,"8":1,"33":2,"41":1,"44":2,"49":4,"53":1,"54":1,"60":1,"61":1,"63":1,"65":1,"68":1,"69":1,"70":1,"82":1,"83":1,"92":2,"100":1,"105":1,"110":1,"115":2,"116":2,"118":1,"120":1,"126":2,"127":1,"128":5,"129":1,"131":1,"133":2,"135":4,"136":1,"139":1,"140":4,"143":1,"145":1,"153":1,"157":1,"162":2,"166":3,"180":1,"191":1,"195":2,"198":1,"199":2,"202":2,"210":1,"211":2,"212":2,"213":2,"214":1,"218":1,"219":1,"222":1,"228":1,"238":1,"255":1,"257":1,"264":1,"271":1,"276":1,"277":1,"279":1,"280":1,"281":1,"282":1,"285":1,"287":1,"289":1,"290":1,"291":1,"299":2,"300":2,"302":3,"304":1,"305":1,"308":1,"309":1,"317":2,"324":1,"325":1,"329":1,"336":1,"337":1,"356":4,"357":3,"358":1,"362":1,"366":1,"367":1,"376":1,"377":1,"379":1,"380":4,"388":1,"389":1,"399":1,"401":1,"407":1,"412":1,"415":1,"416":2,"418":2,"426":1,"427":2,"428":2,"429":2,"430":1,"434":1,"435":1}}],["a",{"0":{"13":1,"15":1,"16":1,"21":1,"22":1,"27":1,"34":1,"37":1,"43":1,"44":1,"54":1,"56":1,"92":1,"97":1,"171":1,"205":1,"214":1,"265":1,"266":1,"321":1,"372":1,"396":1,"421":1,"430":1},"1":{"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"44":1,"45":2,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1},"2":{"2":1,"4":2,"5":1,"8":6,"13":2,"30":6,"32":4,"33":1,"34":1,"35":16,"36":4,"41":5,"42":2,"43":7,"44":4,"45":2,"46":5,"48":1,"49":9,"51":1,"52":2,"53":2,"54":4,"57":1,"60":1,"61":2,"62":1,"64":2,"65":3,"66":1,"69":1,"76":2,"82":2,"83":2,"84":1,"87":1,"89":1,"92":5,"93":1,"94":1,"95":5,"98":1,"99":2,"100":1,"105":1,"106":7,"107":5,"109":3,"110":6,"111":3,"114":4,"115":8,"116":3,"117":5,"118":4,"119":2,"120":2,"124":3,"126":3,"127":6,"128":11,"129":1,"130":4,"132":4,"133":1,"134":4,"135":8,"136":5,"137":1,"138":2,"139":8,"140":6,"141":1,"143":3,"144":1,"145":4,"149":2,"150":6,"152":4,"153":2,"157":2,"158":3,"159":1,"160":1,"162":1,"164":5,"165":1,"166":2,"170":1,"171":4,"172":6,"173":4,"174":1,"181":1,"185":2,"186":1,"191":1,"193":2,"195":1,"198":6,"199":2,"201":1,"202":7,"205":1,"206":1,"208":1,"209":1,"210":2,"211":4,"212":3,"213":3,"214":1,"217":1,"219":4,"220":2,"221":2,"222":3,"223":1,"224":1,"229":1,"230":1,"233":4,"234":1,"239":1,"240":1,"243":3,"244":1,"258":1,"259":1,"260":1,"265":3,"266":10,"267":1,"269":1,"270":4,"271":3,"272":1,"276":5,"277":5,"278":2,"279":7,"280":2,"281":3,"282":1,"283":1,"285":2,"287":3,"288":1,"289":1,"291":2,"292":2,"293":1,"295":1,"296":1,"297":1,"298":1,"299":6,"300":7,"301":1,"302":4,"303":1,"304":3,"305":1,"307":1,"308":2,"310":1,"311":1,"317":1,"318":1,"321":1,"322":1,"324":1,"325":1,"326":1,"333":2,"335":1,"336":1,"337":1,"338":1,"341":1,"343":2,"344":1,"346":2,"348":1,"349":1,"351":1,"352":3,"356":1,"357":2,"366":1,"367":2,"368":6,"369":2,"370":1,"373":1,"376":1,"377":2,"378":1,"379":3,"380":3,"381":6,"382":1,"383":1,"385":2,"386":2,"388":2,"389":4,"393":2,"394":2,"397":1,"398":2,"399":1,"400":2,"401":3,"402":1,"407":1,"408":7,"409":5,"411":3,"412":6,"415":6,"416":2,"417":1,"418":7,"421":1,"422":1,"424":1,"425":1,"426":2,"427":4,"428":3,"429":3,"430":1,"433":1,"435":4}}],["slot",{"2":{"336":5}}],["synonymous",{"2":{"362":1}}],["symbol",{"2":{"304":2}}],["systems",{"2":{"149":1,"157":1}}],["system",{"2":{"59":1,"99":1,"112":2,"115":1,"116":1,"142":1,"161":1,"325":1,"366":1,"375":1,"378":1}}],["swapping",{"2":{"160":1}}],["switches",{"2":{"157":1}}],["switch",{"2":{"157":1}}],["switching",{"2":{"118":1}}],["sso",{"0":{"162":1},"2":{"152":1,"154":2}}],["sqnc",{"2":{"150":1}}],["sfts",{"2":{"133":1}}],["small",{"2":{"210":1,"426":1}}],["smart",{"0":{"300":1,"325":1,"329":1},"1":{"326":1,"327":1,"328":1,"329":1,"330":2,"331":1},"2":{"34":1,"36":2,"95":1,"126":1,"130":1,"132":1,"134":1,"135":3,"136":3,"139":4,"199":1,"287":1,"300":2,"301":1,"302":2,"325":2,"329":2,"343":1,"367":1,"368":1,"416":1}}],["smooth",{"2":{"64":1,"65":1,"221":1,"222":1,"400":1,"401":1}}],["skipfetchsetup",{"2":{"54":2}}],["shape=",{"2":{"381":1}}],["sha",{"2":{"162":1}}],["share",{"0":{"94":1},"2":{"53":1,"94":1,"183":1}}],["showing",{"2":{"311":1}}],["shows",{"2":{"157":1}}],["show",{"2":{"157":1,"190":1,"249":1}}],["showauthsuccessdelegate",{"2":{"152":3}}],["showcases",{"2":{"115":1}}],["showemailinput",{"0":{"81":1}}],["shown",{"2":{"79":1,"80":1,"81":1,"82":1,"83":1,"90":1}}],["should",{"2":{"35":2,"44":1,"45":1,"51":1,"52":1,"53":3,"54":1,"92":1,"99":1,"108":1,"114":1,"116":1,"185":1,"209":1,"267":2,"282":1,"285":1,"287":1,"289":1,"291":1,"304":1,"308":1,"309":1,"315":1,"316":1,"346":1,"349":4,"351":1,"389":1,"398":1,"410":1,"425":1}}],["src=",{"2":{"100":2,"399":2}}],["src",{"2":{"49":1}}],["snippet",{"2":{"46":1,"126":1,"128":1,"129":1,"131":1,"133":1,"135":1,"139":1,"199":1,"279":1,"416":1}}],["scenario",{"2":{"370":5}}],["scenarios",{"2":{"327":1,"370":1}}],["scene",{"2":{"114":1,"115":2,"116":1,"118":1,"140":1,"143":3}}],["scenes",{"2":{"30":1,"298":1}}],["scope",{"2":{"202":1,"356":1,"357":1,"380":1,"418":1}}],["schema",{"2":{"166":1}}],["schemas",{"2":{"124":4}}],["scheme=",{"2":{"124":2}}],["scheme",{"0":{"143":1},"2":{"117":1,"120":2,"121":1,"122":1,"124":3,"143":3}}],["schemes",{"2":{"112":1,"121":1,"122":1}}],["scroll",{"2":{"121":1,"122":1,"316":1,"317":1}}],["scripts",{"2":{"115":1,"139":1}}],["scripting",{"2":{"115":1}}],["scriptableobject",{"2":{"117":3}}],["scriptable",{"2":{"114":1,"143":3,"279":1}}],["script",{"2":{"100":5,"114":1,"115":1,"143":1,"164":5,"399":5}}],["screen",{"2":{"77":1,"118":1,"175":1,"314":1}}],["scratch",{"2":{"44":1}}],["scan",{"2":{"195":1,"261":1}}],["scanned",{"2":{"195":2}}],["scaled",{"2":{"118":1}}],["scale",{"2":{"118":2,"170":1}}],["scaler",{"2":{"118":1}}],["scaling",{"2":{"43":1}}],["scaffold",{"2":{"49":1}}],["sdks",{"2":{"59":1,"60":1,"99":1,"166":1,"169":1,"220":1,"375":1,"376":1}}],["sdk",{"0":{"59":1,"64":1,"375":1},"1":{"65":1},"2":{"35":1,"59":3,"61":1,"62":1,"99":5,"111":2,"115":4,"116":6,"117":2,"118":1,"119":1,"124":5,"126":1,"130":1,"132":1,"134":1,"136":1,"137":1,"140":2,"145":3,"158":1,"199":1,"217":1,"220":1,"269":1,"375":3,"377":1,"378":1,"380":3,"381":2,"394":1,"398":2,"416":1,"433":1}}],["salt",{"2":{"332":1,"344":1}}],["savings",{"2":{"136":1}}],["saves",{"2":{"143":1}}],["save",{"2":{"44":1,"115":1,"170":1}}],["sample",{"2":{"115":8,"117":1,"141":1,"166":1,"381":1}}],["samples",{"0":{"115":1},"2":{"114":2,"115":3}}],["same",{"2":{"35":1,"41":1,"133":1,"166":1,"198":1,"214":1,"228":1,"238":1,"271":1,"349":1,"379":1,"415":1,"430":1}}],["safeguards",{"2":{"370":1}}],["safeguarding",{"2":{"108":1,"410":1}}],["safe",{"2":{"331":1,"370":1}}],["safety",{"2":{"305":1}}],["safetransferfrom",{"2":{"35":2,"41":2,"212":5,"213":5,"214":4,"428":5,"429":5,"430":4}}],["safemint",{"2":{"132":2}}],["safer",{"2":{"116":1}}],["sardine",{"2":{"105":1,"324":1,"407":1}}],["sadfasdf",{"2":{"3":1}}],["sociallogin",{"2":{"152":1,"154":1}}],["socialauthoptions",{"0":{"82":1},"2":{"93":2}}],["social",{"0":{"107":1,"120":1,"154":1,"155":1,"386":1,"409":1},"1":{"108":1,"109":1,"110":1,"121":1,"122":1,"123":1,"124":1,"125":1,"410":1,"411":1,"412":1},"2":{"65":1,"82":1,"106":1,"107":3,"110":2,"112":2,"114":1,"117":1,"120":2,"126":1,"222":1,"330":1,"368":1,"379":1,"380":1,"381":1,"386":1,"387":1,"401":1,"408":1,"409":3,"412":2}}],["sourced",{"2":{"220":1}}],["source",{"2":{"49":1,"63":1,"100":1,"115":1,"135":2,"148":1,"166":1,"173":1,"218":1,"224":1,"234":1,"244":1,"260":1,"368":1,"399":1,"434":1}}],["sources",{"2":{"33":2}}],["solidity",{"2":{"46":1}}],["solutions",{"2":{"4":1,"167":1}}],["so",{"2":{"30":1,"33":1,"43":1,"46":2,"92":1,"117":1,"118":2,"135":2,"144":1,"149":1,"152":4,"199":1,"265":1,"271":1,"299":2,"304":2,"316":1,"329":1,"345":1,"347":1,"368":1,"416":1}}],["soon",{"0":{"28":1,"144":1},"2":{"125":1,"368":1}}],["sometimes",{"2":{"164":1}}],["something",{"2":{"99":1,"126":1,"127":2,"138":1,"139":2,"160":1,"308":1,"316":1,"398":1}}],["someone",{"2":{"53":1}}],["some",{"2":{"8":1,"52":2,"53":4,"112":1,"115":3,"116":1,"120":1,"135":1,"139":1,"140":3,"143":1,"160":1,"173":1,"219":1,"264":1,"268":1,"327":1,"379":1,"435":1}}],["space",{"2":{"42":1,"330":1}}],["spaces",{"2":{"42":3}}],["spam",{"0":{"33":1},"2":{"33":2}}],["spec",{"2":{"150":1}}],["spectator",{"2":{"150":3}}],["special",{"2":{"139":1,"173":1,"232":1,"241":1,"281":1,"282":1,"285":1,"287":1,"289":1,"291":1}}],["specify",{"2":{"105":1,"173":1,"174":1,"186":1,"187":1,"188":1,"191":1,"324":1,"407":1}}],["specifying",{"2":{"93":1}}],["specified",{"2":{"191":1,"192":1,"211":1,"283":1,"285":1,"287":1,"427":1}}],["specifies",{"2":{"89":1,"90":1}}],["specifics",{"0":{"164":1}}],["specific",{"2":{"8":1,"30":1,"35":5,"41":1,"46":1,"53":1,"76":1,"99":1,"120":1,"195":1,"202":1,"282":1,"319":1,"398":1,"418":1}}],["specs",{"2":{"43":1}}],["speed",{"2":{"34":1,"43":1}}],["sponsoring",{"0":{"36":1,"48":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1},"2":{"35":1,"36":1}}],["sponsor",{"0":{"46":1},"1":{"47":1,"48":1},"2":{"8":1,"13":1,"43":1,"48":2}}],["sponsored",{"0":{"41":1},"2":{"8":1,"36":1,"46":1,"54":1}}],["s",{"2":{"6":1,"33":1,"42":1,"49":2,"62":1,"71":1,"74":1,"82":1,"83":1,"92":2,"106":1,"108":1,"110":1,"111":1,"115":1,"126":1,"135":1,"142":1,"150":1,"154":1,"160":1,"173":1,"177":1,"180":1,"195":1,"197":1,"199":1,"202":2,"206":1,"217":1,"219":1,"249":1,"266":1,"310":1,"317":1,"329":2,"334":1,"337":1,"338":1,"345":1,"349":1,"351":1,"358":1,"368":1,"369":3,"370":1,"380":1,"386":1,"388":1,"408":1,"410":1,"412":1,"414":1,"416":1,"418":2,"422":1,"433":1,"435":1}}],["sufficient",{"2":{"386":1}}],["sufficiently",{"2":{"35":1}}],["suffix",{"2":{"316":1}}],["suggestgastipcap",{"0":{"294":1},"2":{"294":1}}],["suggestgasprice",{"0":{"293":1},"2":{"293":1}}],["suggested",{"2":{"293":1,"294":1}}],["surf",{"2":{"172":1}}],["sure",{"2":{"44":1,"49":4,"92":1,"124":1,"129":2,"150":1,"152":1,"166":1}}],["summarize",{"2":{"158":1}}],["summary",{"0":{"90":1},"2":{"90":1}}],["suit",{"2":{"142":1}}],["suspicious",{"2":{"109":1,"411":1}}],["subject",{"2":{"382":2}}],["submits",{"2":{"274":1,"275":1,"276":1,"277":1}}],["submit",{"2":{"140":1,"144":1,"292":1}}],["submitted",{"2":{"136":1,"276":3,"277":3}}],["subsequent",{"0":{"350":1}}],["subscribe",{"2":{"126":1}}],["substitute",{"2":{"124":2}}],["sub",{"2":{"99":3,"398":3}}],["subdomain",{"2":{"52":1,"53":1}}],["succeeded",{"2":{"195":1,"393":2,"394":1}}],["success",{"2":{"52":1,"150":1}}],["successfulcontractdeploymentreturn",{"2":{"139":1}}],["successfultransactionreturn",{"2":{"127":1}}],["successfully",{"2":{"119":1,"120":1,"381":1,"393":1}}],["successful",{"0":{"393":1},"2":{"35":2,"41":1,"158":3,"392":1}}],["such",{"2":{"6":2,"52":1,"65":1,"68":1,"92":1,"110":2,"198":1,"222":1,"232":1,"241":1,"264":1,"266":1,"370":1,"389":1,"390":1,"401":1,"412":2,"415":1}}],["supplied",{"2":{"157":1}}],["supplies",{"2":{"32":1}}],["supplement",{"2":{"115":1}}],["supplying",{"2":{"153":1}}],["supply",{"2":{"32":2}}],["supports",{"2":{"63":1,"105":1,"193":1,"195":2,"218":1,"324":1,"407":1,"434":1}}],["supported",{"0":{"31":1},"2":{"31":1,"106":1,"121":1,"122":1,"164":1,"166":1,"168":1,"186":2,"190":1,"228":1,"238":1,"329":1,"380":1,"381":1,"408":1}}],["support",{"0":{"2":1,"219":1,"435":1},"2":{"2":3,"30":2,"49":1,"50":1,"91":1,"95":1,"103":1,"105":1,"128":1,"167":1,"172":1,"220":1,"324":1,"330":1,"343":1,"355":1,"368":1,"386":1,"405":1,"407":1}}],["super",{"2":{"30":1}}],["storage",{"2":{"202":1,"205":1,"209":1,"332":1,"336":2,"418":1,"421":1,"425":1}}],["store",{"2":{"205":1,"332":1,"421":1}}],["stores",{"2":{"158":1}}],["storedcredentials",{"2":{"159":1}}],["storedcredentialsvalid",{"2":{"152":1}}],["stored",{"2":{"106":1,"108":1,"149":4,"202":1,"209":1,"336":1,"408":1,"410":1,"418":1,"425":1}}],["straightforward",{"2":{"299":1}}],["streamlining",{"2":{"202":1,"418":1}}],["strictmode",{"2":{"381":2}}],["strictly",{"2":{"299":1}}],["stripe",{"2":{"172":1}}],["stringify",{"2":{"49":3}}],["string",{"2":{"35":1,"46":1,"49":9,"52":1,"53":1,"54":2,"84":1,"117":1,"128":1,"130":1,"132":1,"134":1,"135":1,"138":1,"139":2,"198":1,"274":1,"276":3,"278":2,"279":1,"281":3,"283":1,"284":1,"286":1,"287":1,"290":2,"292":2,"299":2,"301":5,"303":1,"304":1,"343":1,"356":1,"357":2,"415":1}}],["structured",{"0":{"357":1},"2":{"357":1}}],["structure",{"2":{"232":2,"233":2,"241":2,"243":2,"264":3,"266":2}}],["structs",{"2":{"159":1}}],["struct",{"2":{"153":1}}],["style",{"2":{"124":2}}],["styling",{"2":{"76":1}}],["still",{"2":{"111":1,"116":1,"139":1,"140":2,"145":1,"202":1,"219":1,"344":1,"370":1,"382":1,"418":1,"435":1}}],["step",{"0":{"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1},"2":{"6":1,"36":1,"44":3,"49":1,"53":1,"54":1,"117":1,"379":1}}],["steps",{"0":{"66":1,"223":1,"402":1},"2":{"5":1,"6":2,"36":1,"43":2,"46":1,"52":1,"54":2,"69":1,"86":1,"123":1,"164":1}}],["static",{"2":{"137":1}}],["state",{"2":{"116":1,"352":1,"381":1}}],["status",{"0":{"387":1},"1":{"388":1,"389":1,"390":1},"2":{"35":6,"41":3,"49":10,"71":1,"387":1,"393":3}}],["standalone",{"2":{"112":2,"146":2}}],["standard",{"2":{"103":1,"129":1,"130":1,"131":1,"132":1,"133":2,"134":1,"199":1,"212":1,"213":1,"214":1,"219":2,"220":1,"270":1,"304":1,"355":1,"405":1,"416":1,"428":1,"429":1,"430":1,"435":2}}],["standardized",{"2":{"49":1,"50":1}}],["standards",{"2":{"33":1,"172":1}}],["startingblocknumber",{"2":{"285":1}}],["starting",{"2":{"92":1,"115":1}}],["starter",{"2":{"44":1}}],["started",{"0":{"32":1,"58":1,"67":1,"374":1},"1":{"59":1,"60":1,"61":1,"68":1,"375":1,"376":1,"377":1},"2":{"30":1,"57":1,"66":1,"68":1,"98":1,"102":1,"103":1,"165":1,"223":1,"322":1,"373":1,"397":1,"402":1,"404":1,"405":1}}],["start",{"2":{"2":1,"60":1,"61":1,"152":1,"153":2,"154":1,"160":1,"376":1,"377":1}}],["stack",{"0":{"1":1},"2":{"2":1,"170":1}}],["silently",{"2":{"267":1,"390":1}}],["situations",{"2":{"264":1}}],["situation",{"2":{"219":1,"435":1}}],["site",{"2":{"44":1}}],["simulation",{"2":{"394":1}}],["simulations",{"2":{"393":1,"394":1}}],["simulating",{"2":{"394":1}}],["similarly",{"2":{"152":1,"254":1,"255":1,"276":1,"277":1,"380":1}}],["similar",{"2":{"118":1,"127":1,"150":1,"160":1,"212":1,"213":1,"305":1,"357":1,"428":1,"429":1}}],["simply",{"2":{"6":2,"115":1,"136":1,"166":1,"300":1,"302":1,"309":1}}],["simpler",{"2":{"198":1,"415":1}}],["simple",{"2":{"4":1,"5":1,"8":1,"30":1,"157":1,"165":1,"172":1,"198":1,"317":1,"327":1,"368":1,"381":1,"415":1}}],["size",{"2":{"118":1,"121":1,"122":1}}],["since",{"2":{"95":1,"108":1,"115":1,"136":1,"152":1,"289":1,"304":1,"348":1,"349":1,"410":1}}],["singlesigner",{"2":{"35":2,"41":1,"46":1,"54":1}}],["single",{"2":{"8":1,"54":1,"95":1,"99":1,"106":1,"133":1,"136":1,"170":1,"211":3,"212":2,"213":2,"214":1,"276":1,"277":1,"310":1,"326":1,"398":1,"408":1,"427":3,"428":2,"429":2,"430":1}}],["side",{"0":{"199":1,"416":1},"2":{"35":1,"152":1,"164":1,"199":1,"202":1,"207":1,"208":1,"209":1,"219":1,"232":1,"241":1,"370":1,"416":1,"418":1,"423":1,"424":1,"425":1,"435":1}}],["signtransactions",{"2":{"210":1,"426":1}}],["sign+verify",{"2":{"198":1,"415":1}}],["signedtransactionstring",{"2":{"292":1}}],["signedmessage",{"2":{"278":2}}],["signed",{"0":{"356":1},"2":{"173":2,"186":1,"187":1,"188":1,"198":3,"199":1,"202":1,"210":1,"292":1,"356":3,"357":1,"358":1,"415":3,"416":1,"418":1,"426":1}}],["signer2",{"2":{"42":2}}],["signer1",{"2":{"42":2}}],["signers",{"2":{"42":1,"332":1,"335":1,"337":1,"338":1,"342":1,"343":4,"356":1,"357":1,"367":1}}],["signer",{"0":{"368":1,"369":1},"2":{"35":7,"41":4,"46":3,"54":4,"204":2,"206":1,"210":2,"211":4,"212":4,"213":4,"214":4,"337":1,"420":2,"422":1,"426":2,"427":4,"428":4,"429":4,"430":4}}],["signmessagereturn",{"2":{"138":1}}],["signmessage",{"0":{"278":1},"2":{"138":3,"206":1,"208":1,"278":2,"356":1,"357":1,"422":1,"424":1}}],["signinwithemail",{"0":{"187":1},"2":{"187":2}}],["signinwith",{"0":{"186":1},"2":{"186":2}}],["signinoptions",{"0":{"188":1},"2":{"173":2,"188":2}}],["signingin",{"2":{"381":1}}],["signing",{"2":{"117":1,"118":1,"138":1,"164":1,"179":1,"195":1,"198":1,"202":1,"210":1,"355":1,"356":1,"357":1,"379":2,"389":1,"415":1,"418":1,"426":1}}],["signin",{"0":{"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"154":1,"155":1},"1":{"79":1,"80":1,"81":1,"82":1,"83":1},"2":{"78":1,"93":1,"152":1,"379":1,"380":1,"381":1,"382":1,"383":1,"393":1,"394":1}}],["signs",{"2":{"71":1,"120":1,"274":1,"275":1,"276":1,"277":1}}],["signaturevalidation",{"2":{"358":1}}],["signatures",{"0":{"201":1,"357":1,"417":1},"2":{"219":1,"337":1,"338":1,"344":1,"356":1,"357":1,"358":5,"435":1}}],["signature",{"0":{"196":1,"207":1,"209":1,"355":1,"413":1,"423":1,"425":1},"1":{"197":1,"198":1,"199":1,"356":1,"357":1,"358":1,"414":1,"415":1,"416":1},"2":{"43":1,"135":2,"138":1,"198":1,"199":1,"206":1,"207":2,"209":3,"278":1,"299":1,"300":1,"355":1,"356":2,"357":2,"358":8,"415":1,"416":1,"422":1,"423":2,"425":3}}],["signals",{"2":{"42":1}}],["signup",{"2":{"13":1}}],["sign",{"0":{"78":1,"119":1,"120":1,"138":1,"206":1,"208":1,"379":2,"380":2,"422":1,"424":1},"1":{"79":1,"80":1,"81":1,"82":1,"83":1,"121":1,"122":1,"123":1,"124":1,"125":1,"380":2,"381":2},"2":{"5":1,"30":1,"35":1,"46":1,"71":1,"78":1,"79":1,"80":1,"81":1,"82":1,"112":2,"114":1,"117":1,"119":1,"120":2,"126":1,"138":1,"165":1,"173":1,"183":1,"186":1,"187":1,"188":1,"198":2,"201":1,"206":1,"208":1,"278":1,"314":1,"316":1,"318":1,"367":1,"369":1,"379":1,"380":1,"415":2,"417":1,"422":1,"424":1}}],["self",{"2":{"335":1,"343":1,"348":1}}],["selector",{"2":{"358":1}}],["selects",{"2":{"195":1}}],["selecting",{"2":{"46":1,"266":1}}],["selectfee",{"2":{"35":1,"41":1}}],["select",{"2":{"35":1,"46":1,"53":1,"121":2,"122":2,"164":1,"313":1}}],["selectwallet",{"2":{"35":1}}],["sepolia",{"2":{"323":1}}],["separate",{"2":{"309":1}}],["senttransactionresponse",{"2":{"393":1}}],["sent",{"2":{"214":1,"317":1,"393":1,"394":2,"430":1}}],["sends",{"2":{"315":1,"385":1,"390":1}}],["sendquery",{"2":{"302":3}}],["sendrawtransaction",{"0":{"292":1},"2":{"292":1}}],["senderc1155values",{"2":{"133":3,"136":2}}],["senderc1155",{"0":{"133":1},"1":{"134":1},"2":{"133":1,"136":1}}],["senderc721",{"0":{"131":1},"1":{"132":1},"2":{"131":1,"136":1}}],["senderc20",{"0":{"129":1},"1":{"130":1},"2":{"129":1,"136":1,"389":1}}],["senderaddress",{"2":{"35":1,"41":1}}],["sending",{"0":{"210":1,"211":1,"212":1,"213":1,"214":1,"426":1,"427":1,"428":1,"429":1,"430":1},"2":{"42":1,"127":1,"136":2,"139":1,"212":2,"213":2,"304":1,"379":1,"389":1,"392":1,"394":1,"428":2,"429":2}}],["sendtransactionmethod",{"2":{"300":1}}],["sendtransactionmethodandwaitforreceipt",{"2":{"300":2,"304":1}}],["sendtransactionandwaitforreceipt",{"0":{"275":1},"2":{"275":1,"277":1,"298":1,"300":2,"304":1}}],["sendtransactionbatchandwaitforreceipts",{"0":{"277":1}}],["sendtransactionbatch",{"0":{"276":1},"2":{"212":1,"213":1,"276":1,"428":1,"429":1}}],["sendtransaction",{"0":{"274":1},"2":{"35":1,"41":1,"42":3,"54":1,"127":2,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":2,"136":2,"139":1,"210":2,"211":2,"212":1,"213":1,"214":2,"274":1,"390":1,"391":1,"393":1,"394":2,"426":2,"427":2,"428":1,"429":1,"430":2}}],["send",{"2":{"8":1,"35":2,"36":1,"41":1,"42":2,"128":2,"129":1,"130":1,"131":1,"132":1,"133":2,"134":1,"135":1,"153":1,"211":3,"212":2,"213":2,"300":1,"302":1,"304":1,"380":2,"386":1,"388":1,"427":3,"428":2,"429":2}}],["seqindexer",{"2":{"168":2}}],["sequentially",{"2":{"34":1,"276":1,"277":1}}],["sequentual",{"2":{"34":1}}],["sequenceonboard",{"2":{"246":2}}],["sequenceoptions",{"2":{"246":1}}],["sequencemodule",{"2":{"246":2}}],["sequencewallet",{"2":{"236":2}}],["sequencewaas",{"2":{"61":2,"377":2,"379":2,"380":2,"381":2,"382":2,"383":2,"393":1,"394":1}}],["sequenceindexer",{"2":{"167":2}}],["sequenceutils",{"2":{"361":1}}],["sequenceunreal",{"2":{"164":2}}],["sequenceui",{"2":{"150":1}}],["sequencebackendmanager",{"2":{"152":3}}],["sequenceplugin",{"2":{"148":2,"150":4}}],["sequencecontext",{"2":{"361":1}}],["sequenceconnector",{"2":{"226":2,"254":2,"255":3}}],["sequenceconfig",{"2":{"114":1,"117":4,"121":1,"122":1,"124":1,"279":1}}],["sequencecanvas",{"2":{"143":1}}],["sequencesdk",{"2":{"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":2,"136":1}}],["sequenceethclient",{"2":{"279":2,"280":1}}],["sequenceethereum",{"2":{"111":1,"130":1,"132":1,"134":1,"267":3,"268":1,"269":1,"271":1,"279":1,"301":1}}],["sequenceencryptor",{"2":{"149":1}}],["sequenceexamples",{"2":{"118":1,"140":2}}],["sequenceapiclient",{"2":{"49":1}}],["sequencekit",{"0":{"14":1,"20":1,"64":1},"1":{"65":1},"2":{"97":1,"98":1,"396":1,"397":1}}],["sequence",{"0":{"36":1,"67":1,"68":1,"91":1,"157":1,"158":1,"160":1,"194":1,"203":1,"204":1,"215":1,"221":1,"306":1,"312":1,"366":1,"368":1,"369":1,"400":1,"419":1,"420":1,"431":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"68":1,"92":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"216":1,"217":1,"218":1,"219":1,"222":1,"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"367":1,"368":1,"369":1,"370":1,"401":1,"420":1,"421":1,"422":1,"423":1,"424":1,"425":1,"432":1,"433":1,"434":1,"435":1},"2":{"2":2,"4":2,"5":2,"6":8,"7":2,"8":5,"13":1,"30":6,"33":6,"34":2,"35":10,"36":1,"41":4,"43":2,"46":6,"49":9,"50":2,"54":4,"60":2,"61":1,"62":5,"63":1,"64":1,"65":1,"66":2,"67":1,"68":1,"73":1,"74":1,"76":2,"83":1,"86":1,"91":2,"92":2,"93":2,"94":1,"95":2,"99":1,"102":3,"103":4,"104":1,"105":4,"106":2,"107":3,"110":1,"111":2,"114":1,"115":1,"116":1,"117":2,"124":5,"136":2,"137":2,"141":1,"143":1,"145":4,"148":3,"150":3,"152":1,"157":6,"158":1,"164":3,"165":5,"166":5,"167":3,"168":4,"169":3,"170":1,"171":1,"172":10,"173":9,"174":1,"184":2,"189":1,"190":1,"193":1,"194":1,"195":6,"197":2,"198":3,"199":4,"201":1,"202":1,"206":1,"207":1,"217":5,"218":1,"219":5,"220":6,"221":1,"222":1,"223":2,"224":2,"229":1,"230":1,"234":2,"239":1,"240":1,"244":2,"245":3,"246":1,"248":1,"249":1,"250":1,"254":1,"255":2,"257":1,"258":1,"260":2,"261":2,"262":1,"307":1,"312":1,"313":1,"317":1,"319":3,"323":1,"324":4,"325":1,"331":1,"332":2,"333":1,"337":1,"344":1,"355":1,"356":1,"357":1,"362":3,"366":2,"367":1,"368":2,"369":4,"370":4,"376":2,"377":1,"378":1,"379":1,"380":1,"381":8,"386":1,"393":1,"394":1,"398":1,"400":1,"401":1,"402":2,"404":3,"405":4,"406":1,"407":4,"408":2,"409":3,"412":1,"414":2,"415":3,"416":4,"417":1,"418":1,"422":1,"423":1,"433":5,"434":1,"435":5}}],["series",{"2":{"152":1}}],["serves",{"2":{"115":1}}],["servers",{"2":{"109":1,"126":1,"411":1}}],["serverprivatekey",{"2":{"35":2,"41":1}}],["serverless",{"0":{"27":1,"43":1},"1":{"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1},"2":{"43":1,"319":1}}],["server",{"0":{"34":1,"35":1,"36":1,"199":1,"416":1},"1":{"35":1,"36":1,"37":2,"38":2,"39":2,"40":2,"41":2,"42":1},"2":{"6":2,"30":1,"34":1,"35":6,"41":3,"46":2,"166":1,"199":2,"207":1,"209":1,"219":1,"232":1,"241":1,"264":2,"266":1,"416":2,"423":1,"425":1,"435":1}}],["services",{"2":{"33":2,"219":1,"435":1}}],["service",{"2":{"4":1,"5":2,"8":1,"13":1,"30":3,"33":1,"140":1,"165":1,"279":1,"366":1,"368":1,"369":1}}],["semi",{"2":{"133":1}}],["semantic",{"2":{"111":1,"145":1}}],["several",{"2":{"99":1,"398":1}}],["seamless",{"2":{"43":1,"56":1,"94":1,"95":1,"198":1,"369":1,"372":1,"415":1}}],["seamlessly",{"0":{"221":1,"400":1},"1":{"222":1,"401":1},"2":{"30":1,"65":1,"222":1,"401":1}}],["sessionid",{"2":{"379":1,"383":1}}],["sessionhash",{"2":{"379":3,"380":2,"381":6}}],["sessionaddress",{"2":{"205":1,"209":1,"421":1,"425":1}}],["sessionwallet",{"2":{"205":2,"208":1,"421":2,"424":1}}],["sessionprivatekey",{"2":{"205":4,"421":4}}],["sessionsignature",{"2":{"208":1,"209":1,"424":1,"425":1}}],["sessions",{"0":{"382":1},"2":{"199":2,"379":1,"382":4,"383":2,"416":2}}],["sessionsettings",{"2":{"54":2}}],["session",{"0":{"108":1,"202":1,"203":1,"205":1,"208":1,"209":1,"378":1,"383":1,"388":1,"390":1,"391":1,"410":1,"418":1,"419":1,"421":1,"424":1,"425":1},"1":{"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"379":1,"380":1,"381":1,"382":1,"383":1,"389":1,"420":1,"421":1,"422":1,"423":1,"424":1,"425":1},"2":{"35":14,"41":6,"42":2,"44":1,"46":5,"54":5,"107":4,"108":2,"109":1,"118":1,"119":1,"158":2,"159":1,"195":1,"201":1,"202":4,"206":1,"207":2,"208":1,"209":5,"368":2,"378":1,"380":3,"381":5,"383":4,"387":1,"388":2,"389":3,"390":3,"391":2,"393":1,"394":1,"409":4,"410":2,"411":1,"417":1,"418":4,"422":1,"423":2,"424":1,"425":5}}],["seconds",{"2":{"143":1,"178":2}}],["second",{"2":{"115":1,"128":1,"379":1}}],["security",{"0":{"149":1},"2":{"95":1,"106":1,"110":2,"172":2,"325":1,"368":1,"408":1,"412":2}}],["securely",{"2":{"149":2,"319":1}}],["secured",{"2":{"107":1,"409":1}}],["secure",{"2":{"13":1,"43":1,"64":1,"65":1,"106":2,"202":2,"221":1,"222":1,"368":1,"400":1,"401":1,"408":2,"418":2}}],["section",{"2":{"35":1,"50":1,"121":1,"122":1,"124":1,"128":1,"232":2,"241":2,"312":1,"315":1,"318":1,"356":1,"357":1,"393":1,"394":1}}],["seen",{"2":{"367":1}}],["seemlessly",{"2":{"136":1}}],["see",{"2":{"31":1,"35":1,"41":1,"49":1,"50":1,"54":1,"82":1,"83":1,"102":1,"103":1,"105":1,"112":1,"116":2,"118":1,"124":2,"126":1,"128":1,"135":1,"165":1,"167":2,"168":2,"173":1,"185":1,"193":1,"199":1,"219":1,"220":3,"232":4,"241":4,"264":2,"318":1,"321":1,"324":1,"352":1,"379":1,"381":3,"393":1,"394":1,"404":1,"405":1,"407":1,"416":1,"435":1}}],["seterror",{"2":{"381":3}}],["setbasemetadatauri",{"2":{"315":1,"316":1}}],["setitem",{"2":{"205":1,"421":1}}],["setopenwalletmodal",{"2":{"72":2}}],["setopenconnectmodal",{"2":{"71":2}}],["setting",{"0":{"69":1,"70":1},"2":{"264":1,"266":1}}],["settings",{"0":{"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1},"2":{"33":1,"54":3,"87":1,"89":1,"117":1,"121":4,"122":4,"124":2,"148":1,"150":1,"164":2,"173":8,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1}}],["setupcredentials",{"2":{"150":1}}],["setup",{"0":{"44":1,"60":1,"61":1,"117":1,"150":1,"162":1,"376":1,"377":1},"1":{"45":1},"2":{"43":1,"110":1,"114":3,"115":1,"117":1,"127":1,"138":1,"139":1,"150":2,"152":1,"157":2,"163":1,"265":1,"412":1}}],["setsigningin",{"2":{"381":1}}],["setsessionhash",{"2":{"381":3}}],["sets",{"2":{"6":1,"157":1,"381":1}}],["set",{"0":{"309":1,"312":1,"316":1},"2":{"6":1,"33":1,"44":1,"49":4,"120":1,"124":3,"143":3,"161":1,"192":1,"312":1,"315":1,"316":1,"332":1,"337":1,"349":1}}]],"serializationVersion":2} diff --git a/api/embedded-wallet/index.html b/api/embedded-wallet/index.html index 389564aa89..681b1d6ef9 100644 --- a/api/embedded-wallet/index.html +++ b/api/embedded-wallet/index.html @@ -7,13 +7,13 @@ Embedded Wallet API – Sequence - + - - + +
Skip to content

Embedded Wallet API

diff --git a/api/index.html b/api/index.html index 2f0190fc79..aa151253e5 100644 --- a/api/index.html +++ b/api/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
Skip to content

Overview

diff --git a/api/indexer/01-overview/index.html b/api/indexer/01-overview/index.html index d3183b43a0..b8cec1371d 100644 --- a/api/indexer/01-overview/index.html +++ b/api/indexer/01-overview/index.html @@ -7,13 +7,13 @@ Indexer – Sequence - + - - + +
Skip to content

Indexer

diff --git a/api/indexer/02-installation/index.html b/api/indexer/02-installation/index.html index b3d9dafa49..e4d43b97a5 100644 --- a/api/indexer/02-installation/index.html +++ b/api/indexer/02-installation/index.html @@ -7,13 +7,13 @@ Indexer Installation – Sequence - + - - + +
Skip to content

Indexer Installation

@@ -39,7 +39,8 @@

pnpm install 0xsequence ethers

or

yarn add 0xsequence ethers
-

This code requires an API Access Key from Sequence Builder then in your app (using your API_Access_Key)

+

This code requires an API Access Key from

Sequence Builder
+

then in your app (using your API_Access_Key)

import { SequenceIndexer } from '@0xsequence/indexer'
  
 // see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of
@@ -71,7 +72,7 @@ 

_, tokenBalances, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, nil, &includeMetadata, &metadataOptions, nil)


Unity or Unreal Installation

-

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

+

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


diff --git a/api/indexer/03-fetch-tokens/index.html b/api/indexer/03-fetch-tokens/index.html index da6e0327a4..a3e11defb4 100644 --- a/api/indexer/03-fetch-tokens/index.html +++ b/api/indexer/03-fetch-tokens/index.html @@ -7,13 +7,13 @@ Tokens API – Sequence - + - - + +
Skip to content

Tokens API

diff --git a/api/indexer/04-transaction-history/index.html b/api/indexer/04-transaction-history/index.html index 6b23caca71..7418bb97bb 100644 --- a/api/indexer/04-transaction-history/index.html +++ b/api/indexer/04-transaction-history/index.html @@ -7,13 +7,13 @@ Wallet transaction history – Sequence - + - - + +
Skip to content

Wallet transaction history

diff --git a/api/indexer/05-unique-tokens/index.html b/api/indexer/05-unique-tokens/index.html index 4dcae1e123..429bf5d3be 100644 --- a/api/indexer/05-unique-tokens/index.html +++ b/api/indexer/05-unique-tokens/index.html @@ -7,13 +7,13 @@ Tokens in a contract – Sequence - + - - + +
Skip to content

Tokens in a contract

diff --git a/api/indexer/06-transation-history-token-contract/index.html b/api/indexer/06-transation-history-token-contract/index.html index 6ad00178a0..0e942b1e75 100644 --- a/api/indexer/06-transation-history-token-contract/index.html +++ b/api/indexer/06-transation-history-token-contract/index.html @@ -7,13 +7,13 @@ Contract token history – Sequence - + - - + +
Skip to content

Contract token history

diff --git a/api/indexer/07-native-network-balance/index.html b/api/indexer/07-native-network-balance/index.html index b016482bb5..6f2a498754 100644 --- a/api/indexer/07-native-network-balance/index.html +++ b/api/indexer/07-native-network-balance/index.html @@ -7,13 +7,13 @@ Native network balances (ie. ETH, MATIC, etc.) – Sequence - + - - + +
Skip to content

Native network balances (ie. ETH, MATIC, etc.)

diff --git a/api/indexer/08-metadata-tips/index.html b/api/indexer/08-metadata-tips/index.html index f15d45bb66..77df74b0b5 100644 --- a/api/indexer/08-metadata-tips/index.html +++ b/api/indexer/08-metadata-tips/index.html @@ -7,13 +7,13 @@ Metadata Tips & Notes on Spam – Sequence - + - - + +
Skip to content

Metadata Tips & Notes on Spam

diff --git a/api/marketplace/index.html b/api/marketplace/index.html index c4d8fe52f4..059e67bd69 100644 --- a/api/marketplace/index.html +++ b/api/marketplace/index.html @@ -7,13 +7,13 @@ Marketplace API – Sequence - + - - + +
Skip to content

Marketplace API

diff --git a/api/metadata/index.html b/api/metadata/index.html index e63eab3fee..de25b637ae 100644 --- a/api/metadata/index.html +++ b/api/metadata/index.html @@ -7,13 +7,13 @@ Metadata API – Sequence - + - - + +
Skip to content

Metadata API

diff --git a/api/relayer/index.html b/api/relayer/index.html index 8660c64447..f2937b7e6f 100644 --- a/api/relayer/index.html +++ b/api/relayer/index.html @@ -7,13 +7,13 @@ Relayer API – Sequence - + - - + +
Skip to content

Relayer API

diff --git a/assets/01-connect-wallet-F3vgRTiZ.js b/assets/01-connect-wallet-Cl599MBF.js similarity index 99% rename from assets/01-connect-wallet-F3vgRTiZ.js rename to assets/01-connect-wallet-Cl599MBF.js index 21e689e603..cdc500cf38 100644 --- a/assets/01-connect-wallet-F3vgRTiZ.js +++ b/assets/01-connect-wallet-Cl599MBF.js @@ -1,4 +1,4 @@ -import{u as l,j as e}from"./index-BXOUdEEZ.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{u as l,j as e}from"./index-CchMGs7j.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/01-connect-wallet-U8b6QA2h.js b/assets/01-connect-wallet-Dt-ODA_X.js similarity index 99% rename from assets/01-connect-wallet-U8b6QA2h.js rename to assets/01-connect-wallet-Dt-ODA_X.js index 42eeb8b81c..78e7d143c1 100644 --- a/assets/01-connect-wallet-U8b6QA2h.js +++ b/assets/01-connect-wallet-Dt-ODA_X.js @@ -1,4 +1,4 @@ -import{u as l,j as e,e as a}from"./index-BXOUdEEZ.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{u as l,j as e,e as a}from"./index-CchMGs7j.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/01-deploy-an-item-collection-C0Yi1LxS.js b/assets/01-deploy-an-item-collection-DjzMitxr.js similarity index 99% rename from assets/01-deploy-an-item-collection-C0Yi1LxS.js rename to assets/01-deploy-an-item-collection-DjzMitxr.js index bddbded547..3bbc101cb5 100644 --- a/assets/01-deploy-an-item-collection-C0Yi1LxS.js +++ b/assets/01-deploy-an-item-collection-DjzMitxr.js @@ -1,4 +1,4 @@ -import{u as s,j as e,e as i}from"./index-BXOUdEEZ.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{u as s,j as e,e as i}from"./index-CchMGs7j.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/01-fiat-on-ramps-BpEZsM2H.js b/assets/01-fiat-on-ramps-CrXvbg7X.js similarity index 96% rename from assets/01-fiat-on-ramps-BpEZsM2H.js rename to assets/01-fiat-on-ramps-CrXvbg7X.js index dd4e37c8b1..7320a33de9 100644 --- a/assets/01-fiat-on-ramps-BpEZsM2H.js +++ b/assets/01-fiat-on-ramps-CrXvbg7X.js @@ -1,4 +1,4 @@ -import{u as t,j as e}from"./index-BXOUdEEZ.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{u as t,j as e}from"./index-CchMGs7j.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/01-introduction-D5-dZ9eG.js b/assets/01-introduction-ORpy4spW.js similarity index 98% rename from assets/01-introduction-D5-dZ9eG.js rename to assets/01-introduction-ORpy4spW.js index d61db8f3b6..b59fbce078 100644 --- a/assets/01-introduction-D5-dZ9eG.js +++ b/assets/01-introduction-ORpy4spW.js @@ -1,4 +1,4 @@ -import{u as a,j as e}from"./index-BXOUdEEZ.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{u as a,j as e}from"./index-CchMGs7j.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/01-overview-DwlQ2Vdp.js b/assets/01-overview-BOMJT4H0.js similarity index 98% rename from assets/01-overview-DwlQ2Vdp.js rename to assets/01-overview-BOMJT4H0.js index 839017c86f..4cc4ce2464 100644 --- a/assets/01-overview-DwlQ2Vdp.js +++ b/assets/01-overview-BOMJT4H0.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.js";const s={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{u as i,j as e}from"./index-CchMGs7j.js";const s={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.aside,{"data-callout":"warning",children:[e.jsx(n.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),e.jsxs(n.p,{children:["Our ",e.jsx(n.strong,{children:"Indexer"})," service is now managed through ",e.jsx(n.strong,{children:e.jsx(n.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),e.jsx(n.p,{children:e.jsxs(n.a,{href:"https://sequence.build",children:["Get started with the ",e.jsx(n.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` diff --git a/assets/01-overview-GJz_L1Q9.js b/assets/01-overview-BOVk6_Iv.js similarity index 97% rename from assets/01-overview-GJz_L1Q9.js rename to assets/01-overview-BOVk6_Iv.js index 7677e996e6..7eb408412b 100644 --- a/assets/01-overview-GJz_L1Q9.js +++ b/assets/01-overview-BOVk6_Iv.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.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{u as r,j as e}from"./index-CchMGs7j.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/01-overview-DwQx-QaI.js b/assets/01-overview-CKoYw6iK.js similarity index 95% rename from assets/01-overview-DwQx-QaI.js rename to assets/01-overview-CKoYw6iK.js index 29c7527463..97c06a6cdc 100644 --- a/assets/01-overview-DwQx-QaI.js +++ b/assets/01-overview-CKoYw6iK.js @@ -1,4 +1,4 @@ -import{u as l,j as e}from"./index-BXOUdEEZ.js";const r={slug:"/wallet",title:"Wallet",description:"undefined"};function a(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"wallet",children:["Wallet",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{u as l,j as e}from"./index-CchMGs7j.js";const r={slug:"/wallet",title:"Wallet",description:"undefined"};function a(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"wallet",children:["Wallet",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Sequence Wallet gives you a friendly, non-custodial wallet for your users with multi-chain support and seamless integration."}),` `,e.jsx("div",{class:"text--center",children:e.jsx("img",{src:"/img/wallet-screen.png"})}),` `,e.jsx(t.p,{children:`Most wallets for Ethereum have a single private key that has full control over a wallet, i.e. an Externally Owned Account (EOAs). diff --git a/assets/01-overview-CDm9TwOo.js b/assets/01-overview-CRNWUnhq.js similarity index 97% rename from assets/01-overview-CDm9TwOo.js rename to assets/01-overview-CRNWUnhq.js index 00628cda9d..83d25a2878 100644 --- a/assets/01-overview-CDm9TwOo.js +++ b/assets/01-overview-CRNWUnhq.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.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{u as r,j as e}from"./index-CchMGs7j.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/01-overview",children:"Embedded Wallet"})," and ",e.jsx(n.a,{href:"/api/indexer/01-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/01-overview-B8wB59mz.js b/assets/01-overview-CfZ4B1C6.js similarity index 95% rename from assets/01-overview-B8wB59mz.js rename to assets/01-overview-CfZ4B1C6.js index 28c2db11b9..27fb1f2eac 100644 --- a/assets/01-overview-B8wB59mz.js +++ b/assets/01-overview-CfZ4B1C6.js @@ -1,4 +1,4 @@ -import{u as s,j as e}from"./index-BXOUdEEZ.js";import{C as r,a as i}from"./CardGrid-DjVwb6Sh.js";const c={title:"Indexer",description:"undefined"};function a(t){const n={a:"a",div:"div",h1:"h1",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:"indexer",children:["Indexer",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#indexer",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{u as s,j as e}from"./index-CchMGs7j.js";import{C as r,a as i}from"./CardGrid-BJuHU1g_.js";const c={title:"Indexer",description:"undefined"};function a(t){const n={a:"a",div:"div",h1:"h1",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:"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.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.jsx(n.p,{children:"In fact, the Sequence Wallet uses the Indexer behind the scenes so it can seamlessly render all token information in any wallet. But of course, the Indexer is a modular piece of infrastructure, and you may use it directly from your dapp, game, or even from a server."}),` `,e.jsx(n.p,{children:"Features:"}),` diff --git a/assets/01-overview-BwLa55n_.js b/assets/01-overview-CgIU_uUT.js similarity index 95% rename from assets/01-overview-BwLa55n_.js rename to assets/01-overview-CgIU_uUT.js index e605b5b087..250ff23d07 100644 --- a/assets/01-overview-BwLa55n_.js +++ b/assets/01-overview-CgIU_uUT.js @@ -1,4 +1,4 @@ -import{u as n,j as e,e as s}from"./index-BXOUdEEZ.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";import{C as i,a as o}from"./CardGrid-DjVwb6Sh.js";const u={title:"Sequence Market",description:"undefined"};function a(r){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",hr:"hr",p:"p",...n(),...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})})]})}),` +import{u as n,j as e,e as s}from"./index-CchMGs7j.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";import{C as i,a as o}from"./CardGrid-BJuHU1g_.js";const u={title:"Sequence Market",description:"undefined"};function a(r){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",hr:"hr",p:"p",...n(),...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(s,{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."]})]}),` diff --git a/assets/01-overview-Cgd_Khl-.js b/assets/01-overview-Cgd_Khl-.js new file mode 100644 index 0000000000..ae4ee15cfb --- /dev/null +++ b/assets/01-overview-Cgd_Khl-.js @@ -0,0 +1,12 @@ +import{u as a,j as e}from"./index-CchMGs7j.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 In-Game Wallet SDK provides full Sequence ",e.jsx(n.a,{href:"/solutions/wallets/embedded-wallet/01-overview",children:"In-Game Wallet"})," and ",e.jsx(n.a,{href:"/api/indexer/01-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"}),"."]}),` +`,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})})]}),` +`,e.jsxs(n.ul,{children:[` +`,e.jsx(n.li,{children:"Unreal 5.2 or later"}),` +`,e.jsx(n.li,{children:"Android"}),` +`,e.jsx(n.li,{children:"iOS"}),` +`,e.jsx(n.li,{children:"PC standalone"}),` +`,e.jsx(n.li,{children:"Mac standalone"}),` +`]})]})}function l(i={}){const{wrapper:n}={...a(),...i.components};return n?e.jsx(n,{...i,children:e.jsx(r,{...i})}):r(i)}export{l as default,s as frontmatter}; diff --git a/assets/01-overview-sg4qQZti.js b/assets/01-overview-Cm_eirZl.js similarity index 98% rename from assets/01-overview-sg4qQZti.js rename to assets/01-overview-Cm_eirZl.js index 4ca7df621d..65580d01c5 100644 --- a/assets/01-overview-sg4qQZti.js +++ b/assets/01-overview-Cm_eirZl.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.js";const r={title:"Sequence Embedded Wallet",description:"undefined"};function a(n){const t={a:"a",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-embedded-wallet",children:["Sequence Embedded Wallet",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-embedded-wallet",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{u as i,j as e}from"./index-CchMGs7j.js";const r={title:"Sequence Embedded Wallet",description:"undefined"};function a(n){const t={a:"a",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-embedded-wallet",children:["Sequence Embedded Wallet",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-embedded-wallet",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Sequence Embedded Wallet (or Wallet-as-a-Service) enables the creation, management and usage of fully functional EVM compatible wallets. These 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."}),` `,e.jsx(t.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."}),` `,e.jsxs(t.h2,{id:"architecture-overview",children:["Architecture overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#architecture-overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/01-overview-B8XR8Ef0.js b/assets/01-overview-DTc0-0Lg.js similarity index 97% rename from assets/01-overview-B8XR8Ef0.js rename to assets/01-overview-DTc0-0Lg.js index 3b99b5f670..83f6817d16 100644 --- a/assets/01-overview-B8XR8Ef0.js +++ b/assets/01-overview-DTc0-0Lg.js @@ -1,4 +1,4 @@ -import{u as s,j as e}from"./index-BXOUdEEZ.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{u as s,j as e}from"./index-CchMGs7j.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/01-overview-RdxEHBz8.js b/assets/01-overview-YB_pmFKQ.js similarity index 99% rename from assets/01-overview-RdxEHBz8.js rename to assets/01-overview-YB_pmFKQ.js index 81bf3db331..f34e5a5733 100644 --- a/assets/01-overview-RdxEHBz8.js +++ b/assets/01-overview-YB_pmFKQ.js @@ -1,4 +1,4 @@ -var gp=Object.defineProperty;var pp=(r,e,t)=>e in r?gp(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var _e=(r,e,t)=>(pp(r,typeof e!="symbol"?e+"":e,t),t);import{g as xp,h as Du,i as Xi,k as bp,s as mp,r as ca,j as Oe,u as Lu}from"./index-BXOUdEEZ.js";const wp=[{inputs:[{internalType:"bytes32",type:"bytes32"}],name:"getAlternativeSignature",outputs:[{internalType:"string",type:"string"}],stateMutability:"view",type:"function"}];var yp=Object.freeze({__proto__:null,abi:wp});const vp=[{type:"function",name:"isValidSignature",constant:!0,inputs:[{type:"bytes32"},{type:"bytes"}],outputs:[{type:"bytes4"}],payable:!1,stateMutability:"view"}],Ep={isValidSignatureBytes32:"0x1626ba7e"};var Ap=Object.freeze({__proto__:null,abi:vp,returns:Ep});const _p=[{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 Sp=Object.freeze({__proto__:null,abi:_p});const Cp=[{type:"function",name:"deploy",constant:!1,inputs:[{type:"address"},{type:"bytes32"}],outputs:[],payable:!0,stateMutability:"payable"}];var Ip=Object.freeze({__proto__:null,abi:Cp});const kp=[{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 Tp=Object.freeze({__proto__:null,abi:kp});const Mp=[{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 Np=Object.freeze({__proto__:null,abi:Mp});const Op=[{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 Pp=Object.freeze({__proto__:null,abi:Op});const Rp=[{inputs:[{internalType:"address",name:"",type:"address"}],name:"requireFreshSigner",outputs:[],stateMutability:"nonpayable",type:"function"}];var Bp=Object.freeze({__proto__:null,abi:Rp});const Rt={erc6492:Sp,erc5719:yp,erc1271:Ap,factory:Ip,mainModule:Tp,mainModuleUpgradable:Np,sequenceUtils:Pp,requireFreshSigner:Bp},Dp=Object.freeze(Object.defineProperty({__proto__:null,walletContracts:Rt},Symbol.toStringTag,{value:"Module"}));function Ra(){return Ra=Object.assign?Object.assign.bind():function(r){for(var e=1;ethis.fetch(this.url("Ping"),fe({},n)).then(i=>ue(i).then(s=>({status:s.status}))),this.version=n=>this.fetch(this.url("Version"),fe({},n)).then(i=>ue(i).then(s=>({version:s.version}))),this.runtimeStatus=n=>this.fetch(this.url("RuntimeStatus"),fe({},n)).then(i=>ue(i).then(s=>({status:s.status}))),this.clock=n=>this.fetch(this.url("Clock"),fe({},n)).then(i=>ue(i).then(s=>({serverTime:s.serverTime}))),this.getSequenceContext=n=>this.fetch(this.url("GetSequenceContext"),fe({},n)).then(i=>ue(i).then(s=>({data:s.data}))),this.getAuthToken=(n,i)=>this.fetch(this.url("GetAuthToken"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,jwtToken:a.jwtToken,address:a.address,user:a.user}))),this.getAuthToken2=(n,i)=>this.fetch(this.url("GetAuthToken2"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,jwtToken:a.jwtToken,address:a.address,user:a.user}))),this.sendPasswordlessLink=(n,i)=>this.fetch(this.url("SendPasswordlessLink"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.friendList=(n,i)=>this.fetch(this.url("FriendList"),fe(n,i)).then(s=>ue(s).then(a=>({page:a.page,friends:a.friends}))),this.getFriendByAddress=(n,i)=>this.fetch(this.url("GetFriendByAddress"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,friend:a.friend}))),this.searchFriends=(n,i)=>this.fetch(this.url("SearchFriends"),fe(n,i)).then(s=>ue(s).then(a=>({friends:a.friends}))),this.addFriend=(n,i)=>this.fetch(this.url("AddFriend"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,friend:a.friend}))),this.updateFriendNickname=(n,i)=>this.fetch(this.url("UpdateFriendNickname"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,friend:a.friend}))),this.removeFriend=(n,i)=>this.fetch(this.url("RemoveFriend"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.contractCall=(n,i)=>this.fetch(this.url("ContractCall"),fe(n,i)).then(s=>ue(s).then(a=>({returns:a.returns}))),this.decodeContractCall=(n,i)=>this.fetch(this.url("DecodeContractCall"),fe(n,i)).then(s=>ue(s).then(a=>({call:a.call}))),this.lookupContractCallSelectors=(n,i)=>this.fetch(this.url("LookupContractCallSelectors"),fe(n,i)).then(s=>ue(s).then(a=>({signatures:a.signatures}))),this.userStorageFetch=(n,i)=>this.fetch(this.url("UserStorageFetch"),fe(n,i)).then(s=>ue(s).then(a=>({object:a.object}))),this.userStorageSave=(n,i)=>this.fetch(this.url("UserStorageSave"),fe(n,i)).then(s=>ue(s).then(a=>({ok:a.ok}))),this.userStorageDelete=(n,i)=>this.fetch(this.url("UserStorageDelete"),fe(n,i)).then(s=>ue(s).then(a=>({ok:a.ok}))),this.userStorageFetchAll=(n,i)=>this.fetch(this.url("UserStorageFetchAll"),fe(n,i)).then(s=>ue(s).then(a=>({objects:a.objects}))),this.getMoonpayLink=(n,i)=>this.fetch(this.url("GetMoonpayLink"),fe(n,i)).then(s=>ue(s).then(a=>({signedUrl:a.signedUrl}))),this.getSardineClientToken=n=>this.fetch(this.url("GetSardineClientToken"),fe({},n)).then(i=>ue(i).then(s=>({token:s.token}))),this.resolveENSAddress=(n,i)=>this.fetch(this.url("ResolveENSAddress"),fe(n,i)).then(s=>ue(s).then(a=>({address:a.address,ok:a.ok}))),this.isValidSignature=(n,i)=>this.fetch(this.url("IsValidSignature"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.isValidMessageSignature=(n,i)=>this.fetch(this.url("IsValidMessageSignature"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.isValidTypedDataSignature=(n,i)=>this.fetch(this.url("IsValidTypedDataSignature"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.isValidETHAuthProof=(n,i)=>this.fetch(this.url("IsValidETHAuthProof"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.getCoinPrices=(n,i)=>this.fetch(this.url("GetCoinPrices"),fe(n,i)).then(s=>ue(s).then(a=>({tokenPrices:a.tokenPrices}))),this.getCollectiblePrices=(n,i)=>this.fetch(this.url("GetCollectiblePrices"),fe(n,i)).then(s=>ue(s).then(a=>({tokenPrices:a.tokenPrices}))),this.getExchangeRate=(n,i)=>this.fetch(this.url("GetExchangeRate"),fe(n,i)).then(s=>ue(s).then(a=>({exchangeRate:a.exchangeRate}))),this.memoryStore=(n,i)=>this.fetch(this.url("MemoryStore"),fe(n,i)).then(s=>ue(s).then(a=>({ok:a.ok}))),this.memoryLoad=(n,i)=>this.fetch(this.url("MemoryLoad"),fe(n,i)).then(s=>ue(s).then(a=>({value:a.value}))),this.getInviteInfo=n=>this.fetch(this.url("GetInviteInfo"),fe({},n)).then(i=>ue(i).then(s=>({inviteInfo:s.inviteInfo}))),this.isValidAccessCode=(n,i)=>this.fetch(this.url("IsValidAccessCode"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.internalClaimAccessCode=(n,i)=>this.fetch(this.url("InternalClaimAccessCode"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.blockNumberAtTime=(n,i)=>this.fetch(this.url("BlockNumberAtTime"),fe(n,i)).then(s=>ue(s).then(a=>({blocks:a.blocks}))),this.paperSessionSecret=(n,i)=>this.fetch(this.url("PaperSessionSecret"),fe(n,i)).then(s=>ue(s).then(a=>({secret:a.secret}))),this.paperSessionSecret2=(n,i)=>this.fetch(this.url("PaperSessionSecret2"),fe(n,i)).then(s=>ue(s).then(a=>({secret:a.secret}))),this.linkWallet=(n,i)=>this.fetch(this.url("LinkWallet"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,linkedWalletAddress:a.linkedWalletAddress}))),this.getLinkedWallets=(n,i)=>this.fetch(this.url("GetLinkedWallets"),fe(n,i)).then(s=>ue(s).then(a=>({linkedWallets:a.linkedWallets}))),this.hostname=e,this.fetch=(n,i)=>t(n,i)}url(e){return this.hostname+this.path+e}}const fe=(r={},e={})=>({method:"POST",headers:Ra({},e,{"Content-Type":"application/json"}),body:JSON.stringify(r||{})}),ue=r=>r.text().then(e=>{let t;try{t=JSON.parse(e)}catch{throw{code:"unknown",msg:`expecting JSON, got: ${e}`,status:r.status}}if(!r.ok)throw t;return t}),h0=typeof global=="object"?global.fetch:window.fetch;class ma extends Fu{constructor(e,t,n){super(e.endsWith("/")?e.slice(0,-1):e,h0),this.projectAccessKey=t,this.jwtAuth=n,this._fetch=(i,s)=>{const a={},o=this.jwtAuth,c=this.projectAccessKey;return o&&o.length>0&&(a.Authorization=`BEARER ${o}`),c&&c.length>0&&(a["X-Access-Key"]=c),s.headers=Ra({},s.headers,a),h0(i,s)},this.fetch=this._fetch}}const Wp=Object.freeze(Object.defineProperty({__proto__:null,API:Fu,SequenceAPIClient:ma,SortOrder:Hp,WebRPCSchemaHash:Up,WebRPCSchemaVersion:Fp,WebRPCVersion:Lp},Symbol.toStringTag,{value:"Module"}));var nf={exports:{}};const jp={},qp=Object.freeze(Object.defineProperty({__proto__:null,default:jp},Symbol.toStringTag,{value:"Module"})),Gp=xp(qp);nf.exports;(function(r){(function(e,t){function n(M,l){if(!M)throw new Error(l||"Assertion failed")}function i(M,l){M.super_=l;var x=function(){};x.prototype=l.prototype,M.prototype=new x,M.prototype.constructor=M}function s(M,l,x){if(s.isBN(M))return M;this.negative=0,this.words=null,this.length=0,this.red=null,M!==null&&((l==="le"||l==="be")&&(x=l,l=10),this._init(M||0,l||10,x||"be"))}typeof e=="object"?e.exports=s:t.BN=s,s.BN=s,s.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=Gp.Buffer}catch{}s.isBN=function(l){return l instanceof s?!0:l!==null&&typeof l=="object"&&l.constructor.wordSize===s.wordSize&&Array.isArray(l.words)},s.max=function(l,x){return l.cmp(x)>0?l:x},s.min=function(l,x){return l.cmp(x)<0?l:x},s.prototype._init=function(l,x,y){if(typeof l=="number")return this._initNumber(l,x,y);if(typeof l=="object")return this._initArray(l,x,y);x==="hex"&&(x=16),n(x===(x|0)&&x>=2&&x<=36),l=l.toString().replace(/\s+/g,"");var C=0;l[0]==="-"&&(C++,this.negative=1),C=0;C-=3)w=l[C]|l[C-1]<<8|l[C-2]<<16,this.words[p]|=w<>>26-v&67108863,v+=24,v>=26&&(v-=26,p++);else if(y==="le")for(C=0,p=0;C>>26-v&67108863,v+=24,v>=26&&(v-=26,p++);return this._strip()};function o(M,l){var x=M.charCodeAt(l);if(x>=48&&x<=57)return x-48;if(x>=65&&x<=70)return x-55;if(x>=97&&x<=102)return x-87;n(!1,"Invalid character in "+M)}function c(M,l,x){var y=o(M,x);return x-1>=l&&(y|=o(M,x-1)<<4),y}s.prototype._parseHex=function(l,x,y){this.length=Math.ceil((l.length-x)/6),this.words=new Array(this.length);for(var C=0;C=x;C-=2)v=c(l,x,C)<=18?(p-=18,w+=1,this.words[w]|=v>>>26):p+=8;else{var h=l.length-x;for(C=h%2===0?x+1:x;C=18?(p-=18,w+=1,this.words[w]|=v>>>26):p+=8}this._strip()};function u(M,l,x,y){for(var C=0,p=0,w=Math.min(M.length,x),v=l;v=49?p=h-49+10:h>=17?p=h-17+10:p=h,n(h>=0&&p1&&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")]=b}catch{s.prototype.inspect=b}else s.prototype.inspect=b;function b(){return(this.red?""}var E=["","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"],A=[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],T=[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(l,x){l=l||10,x=x|0||1;var y;if(l===16||l==="hex"){y="";for(var C=0,p=0,w=0;w>>24-C&16777215,C+=2,C>=26&&(C-=26,w--),p!==0||w!==this.length-1?y=E[6-h.length]+h+y:y=h+y}for(p!==0&&(y=p.toString(16)+y);y.length%x!==0;)y="0"+y;return this.negative!==0&&(y="-"+y),y}if(l===(l|0)&&l>=2&&l<=36){var f=A[l],m=T[l];y="";var I=this.clone();for(I.negative=0;!I.isZero();){var d=I.modrn(m).toString(l);I=I.idivn(m),I.isZero()?y=d+y:y=E[f-d.length]+d+y}for(this.isZero()&&(y="0"+y);y.length%x!==0;)y="0"+y;return this.negative!==0&&(y="-"+y),y}n(!1,"Base should be between 2 and 36")},s.prototype.toNumber=function(){var l=this.words[0];return this.length===2?l+=this.words[1]*67108864:this.length===3&&this.words[2]===1?l+=4503599627370496+this.words[1]*67108864:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-l:l},s.prototype.toJSON=function(){return this.toString(16,2)},a&&(s.prototype.toBuffer=function(l,x){return this.toArrayLike(a,l,x)}),s.prototype.toArray=function(l,x){return this.toArrayLike(Array,l,x)};var k=function(l,x){return l.allocUnsafe?l.allocUnsafe(x):new l(x)};s.prototype.toArrayLike=function(l,x,y){this._strip();var C=this.byteLength(),p=y||Math.max(1,C);n(C<=p,"byte array longer than desired length"),n(p>0,"Requested array length <= 0");var w=k(l,p),v=x==="le"?"LE":"BE";return this["_toArrayLike"+v](w,C),w},s.prototype._toArrayLikeLE=function(l,x){for(var y=0,C=0,p=0,w=0;p>8&255),y>16&255),w===6?(y>24&255),C=0,w=0):(C=v>>>24,w+=2)}if(y=0&&(l[y--]=v>>8&255),y>=0&&(l[y--]=v>>16&255),w===6?(y>=0&&(l[y--]=v>>24&255),C=0,w=0):(C=v>>>24,w+=2)}if(y>=0)for(l[y--]=C;y>=0;)l[y--]=0},Math.clz32?s.prototype._countBits=function(l){return 32-Math.clz32(l)}:s.prototype._countBits=function(l){var x=l,y=0;return x>=4096&&(y+=13,x>>>=13),x>=64&&(y+=7,x>>>=7),x>=8&&(y+=4,x>>>=4),x>=2&&(y+=2,x>>>=2),y+x},s.prototype._zeroBits=function(l){if(l===0)return 26;var x=l,y=0;return x&8191||(y+=13,x>>>=13),x&127||(y+=7,x>>>=7),x&15||(y+=4,x>>>=4),x&3||(y+=2,x>>>=2),x&1||y++,y},s.prototype.bitLength=function(){var l=this.words[this.length-1],x=this._countBits(l);return(this.length-1)*26+x};function _(M){for(var l=new Array(M.bitLength()),x=0;x>>C&1}return l}s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var l=0,x=0;xl.length?this.clone().ior(l):l.clone().ior(this)},s.prototype.uor=function(l){return this.length>l.length?this.clone().iuor(l):l.clone().iuor(this)},s.prototype.iuand=function(l){var x;this.length>l.length?x=l:x=this;for(var y=0;yl.length?this.clone().iand(l):l.clone().iand(this)},s.prototype.uand=function(l){return this.length>l.length?this.clone().iuand(l):l.clone().iuand(this)},s.prototype.iuxor=function(l){var x,y;this.length>l.length?(x=this,y=l):(x=l,y=this);for(var C=0;Cl.length?this.clone().ixor(l):l.clone().ixor(this)},s.prototype.uxor=function(l){return this.length>l.length?this.clone().iuxor(l):l.clone().iuxor(this)},s.prototype.inotn=function(l){n(typeof l=="number"&&l>=0);var x=Math.ceil(l/26)|0,y=l%26;this._expand(x),y>0&&x--;for(var C=0;C0&&(this.words[C]=~this.words[C]&67108863>>26-y),this._strip()},s.prototype.notn=function(l){return this.clone().inotn(l)},s.prototype.setn=function(l,x){n(typeof l=="number"&&l>=0);var y=l/26|0,C=l%26;return this._expand(y+1),x?this.words[y]=this.words[y]|1<l.length?(y=this,C=l):(y=l,C=this);for(var p=0,w=0;w>>26;for(;p!==0&&w>>26;if(this.length=y.length,p!==0)this.words[this.length]=p,this.length++;else if(y!==this)for(;wl.length?this.clone().iadd(l):l.clone().iadd(this)},s.prototype.isub=function(l){if(l.negative!==0){l.negative=0;var x=this.iadd(l);return l.negative=1,x._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(l),this.negative=1,this._normSign();var y=this.cmp(l);if(y===0)return this.negative=0,this.length=1,this.words[0]=0,this;var C,p;y>0?(C=this,p=l):(C=l,p=this);for(var w=0,v=0;v>26,this.words[v]=x&67108863;for(;w!==0&&v>26,this.words[v]=x&67108863;if(w===0&&v>>26,I=h&67108863,d=Math.min(f,l.length-1),S=Math.max(0,f-M.length+1);S<=d;S++){var N=f-S|0;C=M.words[N]|0,p=l.words[S]|0,w=C*p+I,m+=w/67108864|0,I=w&67108863}x.words[f]=I|0,h=m|0}return h!==0?x.words[f]=h|0:x.length--,x._strip()}var F=function(l,x,y){var C=l.words,p=x.words,w=y.words,v=0,h,f,m,I=C[0]|0,d=I&8191,S=I>>>13,N=C[1]|0,P=N&8191,U=N>>>13,K=C[2]|0,G=K&8191,V=K>>>13,he=C[3]|0,Y=he&8191,ie=he>>>13,sr=C[4]|0,Ie=sr&8191,Ee=sr>>>13,mt=C[5]|0,Le=mt&8191,Fe=mt>>>13,Un=C[6]|0,Ue=Un&8191,He=Un>>>13,Hn=C[7]|0,We=Hn&8191,je=Hn>>>13,Wn=C[8]|0,qe=Wn&8191,Ge=Wn>>>13,jn=C[9]|0,$e=jn&8191,ze=jn>>>13,qn=p[0]|0,Ve=qn&8191,Ke=qn>>>13,Gn=p[1]|0,Je=Gn&8191,Qe=Gn>>>13,$n=p[2]|0,Ye=$n&8191,Xe=$n>>>13,zn=p[3]|0,Ze=zn&8191,et=zn>>>13,Vn=p[4]|0,tt=Vn&8191,rt=Vn>>>13,Kn=p[5]|0,nt=Kn&8191,it=Kn>>>13,Jn=p[6]|0,st=Jn&8191,at=Jn>>>13,Qn=p[7]|0,ot=Qn&8191,ct=Qn>>>13,Yn=p[8]|0,ft=Yn&8191,ut=Yn>>>13,Xn=p[9]|0,lt=Xn&8191,dt=Xn>>>13;y.negative=l.negative^x.negative,y.length=19,h=Math.imul(d,Ve),f=Math.imul(d,Ke),f=f+Math.imul(S,Ve)|0,m=Math.imul(S,Ke);var xn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(xn>>>26)|0,xn&=67108863,h=Math.imul(P,Ve),f=Math.imul(P,Ke),f=f+Math.imul(U,Ve)|0,m=Math.imul(U,Ke),h=h+Math.imul(d,Je)|0,f=f+Math.imul(d,Qe)|0,f=f+Math.imul(S,Je)|0,m=m+Math.imul(S,Qe)|0;var bn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(bn>>>26)|0,bn&=67108863,h=Math.imul(G,Ve),f=Math.imul(G,Ke),f=f+Math.imul(V,Ve)|0,m=Math.imul(V,Ke),h=h+Math.imul(P,Je)|0,f=f+Math.imul(P,Qe)|0,f=f+Math.imul(U,Je)|0,m=m+Math.imul(U,Qe)|0,h=h+Math.imul(d,Ye)|0,f=f+Math.imul(d,Xe)|0,f=f+Math.imul(S,Ye)|0,m=m+Math.imul(S,Xe)|0;var mn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(mn>>>26)|0,mn&=67108863,h=Math.imul(Y,Ve),f=Math.imul(Y,Ke),f=f+Math.imul(ie,Ve)|0,m=Math.imul(ie,Ke),h=h+Math.imul(G,Je)|0,f=f+Math.imul(G,Qe)|0,f=f+Math.imul(V,Je)|0,m=m+Math.imul(V,Qe)|0,h=h+Math.imul(P,Ye)|0,f=f+Math.imul(P,Xe)|0,f=f+Math.imul(U,Ye)|0,m=m+Math.imul(U,Xe)|0,h=h+Math.imul(d,Ze)|0,f=f+Math.imul(d,et)|0,f=f+Math.imul(S,Ze)|0,m=m+Math.imul(S,et)|0;var wn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(wn>>>26)|0,wn&=67108863,h=Math.imul(Ie,Ve),f=Math.imul(Ie,Ke),f=f+Math.imul(Ee,Ve)|0,m=Math.imul(Ee,Ke),h=h+Math.imul(Y,Je)|0,f=f+Math.imul(Y,Qe)|0,f=f+Math.imul(ie,Je)|0,m=m+Math.imul(ie,Qe)|0,h=h+Math.imul(G,Ye)|0,f=f+Math.imul(G,Xe)|0,f=f+Math.imul(V,Ye)|0,m=m+Math.imul(V,Xe)|0,h=h+Math.imul(P,Ze)|0,f=f+Math.imul(P,et)|0,f=f+Math.imul(U,Ze)|0,m=m+Math.imul(U,et)|0,h=h+Math.imul(d,tt)|0,f=f+Math.imul(d,rt)|0,f=f+Math.imul(S,tt)|0,m=m+Math.imul(S,rt)|0;var yn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(yn>>>26)|0,yn&=67108863,h=Math.imul(Le,Ve),f=Math.imul(Le,Ke),f=f+Math.imul(Fe,Ve)|0,m=Math.imul(Fe,Ke),h=h+Math.imul(Ie,Je)|0,f=f+Math.imul(Ie,Qe)|0,f=f+Math.imul(Ee,Je)|0,m=m+Math.imul(Ee,Qe)|0,h=h+Math.imul(Y,Ye)|0,f=f+Math.imul(Y,Xe)|0,f=f+Math.imul(ie,Ye)|0,m=m+Math.imul(ie,Xe)|0,h=h+Math.imul(G,Ze)|0,f=f+Math.imul(G,et)|0,f=f+Math.imul(V,Ze)|0,m=m+Math.imul(V,et)|0,h=h+Math.imul(P,tt)|0,f=f+Math.imul(P,rt)|0,f=f+Math.imul(U,tt)|0,m=m+Math.imul(U,rt)|0,h=h+Math.imul(d,nt)|0,f=f+Math.imul(d,it)|0,f=f+Math.imul(S,nt)|0,m=m+Math.imul(S,it)|0;var Mo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Mo>>>26)|0,Mo&=67108863,h=Math.imul(Ue,Ve),f=Math.imul(Ue,Ke),f=f+Math.imul(He,Ve)|0,m=Math.imul(He,Ke),h=h+Math.imul(Le,Je)|0,f=f+Math.imul(Le,Qe)|0,f=f+Math.imul(Fe,Je)|0,m=m+Math.imul(Fe,Qe)|0,h=h+Math.imul(Ie,Ye)|0,f=f+Math.imul(Ie,Xe)|0,f=f+Math.imul(Ee,Ye)|0,m=m+Math.imul(Ee,Xe)|0,h=h+Math.imul(Y,Ze)|0,f=f+Math.imul(Y,et)|0,f=f+Math.imul(ie,Ze)|0,m=m+Math.imul(ie,et)|0,h=h+Math.imul(G,tt)|0,f=f+Math.imul(G,rt)|0,f=f+Math.imul(V,tt)|0,m=m+Math.imul(V,rt)|0,h=h+Math.imul(P,nt)|0,f=f+Math.imul(P,it)|0,f=f+Math.imul(U,nt)|0,m=m+Math.imul(U,it)|0,h=h+Math.imul(d,st)|0,f=f+Math.imul(d,at)|0,f=f+Math.imul(S,st)|0,m=m+Math.imul(S,at)|0;var No=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(No>>>26)|0,No&=67108863,h=Math.imul(We,Ve),f=Math.imul(We,Ke),f=f+Math.imul(je,Ve)|0,m=Math.imul(je,Ke),h=h+Math.imul(Ue,Je)|0,f=f+Math.imul(Ue,Qe)|0,f=f+Math.imul(He,Je)|0,m=m+Math.imul(He,Qe)|0,h=h+Math.imul(Le,Ye)|0,f=f+Math.imul(Le,Xe)|0,f=f+Math.imul(Fe,Ye)|0,m=m+Math.imul(Fe,Xe)|0,h=h+Math.imul(Ie,Ze)|0,f=f+Math.imul(Ie,et)|0,f=f+Math.imul(Ee,Ze)|0,m=m+Math.imul(Ee,et)|0,h=h+Math.imul(Y,tt)|0,f=f+Math.imul(Y,rt)|0,f=f+Math.imul(ie,tt)|0,m=m+Math.imul(ie,rt)|0,h=h+Math.imul(G,nt)|0,f=f+Math.imul(G,it)|0,f=f+Math.imul(V,nt)|0,m=m+Math.imul(V,it)|0,h=h+Math.imul(P,st)|0,f=f+Math.imul(P,at)|0,f=f+Math.imul(U,st)|0,m=m+Math.imul(U,at)|0,h=h+Math.imul(d,ot)|0,f=f+Math.imul(d,ct)|0,f=f+Math.imul(S,ot)|0,m=m+Math.imul(S,ct)|0;var Oo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Oo>>>26)|0,Oo&=67108863,h=Math.imul(qe,Ve),f=Math.imul(qe,Ke),f=f+Math.imul(Ge,Ve)|0,m=Math.imul(Ge,Ke),h=h+Math.imul(We,Je)|0,f=f+Math.imul(We,Qe)|0,f=f+Math.imul(je,Je)|0,m=m+Math.imul(je,Qe)|0,h=h+Math.imul(Ue,Ye)|0,f=f+Math.imul(Ue,Xe)|0,f=f+Math.imul(He,Ye)|0,m=m+Math.imul(He,Xe)|0,h=h+Math.imul(Le,Ze)|0,f=f+Math.imul(Le,et)|0,f=f+Math.imul(Fe,Ze)|0,m=m+Math.imul(Fe,et)|0,h=h+Math.imul(Ie,tt)|0,f=f+Math.imul(Ie,rt)|0,f=f+Math.imul(Ee,tt)|0,m=m+Math.imul(Ee,rt)|0,h=h+Math.imul(Y,nt)|0,f=f+Math.imul(Y,it)|0,f=f+Math.imul(ie,nt)|0,m=m+Math.imul(ie,it)|0,h=h+Math.imul(G,st)|0,f=f+Math.imul(G,at)|0,f=f+Math.imul(V,st)|0,m=m+Math.imul(V,at)|0,h=h+Math.imul(P,ot)|0,f=f+Math.imul(P,ct)|0,f=f+Math.imul(U,ot)|0,m=m+Math.imul(U,ct)|0,h=h+Math.imul(d,ft)|0,f=f+Math.imul(d,ut)|0,f=f+Math.imul(S,ft)|0,m=m+Math.imul(S,ut)|0;var Po=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Po>>>26)|0,Po&=67108863,h=Math.imul($e,Ve),f=Math.imul($e,Ke),f=f+Math.imul(ze,Ve)|0,m=Math.imul(ze,Ke),h=h+Math.imul(qe,Je)|0,f=f+Math.imul(qe,Qe)|0,f=f+Math.imul(Ge,Je)|0,m=m+Math.imul(Ge,Qe)|0,h=h+Math.imul(We,Ye)|0,f=f+Math.imul(We,Xe)|0,f=f+Math.imul(je,Ye)|0,m=m+Math.imul(je,Xe)|0,h=h+Math.imul(Ue,Ze)|0,f=f+Math.imul(Ue,et)|0,f=f+Math.imul(He,Ze)|0,m=m+Math.imul(He,et)|0,h=h+Math.imul(Le,tt)|0,f=f+Math.imul(Le,rt)|0,f=f+Math.imul(Fe,tt)|0,m=m+Math.imul(Fe,rt)|0,h=h+Math.imul(Ie,nt)|0,f=f+Math.imul(Ie,it)|0,f=f+Math.imul(Ee,nt)|0,m=m+Math.imul(Ee,it)|0,h=h+Math.imul(Y,st)|0,f=f+Math.imul(Y,at)|0,f=f+Math.imul(ie,st)|0,m=m+Math.imul(ie,at)|0,h=h+Math.imul(G,ot)|0,f=f+Math.imul(G,ct)|0,f=f+Math.imul(V,ot)|0,m=m+Math.imul(V,ct)|0,h=h+Math.imul(P,ft)|0,f=f+Math.imul(P,ut)|0,f=f+Math.imul(U,ft)|0,m=m+Math.imul(U,ut)|0,h=h+Math.imul(d,lt)|0,f=f+Math.imul(d,dt)|0,f=f+Math.imul(S,lt)|0,m=m+Math.imul(S,dt)|0;var Ro=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Ro>>>26)|0,Ro&=67108863,h=Math.imul($e,Je),f=Math.imul($e,Qe),f=f+Math.imul(ze,Je)|0,m=Math.imul(ze,Qe),h=h+Math.imul(qe,Ye)|0,f=f+Math.imul(qe,Xe)|0,f=f+Math.imul(Ge,Ye)|0,m=m+Math.imul(Ge,Xe)|0,h=h+Math.imul(We,Ze)|0,f=f+Math.imul(We,et)|0,f=f+Math.imul(je,Ze)|0,m=m+Math.imul(je,et)|0,h=h+Math.imul(Ue,tt)|0,f=f+Math.imul(Ue,rt)|0,f=f+Math.imul(He,tt)|0,m=m+Math.imul(He,rt)|0,h=h+Math.imul(Le,nt)|0,f=f+Math.imul(Le,it)|0,f=f+Math.imul(Fe,nt)|0,m=m+Math.imul(Fe,it)|0,h=h+Math.imul(Ie,st)|0,f=f+Math.imul(Ie,at)|0,f=f+Math.imul(Ee,st)|0,m=m+Math.imul(Ee,at)|0,h=h+Math.imul(Y,ot)|0,f=f+Math.imul(Y,ct)|0,f=f+Math.imul(ie,ot)|0,m=m+Math.imul(ie,ct)|0,h=h+Math.imul(G,ft)|0,f=f+Math.imul(G,ut)|0,f=f+Math.imul(V,ft)|0,m=m+Math.imul(V,ut)|0,h=h+Math.imul(P,lt)|0,f=f+Math.imul(P,dt)|0,f=f+Math.imul(U,lt)|0,m=m+Math.imul(U,dt)|0;var Bo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Bo>>>26)|0,Bo&=67108863,h=Math.imul($e,Ye),f=Math.imul($e,Xe),f=f+Math.imul(ze,Ye)|0,m=Math.imul(ze,Xe),h=h+Math.imul(qe,Ze)|0,f=f+Math.imul(qe,et)|0,f=f+Math.imul(Ge,Ze)|0,m=m+Math.imul(Ge,et)|0,h=h+Math.imul(We,tt)|0,f=f+Math.imul(We,rt)|0,f=f+Math.imul(je,tt)|0,m=m+Math.imul(je,rt)|0,h=h+Math.imul(Ue,nt)|0,f=f+Math.imul(Ue,it)|0,f=f+Math.imul(He,nt)|0,m=m+Math.imul(He,it)|0,h=h+Math.imul(Le,st)|0,f=f+Math.imul(Le,at)|0,f=f+Math.imul(Fe,st)|0,m=m+Math.imul(Fe,at)|0,h=h+Math.imul(Ie,ot)|0,f=f+Math.imul(Ie,ct)|0,f=f+Math.imul(Ee,ot)|0,m=m+Math.imul(Ee,ct)|0,h=h+Math.imul(Y,ft)|0,f=f+Math.imul(Y,ut)|0,f=f+Math.imul(ie,ft)|0,m=m+Math.imul(ie,ut)|0,h=h+Math.imul(G,lt)|0,f=f+Math.imul(G,dt)|0,f=f+Math.imul(V,lt)|0,m=m+Math.imul(V,dt)|0;var Do=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Do>>>26)|0,Do&=67108863,h=Math.imul($e,Ze),f=Math.imul($e,et),f=f+Math.imul(ze,Ze)|0,m=Math.imul(ze,et),h=h+Math.imul(qe,tt)|0,f=f+Math.imul(qe,rt)|0,f=f+Math.imul(Ge,tt)|0,m=m+Math.imul(Ge,rt)|0,h=h+Math.imul(We,nt)|0,f=f+Math.imul(We,it)|0,f=f+Math.imul(je,nt)|0,m=m+Math.imul(je,it)|0,h=h+Math.imul(Ue,st)|0,f=f+Math.imul(Ue,at)|0,f=f+Math.imul(He,st)|0,m=m+Math.imul(He,at)|0,h=h+Math.imul(Le,ot)|0,f=f+Math.imul(Le,ct)|0,f=f+Math.imul(Fe,ot)|0,m=m+Math.imul(Fe,ct)|0,h=h+Math.imul(Ie,ft)|0,f=f+Math.imul(Ie,ut)|0,f=f+Math.imul(Ee,ft)|0,m=m+Math.imul(Ee,ut)|0,h=h+Math.imul(Y,lt)|0,f=f+Math.imul(Y,dt)|0,f=f+Math.imul(ie,lt)|0,m=m+Math.imul(ie,dt)|0;var Lo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Lo>>>26)|0,Lo&=67108863,h=Math.imul($e,tt),f=Math.imul($e,rt),f=f+Math.imul(ze,tt)|0,m=Math.imul(ze,rt),h=h+Math.imul(qe,nt)|0,f=f+Math.imul(qe,it)|0,f=f+Math.imul(Ge,nt)|0,m=m+Math.imul(Ge,it)|0,h=h+Math.imul(We,st)|0,f=f+Math.imul(We,at)|0,f=f+Math.imul(je,st)|0,m=m+Math.imul(je,at)|0,h=h+Math.imul(Ue,ot)|0,f=f+Math.imul(Ue,ct)|0,f=f+Math.imul(He,ot)|0,m=m+Math.imul(He,ct)|0,h=h+Math.imul(Le,ft)|0,f=f+Math.imul(Le,ut)|0,f=f+Math.imul(Fe,ft)|0,m=m+Math.imul(Fe,ut)|0,h=h+Math.imul(Ie,lt)|0,f=f+Math.imul(Ie,dt)|0,f=f+Math.imul(Ee,lt)|0,m=m+Math.imul(Ee,dt)|0;var Fo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Fo>>>26)|0,Fo&=67108863,h=Math.imul($e,nt),f=Math.imul($e,it),f=f+Math.imul(ze,nt)|0,m=Math.imul(ze,it),h=h+Math.imul(qe,st)|0,f=f+Math.imul(qe,at)|0,f=f+Math.imul(Ge,st)|0,m=m+Math.imul(Ge,at)|0,h=h+Math.imul(We,ot)|0,f=f+Math.imul(We,ct)|0,f=f+Math.imul(je,ot)|0,m=m+Math.imul(je,ct)|0,h=h+Math.imul(Ue,ft)|0,f=f+Math.imul(Ue,ut)|0,f=f+Math.imul(He,ft)|0,m=m+Math.imul(He,ut)|0,h=h+Math.imul(Le,lt)|0,f=f+Math.imul(Le,dt)|0,f=f+Math.imul(Fe,lt)|0,m=m+Math.imul(Fe,dt)|0;var Uo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Uo>>>26)|0,Uo&=67108863,h=Math.imul($e,st),f=Math.imul($e,at),f=f+Math.imul(ze,st)|0,m=Math.imul(ze,at),h=h+Math.imul(qe,ot)|0,f=f+Math.imul(qe,ct)|0,f=f+Math.imul(Ge,ot)|0,m=m+Math.imul(Ge,ct)|0,h=h+Math.imul(We,ft)|0,f=f+Math.imul(We,ut)|0,f=f+Math.imul(je,ft)|0,m=m+Math.imul(je,ut)|0,h=h+Math.imul(Ue,lt)|0,f=f+Math.imul(Ue,dt)|0,f=f+Math.imul(He,lt)|0,m=m+Math.imul(He,dt)|0;var Ho=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Ho>>>26)|0,Ho&=67108863,h=Math.imul($e,ot),f=Math.imul($e,ct),f=f+Math.imul(ze,ot)|0,m=Math.imul(ze,ct),h=h+Math.imul(qe,ft)|0,f=f+Math.imul(qe,ut)|0,f=f+Math.imul(Ge,ft)|0,m=m+Math.imul(Ge,ut)|0,h=h+Math.imul(We,lt)|0,f=f+Math.imul(We,dt)|0,f=f+Math.imul(je,lt)|0,m=m+Math.imul(je,dt)|0;var Wo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Wo>>>26)|0,Wo&=67108863,h=Math.imul($e,ft),f=Math.imul($e,ut),f=f+Math.imul(ze,ft)|0,m=Math.imul(ze,ut),h=h+Math.imul(qe,lt)|0,f=f+Math.imul(qe,dt)|0,f=f+Math.imul(Ge,lt)|0,m=m+Math.imul(Ge,dt)|0;var jo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(jo>>>26)|0,jo&=67108863,h=Math.imul($e,lt),f=Math.imul($e,dt),f=f+Math.imul(ze,lt)|0,m=Math.imul(ze,dt);var qo=(v+h|0)+((f&8191)<<13)|0;return v=(m+(f>>>13)|0)+(qo>>>26)|0,qo&=67108863,w[0]=xn,w[1]=bn,w[2]=mn,w[3]=wn,w[4]=yn,w[5]=Mo,w[6]=No,w[7]=Oo,w[8]=Po,w[9]=Ro,w[10]=Bo,w[11]=Do,w[12]=Lo,w[13]=Fo,w[14]=Uo,w[15]=Ho,w[16]=Wo,w[17]=jo,w[18]=qo,v!==0&&(w[19]=v,y.length++),y};Math.imul||(F=O);function D(M,l,x){x.negative=l.negative^M.negative,x.length=M.length+l.length;for(var y=0,C=0,p=0;p>>26)|0,C+=w>>>26,w&=67108863}x.words[p]=v,y=w,w=C}return y!==0?x.words[p]=y:x.length--,x._strip()}function $(M,l,x){return D(M,l,x)}s.prototype.mulTo=function(l,x){var y,C=this.length+l.length;return this.length===10&&l.length===10?y=F(this,l,x):C<63?y=O(this,l,x):C<1024?y=D(this,l,x):y=$(this,l,x),y},s.prototype.mul=function(l){var x=new s(null);return x.words=new Array(this.length+l.length),this.mulTo(l,x)},s.prototype.mulf=function(l){var x=new s(null);return x.words=new Array(this.length+l.length),$(this,l,x)},s.prototype.imul=function(l){return this.clone().mulTo(l,this)},s.prototype.imuln=function(l){var x=l<0;x&&(l=-l),n(typeof l=="number"),n(l<67108864);for(var y=0,C=0;C>=26,y+=p/67108864|0,y+=w>>>26,this.words[C]=w&67108863}return y!==0&&(this.words[C]=y,this.length++),x?this.ineg():this},s.prototype.muln=function(l){return this.clone().imuln(l)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(l){var x=_(l);if(x.length===0)return new s(1);for(var y=this,C=0;C=0);var x=l%26,y=(l-x)/26,C=67108863>>>26-x<<26-x,p;if(x!==0){var w=0;for(p=0;p>>26-x}w&&(this.words[p]=w,this.length++)}if(y!==0){for(p=this.length-1;p>=0;p--)this.words[p+y]=this.words[p];for(p=0;p=0);var C;x?C=(x-x%26)/26:C=0;var p=l%26,w=Math.min((l-p)/26,this.length),v=67108863^67108863>>>p<w)for(this.length-=w,f=0;f=0&&(m!==0||f>=C);f--){var I=this.words[f]|0;this.words[f]=m<<26-p|I>>>p,m=I&v}return h&&m!==0&&(h.words[h.length++]=m),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},s.prototype.ishrn=function(l,x,y){return n(this.negative===0),this.iushrn(l,x,y)},s.prototype.shln=function(l){return this.clone().ishln(l)},s.prototype.ushln=function(l){return this.clone().iushln(l)},s.prototype.shrn=function(l){return this.clone().ishrn(l)},s.prototype.ushrn=function(l){return this.clone().iushrn(l)},s.prototype.testn=function(l){n(typeof l=="number"&&l>=0);var x=l%26,y=(l-x)/26,C=1<=0);var x=l%26,y=(l-x)/26;if(n(this.negative===0,"imaskn works only with positive numbers"),this.length<=y)return this;if(x!==0&&y++,this.length=Math.min(y,this.length),x!==0){var C=67108863^67108863>>>x<=67108864;x++)this.words[x]-=67108864,x===this.length-1?this.words[x+1]=1:this.words[x+1]++;return this.length=Math.max(this.length,x+1),this},s.prototype.isubn=function(l){if(n(typeof l=="number"),n(l<67108864),l<0)return this.iaddn(-l);if(this.negative!==0)return this.negative=0,this.iaddn(l),this.negative=1,this;if(this.words[0]-=l,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var x=0;x>26)-(h/67108864|0),this.words[p+y]=w&67108863}for(;p>26,this.words[p+y]=w&67108863;if(v===0)return this._strip();for(n(v===-1),v=0,p=0;p>26,this.words[p]=w&67108863;return this.negative=1,this._strip()},s.prototype._wordDiv=function(l,x){var y=this.length-l.length,C=this.clone(),p=l,w=p.words[p.length-1]|0,v=this._countBits(w);y=26-v,y!==0&&(p=p.ushln(y),C.iushln(y),w=p.words[p.length-1]|0);var h=C.length-p.length,f;if(x!=="mod"){f=new s(null),f.length=h+1,f.words=new Array(f.length);for(var m=0;m=0;d--){var S=(C.words[p.length+d]|0)*67108864+(C.words[p.length+d-1]|0);for(S=Math.min(S/w|0,67108863),C._ishlnsubmul(p,S,d);C.negative!==0;)S--,C.negative=0,C._ishlnsubmul(p,1,d),C.isZero()||(C.negative^=1);f&&(f.words[d]=S)}return f&&f._strip(),C._strip(),x!=="div"&&y!==0&&C.iushrn(y),{div:f||null,mod:C}},s.prototype.divmod=function(l,x,y){if(n(!l.isZero()),this.isZero())return{div:new s(0),mod:new s(0)};var C,p,w;return this.negative!==0&&l.negative===0?(w=this.neg().divmod(l,x),x!=="mod"&&(C=w.div.neg()),x!=="div"&&(p=w.mod.neg(),y&&p.negative!==0&&p.iadd(l)),{div:C,mod:p}):this.negative===0&&l.negative!==0?(w=this.divmod(l.neg(),x),x!=="mod"&&(C=w.div.neg()),{div:C,mod:w.mod}):this.negative&l.negative?(w=this.neg().divmod(l.neg(),x),x!=="div"&&(p=w.mod.neg(),y&&p.negative!==0&&p.isub(l)),{div:w.div,mod:p}):l.length>this.length||this.cmp(l)<0?{div:new s(0),mod:this}:l.length===1?x==="div"?{div:this.divn(l.words[0]),mod:null}:x==="mod"?{div:null,mod:new s(this.modrn(l.words[0]))}:{div:this.divn(l.words[0]),mod:new s(this.modrn(l.words[0]))}:this._wordDiv(l,x)},s.prototype.div=function(l){return this.divmod(l,"div",!1).div},s.prototype.mod=function(l){return this.divmod(l,"mod",!1).mod},s.prototype.umod=function(l){return this.divmod(l,"mod",!0).mod},s.prototype.divRound=function(l){var x=this.divmod(l);if(x.mod.isZero())return x.div;var y=x.div.negative!==0?x.mod.isub(l):x.mod,C=l.ushrn(1),p=l.andln(1),w=y.cmp(C);return w<0||p===1&&w===0?x.div:x.div.negative!==0?x.div.isubn(1):x.div.iaddn(1)},s.prototype.modrn=function(l){var x=l<0;x&&(l=-l),n(l<=67108863);for(var y=(1<<26)%l,C=0,p=this.length-1;p>=0;p--)C=(y*C+(this.words[p]|0))%l;return x?-C:C},s.prototype.modn=function(l){return this.modrn(l)},s.prototype.idivn=function(l){var x=l<0;x&&(l=-l),n(l<=67108863);for(var y=0,C=this.length-1;C>=0;C--){var p=(this.words[C]|0)+y*67108864;this.words[C]=p/l|0,y=p%l}return this._strip(),x?this.ineg():this},s.prototype.divn=function(l){return this.clone().idivn(l)},s.prototype.egcd=function(l){n(l.negative===0),n(!l.isZero());var x=this,y=l.clone();x.negative!==0?x=x.umod(l):x=x.clone();for(var C=new s(1),p=new s(0),w=new s(0),v=new s(1),h=0;x.isEven()&&y.isEven();)x.iushrn(1),y.iushrn(1),++h;for(var f=y.clone(),m=x.clone();!x.isZero();){for(var I=0,d=1;!(x.words[0]&d)&&I<26;++I,d<<=1);if(I>0)for(x.iushrn(I);I-- >0;)(C.isOdd()||p.isOdd())&&(C.iadd(f),p.isub(m)),C.iushrn(1),p.iushrn(1);for(var S=0,N=1;!(y.words[0]&N)&&S<26;++S,N<<=1);if(S>0)for(y.iushrn(S);S-- >0;)(w.isOdd()||v.isOdd())&&(w.iadd(f),v.isub(m)),w.iushrn(1),v.iushrn(1);x.cmp(y)>=0?(x.isub(y),C.isub(w),p.isub(v)):(y.isub(x),w.isub(C),v.isub(p))}return{a:w,b:v,gcd:y.iushln(h)}},s.prototype._invmp=function(l){n(l.negative===0),n(!l.isZero());var x=this,y=l.clone();x.negative!==0?x=x.umod(l):x=x.clone();for(var C=new s(1),p=new s(0),w=y.clone();x.cmpn(1)>0&&y.cmpn(1)>0;){for(var v=0,h=1;!(x.words[0]&h)&&v<26;++v,h<<=1);if(v>0)for(x.iushrn(v);v-- >0;)C.isOdd()&&C.iadd(w),C.iushrn(1);for(var f=0,m=1;!(y.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(y.iushrn(f);f-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);x.cmp(y)>=0?(x.isub(y),C.isub(p)):(y.isub(x),p.isub(C))}var I;return x.cmpn(1)===0?I=C:I=p,I.cmpn(0)<0&&I.iadd(l),I},s.prototype.gcd=function(l){if(this.isZero())return l.abs();if(l.isZero())return this.abs();var x=this.clone(),y=l.clone();x.negative=0,y.negative=0;for(var C=0;x.isEven()&&y.isEven();C++)x.iushrn(1),y.iushrn(1);do{for(;x.isEven();)x.iushrn(1);for(;y.isEven();)y.iushrn(1);var p=x.cmp(y);if(p<0){var w=x;x=y,y=w}else if(p===0||y.cmpn(1)===0)break;x.isub(y)}while(!0);return y.iushln(C)},s.prototype.invm=function(l){return this.egcd(l).a.umod(l)},s.prototype.isEven=function(){return(this.words[0]&1)===0},s.prototype.isOdd=function(){return(this.words[0]&1)===1},s.prototype.andln=function(l){return this.words[0]&l},s.prototype.bincn=function(l){n(typeof l=="number");var x=l%26,y=(l-x)/26,C=1<>>26,v&=67108863,this.words[w]=v}return p!==0&&(this.words[w]=p,this.length++),this},s.prototype.isZero=function(){return this.length===1&&this.words[0]===0},s.prototype.cmpn=function(l){var x=l<0;if(this.negative!==0&&!x)return-1;if(this.negative===0&&x)return 1;this._strip();var y;if(this.length>1)y=1;else{x&&(l=-l),n(l<=67108863,"Number is too big");var C=this.words[0]|0;y=C===l?0:Cl.length)return 1;if(this.length=0;y--){var C=this.words[y]|0,p=l.words[y]|0;if(C!==p){Cp&&(x=1);break}}return x},s.prototype.gtn=function(l){return this.cmpn(l)===1},s.prototype.gt=function(l){return this.cmp(l)===1},s.prototype.gten=function(l){return this.cmpn(l)>=0},s.prototype.gte=function(l){return this.cmp(l)>=0},s.prototype.ltn=function(l){return this.cmpn(l)===-1},s.prototype.lt=function(l){return this.cmp(l)===-1},s.prototype.lten=function(l){return this.cmpn(l)<=0},s.prototype.lte=function(l){return this.cmp(l)<=0},s.prototype.eqn=function(l){return this.cmpn(l)===0},s.prototype.eq=function(l){return this.cmp(l)===0},s.red=function(l){return new re(l)},s.prototype.toRed=function(l){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),l.convertTo(this)._forceRed(l)},s.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},s.prototype._forceRed=function(l){return this.red=l,this},s.prototype.forceRed=function(l){return n(!this.red,"Already a number in reduction context"),this._forceRed(l)},s.prototype.redAdd=function(l){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,l)},s.prototype.redIAdd=function(l){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,l)},s.prototype.redSub=function(l){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,l)},s.prototype.redISub=function(l){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,l)},s.prototype.redShl=function(l){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,l)},s.prototype.redMul=function(l){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.mul(this,l)},s.prototype.redIMul=function(l){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.imul(this,l)},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(l){return n(this.red&&!l.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,l)};var L={k256:null,p224:null,p192:null,p25519:null};function z(M,l){this.name=M,this.p=new s(l,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}z.prototype._tmp=function(){var l=new s(null);return l.words=new Array(Math.ceil(this.n/13)),l},z.prototype.ireduce=function(l){var x=l,y;do this.split(x,this.tmp),x=this.imulK(x),x=x.iadd(this.tmp),y=x.bitLength();while(y>this.n);var C=y0?x.isub(this.p):x.strip!==void 0?x.strip():x._strip(),x},z.prototype.split=function(l,x){l.iushrn(this.n,0,x)},z.prototype.imulK=function(l){return l.imul(this.k)};function Z(){z.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(Z,z),Z.prototype.split=function(l,x){for(var y=4194303,C=Math.min(l.length,9),p=0;p>>22,w=v}w>>>=22,l.words[p-10]=w,w===0&&l.length>10?l.length-=10:l.length-=9},Z.prototype.imulK=function(l){l.words[l.length]=0,l.words[l.length+1]=0,l.length+=2;for(var x=0,y=0;y>>=26,l.words[y]=p,x=C}return x!==0&&(l.words[l.length++]=x),l},s._prime=function(l){if(L[l])return L[l];var x;if(l==="k256")x=new Z;else if(l==="p224")x=new J;else if(l==="p192")x=new Q;else if(l==="p25519")x=new te;else throw new Error("Unknown prime "+l);return L[l]=x,x};function re(M){if(typeof M=="string"){var l=s._prime(M);this.m=l.p,this.prime=l}else n(M.gtn(1),"modulus must be greater than 1"),this.m=M,this.prime=null}re.prototype._verify1=function(l){n(l.negative===0,"red works only with positives"),n(l.red,"red works only with red numbers")},re.prototype._verify2=function(l,x){n((l.negative|x.negative)===0,"red works only with positives"),n(l.red&&l.red===x.red,"red works only with red numbers")},re.prototype.imod=function(l){return this.prime?this.prime.ireduce(l)._forceRed(this):(g(l,l.umod(this.m)._forceRed(this)),l)},re.prototype.neg=function(l){return l.isZero()?l.clone():this.m.sub(l)._forceRed(this)},re.prototype.add=function(l,x){this._verify2(l,x);var y=l.add(x);return y.cmp(this.m)>=0&&y.isub(this.m),y._forceRed(this)},re.prototype.iadd=function(l,x){this._verify2(l,x);var y=l.iadd(x);return y.cmp(this.m)>=0&&y.isub(this.m),y},re.prototype.sub=function(l,x){this._verify2(l,x);var y=l.sub(x);return y.cmpn(0)<0&&y.iadd(this.m),y._forceRed(this)},re.prototype.isub=function(l,x){this._verify2(l,x);var y=l.isub(x);return y.cmpn(0)<0&&y.iadd(this.m),y},re.prototype.shl=function(l,x){return this._verify1(l),this.imod(l.ushln(x))},re.prototype.imul=function(l,x){return this._verify2(l,x),this.imod(l.imul(x))},re.prototype.mul=function(l,x){return this._verify2(l,x),this.imod(l.mul(x))},re.prototype.isqr=function(l){return this.imul(l,l.clone())},re.prototype.sqr=function(l){return this.mul(l,l)},re.prototype.sqrt=function(l){if(l.isZero())return l.clone();var x=this.m.andln(3);if(n(x%2===1),x===3){var y=this.m.add(new s(1)).iushrn(2);return this.pow(l,y)}for(var C=this.m.subn(1),p=0;!C.isZero()&&C.andln(1)===0;)p++,C.iushrn(1);n(!C.isZero());var w=new s(1).toRed(this),v=w.redNeg(),h=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new s(2*f*f).toRed(this);this.pow(f,h).cmp(v)!==0;)f.redIAdd(v);for(var m=this.pow(f,C),I=this.pow(l,C.addn(1).iushrn(1)),d=this.pow(l,C),S=p;d.cmp(w)!==0;){for(var N=d,P=0;N.cmp(w)!==0;P++)N=N.redSqr();n(P=0;p--){for(var m=x.words[p],I=f-1;I>=0;I--){var d=m>>I&1;if(w!==C[0]&&(w=this.sqr(w)),d===0&&v===0){h=0;continue}v<<=1,v|=d,h++,!(h!==y&&(p!==0||I!==0))&&(w=this.mul(w,C[v]),h=0,v=0)}f=26}return w},re.prototype.convertTo=function(l){var x=l.umod(this.m);return x===l?x.clone():x},re.prototype.convertFrom=function(l){var x=l.clone();return x.red=null,x},s.mont=function(l){return new be(l)};function be(M){re.call(this,M),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(be,re),be.prototype.convertTo=function(l){return this.imod(l.ushln(this.shift))},be.prototype.convertFrom=function(l){var x=this.imod(l.mul(this.rinv));return x.red=null,x},be.prototype.imul=function(l,x){if(l.isZero()||x.isZero())return l.words[0]=0,l.length=1,l;var y=l.imul(x),C=y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=y.isub(C).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},be.prototype.mul=function(l,x){if(l.isZero()||x.isZero())return new s(0)._forceRed(this);var y=l.mul(x),C=y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=y.isub(C).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},be.prototype.invm=function(l){var x=this.imod(l._invmp(this.m).mul(this.r2));return x._forceRed(this)}})(r,Du)})(nf);var $p=nf.exports;const oe=Xi($p),zp="logger/5.7.0";let g0=!1,p0=!1;const wa={debug:1,default:2,info:2,warning:3,error:4,off:5};let x0=wa.default,Go=null;function Vp(){try{const r=[];if(["NFD","NFC","NFKD","NFKC"].forEach(e=>{try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{r.push(e)}}),r.length)throw new Error("missing "+r.join(", "));if("é".normalize("NFD")!=="é")throw new Error("broken implementation")}catch(r){return r.message}return null}const b0=Vp();var gc;(function(r){r.DEBUG="DEBUG",r.INFO="INFO",r.WARNING="WARNING",r.ERROR="ERROR",r.OFF="OFF"})(gc||(gc={}));var Ar;(function(r){r.UNKNOWN_ERROR="UNKNOWN_ERROR",r.NOT_IMPLEMENTED="NOT_IMPLEMENTED",r.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",r.NETWORK_ERROR="NETWORK_ERROR",r.SERVER_ERROR="SERVER_ERROR",r.TIMEOUT="TIMEOUT",r.BUFFER_OVERRUN="BUFFER_OVERRUN",r.NUMERIC_FAULT="NUMERIC_FAULT",r.MISSING_NEW="MISSING_NEW",r.INVALID_ARGUMENT="INVALID_ARGUMENT",r.MISSING_ARGUMENT="MISSING_ARGUMENT",r.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",r.CALL_EXCEPTION="CALL_EXCEPTION",r.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",r.NONCE_EXPIRED="NONCE_EXPIRED",r.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",r.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",r.TRANSACTION_REPLACED="TRANSACTION_REPLACED",r.ACTION_REJECTED="ACTION_REJECTED"})(Ar||(Ar={}));const m0="0123456789abcdef";let B=class It{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,t){const n=e.toLowerCase();wa[n]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(x0>wa[n])&&console.log.apply(console,t)}debug(...e){this._log(It.levels.DEBUG,e)}info(...e){this._log(It.levels.INFO,e)}warn(...e){this._log(It.levels.WARNING,e)}makeError(e,t,n){if(p0)return this.makeError("censored error",t,{});t||(t=It.errors.UNKNOWN_ERROR),n||(n={});const i=[];Object.keys(n).forEach(c=>{const u=n[c];try{if(u instanceof Uint8Array){let g="";for(let b=0;b>4],g+=m0[u[b]&15];i.push(c+"=Uint8Array(0x"+g+")")}else i.push(c+"="+JSON.stringify(u))}catch{i.push(c+"="+JSON.stringify(n[c].toString()))}}),i.push(`code=${t}`),i.push(`version=${this.version}`);const s=e;let a="";switch(t){case Ar.NUMERIC_FAULT:{a="NUMERIC_FAULT";const c=e;switch(c){case"overflow":case"underflow":case"division-by-zero":a+="-"+c;break;case"negative-power":case"negative-width":a+="-unsupported";break;case"unbound-bitwise-result":a+="-unbound-result";break}break}case Ar.CALL_EXCEPTION:case Ar.INSUFFICIENT_FUNDS:case Ar.MISSING_NEW:case Ar.NONCE_EXPIRED:case Ar.REPLACEMENT_UNDERPRICED:case Ar.TRANSACTION_REPLACED:case Ar.UNPREDICTABLE_GAS_LIMIT:a=t;break}a&&(e+=" [ See: https://links.ethers.org/v5-errors-"+a+" ]"),i.length&&(e+=" ("+i.join(", ")+")");const o=new Error(e);return o.reason=s,o.code=t,Object.keys(n).forEach(function(c){o[c]=n[c]}),o}throwError(e,t,n){throw this.makeError(e,t,n)}throwArgumentError(e,t,n){return this.throwError(e,It.errors.INVALID_ARGUMENT,{argument:t,value:n})}assert(e,t,n,i){e||this.throwError(t,n,i)}assertArgument(e,t,n,i){e||this.throwArgumentError(t,n,i)}checkNormalize(e){b0&&this.throwError("platform missing String.prototype.normalize",It.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:b0})}checkSafeUint53(e,t){typeof e=="number"&&(t==null&&(t="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(t,It.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(t,It.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,t,n){n?n=": "+n:n="",et&&this.throwError("too many arguments"+n,It.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:t})}checkNew(e,t){(e===Object||e==null)&&this.throwError("missing new",It.errors.MISSING_NEW,{name:t.name})}checkAbstract(e,t){e===t?this.throwError("cannot instantiate abstract class "+JSON.stringify(t.name)+" directly; use a sub-class",It.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",It.errors.MISSING_NEW,{name:t.name})}static globalLogger(){return Go||(Go=new It(zp)),Go}static setCensorship(e,t){if(!e&&t&&this.globalLogger().throwError("cannot permanently disable censorship",It.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),g0){if(!e)return;this.globalLogger().throwError("error censorship permanent",It.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}p0=!!e,g0=!!t}static setLogLevel(e){const t=wa[e.toLowerCase()];if(t==null){It.globalLogger().warn("invalid log level - "+e);return}x0=t}static from(e){return new It(e)}};B.errors=Ar;B.levels=gc;const Kp="bytes/5.7.0",wt=new B(Kp);function Uu(r){return!!r.toHexString}function Di(r){return r.slice||(r.slice=function(){const e=Array.prototype.slice.call(arguments);return Di(new Uint8Array(Array.prototype.slice.apply(r,e)))}),r}function an(r){return ye(r)&&!(r.length%2)||un(r)}function w0(r){return typeof r=="number"&&r==r&&r%1===0}function un(r){if(r==null)return!1;if(r.constructor===Uint8Array)return!0;if(typeof r=="string"||!w0(r.length)||r.length<0)return!1;for(let e=0;e=256)return!1}return!0}function W(r,e){if(e||(e={}),typeof r=="number"){wt.checkSafeUint53(r,"invalid arrayify value");const t=[];for(;r;)t.unshift(r&255),r=parseInt(String(r/256));return t.length===0&&t.push(0),Di(new Uint8Array(t))}if(e.allowMissingPrefix&&typeof r=="string"&&r.substring(0,2)!=="0x"&&(r="0x"+r),Uu(r)&&(r=r.toHexString()),ye(r)){let t=r.substring(2);t.length%2&&(e.hexPad==="left"?t="0"+t:e.hexPad==="right"?t+="0":wt.throwArgumentError("hex data is odd-length","value",r));const n=[];for(let i=0;iW(i)),t=e.reduce((i,s)=>i+s.length,0),n=new Uint8Array(t);return e.reduce((i,s)=>(n.set(s,i),i+s.length),0),Di(n)}function Hr(r){let e=W(r);if(e.length===0)return e;let t=0;for(;te&&wt.throwArgumentError("value out of range","value",arguments[0]);const t=new Uint8Array(e);return t.set(r,e-r.length),Di(t)}function ye(r,e){return!(typeof r!="string"||!r.match(/^0x[0-9A-Fa-f]*$/)||e&&r.length!==2+2*e)}const $o="0123456789abcdef";function H(r,e){if(e||(e={}),typeof r=="number"){wt.checkSafeUint53(r,"invalid hexlify value");let t="";for(;r;)t=$o[r&15]+t,r=Math.floor(r/16);return t.length?(t.length%2&&(t="0"+t),"0x"+t):"0x00"}if(typeof r=="bigint")return r=r.toString(16),r.length%2?"0x0"+r:"0x"+r;if(e.allowMissingPrefix&&typeof r=="string"&&r.substring(0,2)!=="0x"&&(r="0x"+r),Uu(r))return r.toHexString();if(ye(r))return r.length%2&&(e.hexPad==="left"?r="0x0"+r.substring(2):e.hexPad==="right"?r+="0":wt.throwArgumentError("hex data is odd-length","value",r)),r.toLowerCase();if(un(r)){let t="0x";for(let n=0;n>4]+$o[i&15]}return t}return wt.throwArgumentError("invalid hexlify value","value",r)}function Gr(r){if(typeof r!="string")r=H(r);else if(!ye(r)||r.length%2)return null;return(r.length-2)/2}function yt(r,e,t){return typeof r!="string"?r=H(r):(!ye(r)||r.length%2)&&wt.throwArgumentError("invalid hexData","value",r),e=2+2*e,t!=null?"0x"+r.substring(e,2+2*t):"0x"+r.substring(e)}function Qt(r){let e="0x";return r.forEach(t=>{e+=H(t).substring(2)}),e}function kr(r){const e=Hu(H(r,{hexPad:"left"}));return e==="0x"?"0x0":e}function Hu(r){typeof r!="string"&&(r=H(r)),ye(r)||wt.throwArgumentError("invalid hex string","value",r),r=r.substring(2);let e=0;for(;e2*e+2&&wt.throwArgumentError("value out of range","value",arguments[1]);r.length<2*e+2;)r="0x0"+r.substring(2);return r}function mi(r){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(an(r)){let t=W(r);t.length===64?(e.v=27+(t[32]>>7),t[32]&=127,e.r=H(t.slice(0,32)),e.s=H(t.slice(32,64))):t.length===65?(e.r=H(t.slice(0,32)),e.s=H(t.slice(32,64)),e.v=t[64]):wt.throwArgumentError("invalid signature string","signature",r),e.v<27&&(e.v===0||e.v===1?e.v+=27:wt.throwArgumentError("signature invalid v byte","signature",r)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(t[32]|=128),e._vs=H(t.slice(32,64))}else{if(e.r=r.r,e.s=r.s,e.v=r.v,e.recoveryParam=r.recoveryParam,e._vs=r._vs,e._vs!=null){const i=ws(W(e._vs),32);e._vs=H(i);const s=i[0]>=128?1:0;e.recoveryParam==null?e.recoveryParam=s:e.recoveryParam!==s&&wt.throwArgumentError("signature recoveryParam mismatch _vs","signature",r),i[0]&=127;const a=H(i);e.s==null?e.s=a:e.s!==a&&wt.throwArgumentError("signature v mismatch _vs","signature",r)}if(e.recoveryParam==null)e.v==null?wt.throwArgumentError("signature missing v and recoveryParam","signature",r):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&&wt.throwArgumentError("signature recoveryParam mismatch v","signature",r)}e.r==null||!ye(e.r)?wt.throwArgumentError("signature missing or invalid r","signature",r):e.r=Re(e.r,32),e.s==null||!ye(e.s)?wt.throwArgumentError("signature missing or invalid s","signature",r):e.s=Re(e.s,32);const t=W(e.s);t[0]>=128&&wt.throwArgumentError("signature s out of range","signature",r),e.recoveryParam&&(t[0]|=128);const n=H(t);e._vs&&(ye(e._vs)||wt.throwArgumentError("signature invalid _vs","signature",r),e._vs=Re(e._vs,32)),e._vs==null?e._vs=n:e._vs!==n&&wt.throwArgumentError("signature _vs mismatch v and s","signature",r)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function pc(r){return r=mi(r),H(Pe([r.r,r.s,r.recoveryParam?"0x1c":"0x1b"]))}const Wu="bignumber/5.7.0";var Bs=oe.BN;const Yr=new B(Wu),zo={},y0=9007199254740991;function Jp(r){return r!=null&&(R.isBigNumber(r)||typeof r=="number"&&r%1===0||typeof r=="string"&&!!r.match(/^-?[0-9]+$/)||ye(r)||typeof r=="bigint"||un(r))}let v0=!1;class R{constructor(e,t){e!==zo&&Yr.throwError("cannot call constructor directly; use BigNumber.from",B.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=t,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return er(me(this).fromTwos(e))}toTwos(e){return er(me(this).toTwos(e))}abs(){return this._hex[0]==="-"?R.from(this._hex.substring(1)):this}add(e){return er(me(this).add(me(e)))}sub(e){return er(me(this).sub(me(e)))}div(e){return R.from(e).isZero()&&fr("division-by-zero","div"),er(me(this).div(me(e)))}mul(e){return er(me(this).mul(me(e)))}mod(e){const t=me(e);return t.isNeg()&&fr("division-by-zero","mod"),er(me(this).umod(t))}pow(e){const t=me(e);return t.isNeg()&&fr("negative-power","pow"),er(me(this).pow(t))}and(e){const t=me(e);return(this.isNegative()||t.isNeg())&&fr("unbound-bitwise-result","and"),er(me(this).and(t))}or(e){const t=me(e);return(this.isNegative()||t.isNeg())&&fr("unbound-bitwise-result","or"),er(me(this).or(t))}xor(e){const t=me(e);return(this.isNegative()||t.isNeg())&&fr("unbound-bitwise-result","xor"),er(me(this).xor(t))}mask(e){return(this.isNegative()||e<0)&&fr("negative-width","mask"),er(me(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&fr("negative-width","shl"),er(me(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&fr("negative-width","shr"),er(me(this).shrn(e))}eq(e){return me(this).eq(me(e))}lt(e){return me(this).lt(me(e))}lte(e){return me(this).lte(me(e))}gt(e){return me(this).gt(me(e))}gte(e){return me(this).gte(me(e))}isNegative(){return this._hex[0]==="-"}isZero(){return me(this).isZero()}toNumber(){try{return me(this).toNumber()}catch{fr("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return Yr.throwError("this platform does not support BigInt",B.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?v0||(v0=!0,Yr.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Yr.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",B.errors.UNEXPECTED_ARGUMENT,{}):Yr.throwError("BigNumber.toString does not accept parameters",B.errors.UNEXPECTED_ARGUMENT,{})),me(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof R)return e;if(typeof e=="string")return e.match(/^-?0x[0-9a-f]+$/i)?new R(zo,Ds(e)):e.match(/^-?[0-9]+$/)?new R(zo,Ds(new Bs(e))):Yr.throwArgumentError("invalid BigNumber string","value",e);if(typeof e=="number")return e%1&&fr("underflow","BigNumber.from",e),(e>=y0||e<=-y0)&&fr("overflow","BigNumber.from",e),R.from(String(e));const t=e;if(typeof t=="bigint")return R.from(t.toString());if(un(t))return R.from(H(t));if(t)if(t.toHexString){const n=t.toHexString();if(typeof n=="string")return R.from(n)}else{let n=t._hex;if(n==null&&t.type==="BigNumber"&&(n=t.hex),typeof n=="string"&&(ye(n)||n[0]==="-"&&ye(n.substring(1))))return R.from(n)}return Yr.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!!(e&&e._isBigNumber)}}function Ds(r){if(typeof r!="string")return Ds(r.toString(16));if(r[0]==="-")return r=r.substring(1),r[0]==="-"&&Yr.throwArgumentError("invalid hex","value",r),r=Ds(r),r==="0x00"?r:"-"+r;if(r.substring(0,2)!=="0x"&&(r="0x"+r),r==="0x")return"0x00";for(r.length%2&&(r="0x0"+r.substring(2));r.length>4&&r.substring(0,4)==="0x00";)r="0x"+r.substring(4);return r}function er(r){return R.from(Ds(r))}function me(r){const e=R.from(r).toHexString();return e[0]==="-"?new Bs("-"+e.substring(3),16):new Bs(e.substring(2),16)}function fr(r,e,t){const n={fault:r,operation:e};return t!=null&&(n.value=t),Yr.throwError(r,B.errors.NUMERIC_FAULT,n)}function Qp(r){return new Bs(r,36).toString(16)}function Yp(r){return new Bs(r,16).toString(36)}const Yt=new B(Wu),ys={},ju=R.from(0),qu=R.from(-1);function Gu(r,e,t,n){const i={fault:e,operation:t};return n!==void 0&&(i.value=n),Yt.throwError(r,B.errors.NUMERIC_FAULT,i)}let vs="0";for(;vs.length<256;)vs+=vs;function sf(r){if(typeof r!="number")try{r=R.from(r).toNumber()}catch{}return typeof r=="number"&&r>=0&&r<=256&&!(r%1)?"1"+vs.substring(0,r):Yt.throwArgumentError("invalid decimal size","decimals",r)}function ya(r,e){e==null&&(e=0);const t=sf(e);r=R.from(r);const n=r.lt(ju);n&&(r=r.mul(qu));let i=r.mod(t).toString();for(;i.length2&&Yt.throwArgumentError("too many decimal points","value",r);let s=i[0],a=i[1];for(s||(s="0"),a||(a="0");a[a.length-1]==="0";)a=a.substring(0,a.length-1);for(a.length>t.length-1&&Gu("fractional component exceeds decimals","underflow","parseFixed"),a===""&&(a="0");a.lengthe[a]==null?c:(typeof e[a]!==o&&Yt.throwArgumentError("invalid fixed format ("+a+" not "+o+")","format."+a,e[a]),e[a]);t=s("signed","boolean",t),n=s("width","number",n),i=s("decimals","number",i)}return n%8&&Yt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",n),i>80&&Yt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",i),new Li(ys,t,n,i)}}class Dt{constructor(e,t,n,i){e!==ys&&Yt.throwError("cannot use FixedNumber constructor; use FixedNumber.from",B.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=i,this._hex=t,this._value=n,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(e){this.format.name!==e.format.name&&Yt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",e)}addUnsafe(e){this._checkFormat(e);const t=Or(this._value,this.format.decimals),n=Or(e._value,e.format.decimals);return Dt.fromValue(t.add(n),this.format.decimals,this.format)}subUnsafe(e){this._checkFormat(e);const t=Or(this._value,this.format.decimals),n=Or(e._value,e.format.decimals);return Dt.fromValue(t.sub(n),this.format.decimals,this.format)}mulUnsafe(e){this._checkFormat(e);const t=Or(this._value,this.format.decimals),n=Or(e._value,e.format.decimals);return Dt.fromValue(t.mul(n).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(e){this._checkFormat(e);const t=Or(this._value,this.format.decimals),n=Or(e._value,e.format.decimals);return Dt.fromValue(t.mul(this.format._multiplier).div(n),this.format.decimals,this.format)}floor(){const e=this.toString().split(".");e.length===1&&e.push("0");let t=Dt.from(e[0],this.format);const n=!e[1].match(/^(0*)$/);return this.isNegative()&&n&&(t=t.subUnsafe(E0.toFormat(t.format))),t}ceiling(){const e=this.toString().split(".");e.length===1&&e.push("0");let t=Dt.from(e[0],this.format);const n=!e[1].match(/^(0*)$/);return!this.isNegative()&&n&&(t=t.addUnsafe(E0.toFormat(t.format))),t}round(e){e==null&&(e=0);const t=this.toString().split(".");if(t.length===1&&t.push("0"),(e<0||e>80||e%1)&&Yt.throwArgumentError("invalid decimal count","decimals",e),t[1].length<=e)return this;const n=Dt.from("1"+vs.substring(0,e),this.format),i=Xp.toFormat(this.format);return this.mulUnsafe(n).addUnsafe(i).floor().divUnsafe(n)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(e){if(e==null)return this._hex;e%8&&Yt.throwArgumentError("invalid byte width","width",e);const t=R.from(this._hex).fromTwos(this.format.width).toTwos(e).toHexString();return Re(t,e/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(e){return Dt.fromString(this._value,e)}static fromValue(e,t,n){return n==null&&t!=null&&!Jp(t)&&(n=t,t=null),t==null&&(t=0),n==null&&(n="fixed"),Dt.fromString(ya(e,t),Li.from(n))}static fromString(e,t){t==null&&(t="fixed");const n=Li.from(t),i=Or(e,n.decimals);!n.signed&&i.lt(ju)&&Gu("unsigned value cannot be negative","overflow","value",e);let s=null;n.signed?s=i.toTwos(n.width).toHexString():(s=i.toHexString(),s=Re(s,n.width/8));const a=ya(i,n.decimals);return new Dt(ys,s,a,n)}static fromBytes(e,t){t==null&&(t="fixed");const n=Li.from(t);if(W(e).length>n.width/8)throw new Error("overflow");let i=R.from(e);n.signed&&(i=i.fromTwos(n.width));const s=i.toTwos((n.signed?0:1)+n.width).toHexString(),a=ya(i,n.decimals);return new Dt(ys,s,a,n)}static from(e,t){if(typeof e=="string")return Dt.fromString(e,t);if(un(e))return Dt.fromBytes(e,t);try{return Dt.fromValue(e,0,t)}catch(n){if(n.code!==B.errors.INVALID_ARGUMENT)throw n}return Yt.throwArgumentError("invalid FixedNumber value","value",e)}static isFixedNumber(e){return!!(e&&e._isFixedNumber)}}const E0=Dt.from(1),Xp=Dt.from("0.5"),Zp="properties/5.7.0";var e1=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(g){try{u(n.next(g))}catch(b){a(b)}}function c(g){try{u(n.throw(g))}catch(b){a(b)}}function u(g){g.done?s(g.value):i(g.value).then(o,c)}u((n=n.apply(r,e||[])).next())})};const Ba=new B(Zp);function q(r,e,t){Object.defineProperty(r,e,{enumerable:!0,value:t,writable:!1})}function Cr(r,e){for(let t=0;t<32;t++){if(r[e])return r[e];if(!r.prototype||typeof r.prototype!="object")break;r=Object.getPrototypeOf(r.prototype).constructor}return null}function De(r){return e1(this,void 0,void 0,function*(){const e=Object.keys(r).map(n=>{const i=r[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 af(r,e){(!r||typeof r!="object")&&Ba.throwArgumentError("invalid object","object",r),Object.keys(r).forEach(t=>{e[t]||Ba.throwArgumentError("invalid object key - "+t,"transaction:"+t,r)})}function Ct(r){const e={};for(const t in r)e[t]=r[t];return e}const t1={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function $u(r){if(r==null||t1[typeof r])return!0;if(Array.isArray(r)||typeof r=="object"){if(!Object.isFrozen(r))return!1;const e=Object.keys(r);for(let t=0;t$r(e)));if(typeof r=="object"){const e={};for(const t in r){const n=r[t];n!==void 0&&q(e,t,$r(n))}return e}return Ba.throwArgumentError(`Cannot deepCopy ${typeof r}`,"object",r)}function $r(r){return r1(r)}class wi{constructor(e){for(const t in e)this[t]=$r(e[t])}}const Js="abi/5.7.0",Ae=new B(Js),li={};let A0={calldata:!0,memory:!0,storage:!0},n1={calldata:!0,memory:!0};function fa(r,e){if(r==="bytes"||r==="string"){if(A0[e])return!0}else if(r==="address"){if(e==="payable")return!0}else if((r.indexOf("[")>=0||r==="tuple")&&n1[e])return!0;return(A0[e]||e==="payable")&&Ae.throwArgumentError("invalid modifier","name",e),!1}function i1(r,e){let t=r;function n(o){Ae.throwArgumentError(`unexpected character at position ${o}`,"param",r)}r=r.replace(/\s/g," ");function i(o){let c={type:"",name:"",parent:o,state:{allowType:!0}};return e&&(c.indexed=!1),c}let s={type:"",name:"",state:{allowType:!0}},a=s;for(let o=0;oJSON.parse(i.format(e)))),JSON.stringify(n)}let t="";return this.baseType==="array"?(t+=this.arrayChildren.format(e),t+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):this.baseType==="tuple"?(e!==Se.sighash&&(t+=this.type),t+="("+this.components.map(n=>n.format(e)).join(e===Se.full?", ":",")+")"):t+=this.type,e!==Se.sighash&&(this.indexed===!0&&(t+=" indexed"),e===Se.full&&this.name&&(t+=" "+this.name)),t}static from(e,t){return typeof e=="string"?Tt.fromString(e,t):Tt.fromObject(e)}static fromObject(e){return Tt.isParamType(e)?e:new Tt(li,{name:e.name||null,type:Ti(e.type),indexed:e.indexed==null?null:!!e.indexed,components:e.components?e.components.map(Tt.fromObject):null})}static fromString(e,t){function n(i){return Tt.fromObject({name:i.name,type:i.type,indexed:i.indexed,components:i.components})}return n(i1(e,!!t))}static isParamType(e){return!!(e!=null&&e._isParamType)}}function Ls(r,e){return o1(r).map(t=>Tt.fromString(t,e))}class Dr{constructor(e,t){e!==li&&Ae.throwError("use a static from method",B.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),va(this,t),this._isFragment=!0,Object.freeze(this)}static from(e){return Dr.isFragment(e)?e:typeof e=="string"?Dr.fromString(e):Dr.fromObject(e)}static fromObject(e){if(Dr.isFragment(e))return e;switch(e.type){case"function":return Sr.fromObject(e);case"event":return Br.fromObject(e);case"constructor":return _r.fromObject(e);case"error":return tn.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"?Br.fromString(e.substring(5).trim()):e.split(" ")[0]==="function"?Sr.fromString(e.substring(8).trim()):e.split("(")[0].trim()==="constructor"?_r.fromString(e.trim()):e.split(" ")[0]==="error"?tn.fromString(e.substring(5).trim()):Ae.throwArgumentError("unsupported fragment","value",e)}static isFragment(e){return!!(e&&e._isFragment)}}class Br extends Dr{format(e){if(e||(e=Se.sighash),Se[e]||Ae.throwArgumentError("invalid format type","format",e),e===Se.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});let t="";return e!==Se.sighash&&(t+="event "),t+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===Se.full?", ":",")+") ",e!==Se.sighash&&this.anonymous&&(t+="anonymous "),t.trim()}static from(e){return typeof e=="string"?Br.fromString(e):Br.fromObject(e)}static fromObject(e){if(Br.isEventFragment(e))return e;e.type!=="event"&&Ae.throwArgumentError("invalid event object","value",e);const t={name:Fs(e.name),anonymous:e.anonymous,inputs:e.inputs?e.inputs.map(Tt.fromObject):[],type:"event"};return new Br(li,t)}static fromString(e){let t=e.match(Us);t||Ae.throwArgumentError("invalid event string","value",e);let n=!1;return t[3].split(" ").forEach(i=>{switch(i.trim()){case"anonymous":n=!0;break;case"":break;default:Ae.warn("unknown modifier: "+i)}}),Br.fromObject({name:t[1].trim(),anonymous:n,inputs:Ls(t[2],!0),type:"event"})}static isEventFragment(e){return e&&e._isFragment&&e.type==="event"}}function zu(r,e){e.gas=null;let t=r.split("@");return t.length!==1?(t.length>2&&Ae.throwArgumentError("invalid human-readable ABI signature","value",r),t[1].match(/^[0-9]+$/)||Ae.throwArgumentError("invalid human-readable ABI signature gas","value",r),e.gas=R.from(t[1]),t[0]):r}function Vu(r,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",r.split(" ").forEach(t=>{switch(t.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: "+t)}})}function Ku(r){let e={constant:!1,payable:!0,stateMutability:"payable"};return r.stateMutability!=null?(e.stateMutability=r.stateMutability,e.constant=e.stateMutability==="view"||e.stateMutability==="pure",r.constant!=null&&!!r.constant!==e.constant&&Ae.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",r),e.payable=e.stateMutability==="payable",r.payable!=null&&!!r.payable!==e.payable&&Ae.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",r)):r.payable!=null?(e.payable=!!r.payable,r.constant==null&&!e.payable&&r.type!=="constructor"&&Ae.throwArgumentError("unable to determine stateMutability","value",r),e.constant=!!r.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&Ae.throwArgumentError("cannot have constant payable function","value",r)):r.constant!=null?(e.constant=!!r.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):r.type!=="constructor"&&Ae.throwArgumentError("unable to determine stateMutability","value",r),e}class _r extends Dr{format(e){if(e||(e=Se.sighash),Se[e]||Ae.throwArgumentError("invalid format type","format",e),e===Se.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===Se.sighash&&Ae.throwError("cannot format a constructor for sighash",B.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let t="constructor("+this.inputs.map(n=>n.format(e)).join(e===Se.full?", ":",")+") ";return this.stateMutability&&this.stateMutability!=="nonpayable"&&(t+=this.stateMutability+" "),t.trim()}static from(e){return typeof e=="string"?_r.fromString(e):_r.fromObject(e)}static fromObject(e){if(_r.isConstructorFragment(e))return e;e.type!=="constructor"&&Ae.throwArgumentError("invalid constructor object","value",e);let t=Ku(e);t.constant&&Ae.throwArgumentError("constructor cannot be constant","value",e);const n={name:null,type:e.type,inputs:e.inputs?e.inputs.map(Tt.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?R.from(e.gas):null};return new _r(li,n)}static fromString(e){let t={type:"constructor"};e=zu(e,t);let n=e.match(Us);return(!n||n[1].trim()!=="constructor")&&Ae.throwArgumentError("invalid constructor string","value",e),t.inputs=Ls(n[2].trim(),!1),Vu(n[3].trim(),t),_r.fromObject(t)}static isConstructorFragment(e){return e&&e._isFragment&&e.type==="constructor"}}class Sr extends _r{format(e){if(e||(e=Se.sighash),Se[e]||Ae.throwArgumentError("invalid format type","format",e),e===Se.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 t="";return e!==Se.sighash&&(t+="function "),t+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===Se.full?", ":",")+") ",e!==Se.sighash&&(this.stateMutability?this.stateMutability!=="nonpayable"&&(t+=this.stateMutability+" "):this.constant&&(t+="view "),this.outputs&&this.outputs.length&&(t+="returns ("+this.outputs.map(n=>n.format(e)).join(", ")+") "),this.gas!=null&&(t+="@"+this.gas.toString()+" ")),t.trim()}static from(e){return typeof e=="string"?Sr.fromString(e):Sr.fromObject(e)}static fromObject(e){if(Sr.isFunctionFragment(e))return e;e.type!=="function"&&Ae.throwArgumentError("invalid function object","value",e);let t=Ku(e);const n={type:e.type,name:Fs(e.name),constant:t.constant,inputs:e.inputs?e.inputs.map(Tt.fromObject):[],outputs:e.outputs?e.outputs.map(Tt.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?R.from(e.gas):null};return new Sr(li,n)}static fromString(e){let t={type:"function"};e=zu(e,t);let n=e.split(" returns ");n.length>2&&Ae.throwArgumentError("invalid function string","value",e);let i=n[0].match(Us);if(i||Ae.throwArgumentError("invalid function signature","value",e),t.name=i[1].trim(),t.name&&Fs(t.name),t.inputs=Ls(i[2],!1),Vu(i[3].trim(),t),n.length>1){let s=n[1].match(Us);(s[1].trim()!=""||s[3].trim()!="")&&Ae.throwArgumentError("unexpected tokens","value",e),t.outputs=Ls(s[2],!1)}else t.outputs=[];return Sr.fromObject(t)}static isFunctionFragment(e){return e&&e._isFragment&&e.type==="function"}}function _0(r){const e=r.format();return(e==="Error(string)"||e==="Panic(uint256)")&&Ae.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",r),r}class tn extends Dr{format(e){if(e||(e=Se.sighash),Se[e]||Ae.throwArgumentError("invalid format type","format",e),e===Se.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});let t="";return e!==Se.sighash&&(t+="error "),t+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===Se.full?", ":",")+") ",t.trim()}static from(e){return typeof e=="string"?tn.fromString(e):tn.fromObject(e)}static fromObject(e){if(tn.isErrorFragment(e))return e;e.type!=="error"&&Ae.throwArgumentError("invalid error object","value",e);const t={type:e.type,name:Fs(e.name),inputs:e.inputs?e.inputs.map(Tt.fromObject):[]};return _0(new tn(li,t))}static fromString(e){let t={type:"error"},n=e.match(Us);return n||Ae.throwArgumentError("invalid error signature","value",e),t.name=n[1].trim(),t.name&&Fs(t.name),t.inputs=Ls(n[2],!1),_0(tn.fromObject(t))}static isErrorFragment(e){return e&&e._isFragment&&e.type==="error"}}function Ti(r){return r.match(/^uint($|[^1-9])/)?r="uint256"+r.substring(4):r.match(/^int($|[^1-9])/)&&(r="int256"+r.substring(3)),r}const a1=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function Fs(r){return(!r||!r.match(a1))&&Ae.throwArgumentError(`invalid identifier "${r}"`,"value",r),r}const Us=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");function o1(r){r=r.trim();let e=[],t="",n=0;for(let i=0;ithis.wordSize&&of.throwError("value out-of-bounds",B.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:t.length}),t.length%this.wordSize&&(t=Pe([this._padding.slice(t.length%this.wordSize),t])),t}writeValue(e){return this._writeData(this._getValue(e))}writeUpdatableValue(){const e=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,t=>{this._data[e]=this._getValue(t)}}}class Da{constructor(e,t,n,i){q(this,"_data",W(e)),q(this,"wordSize",t||32),q(this,"_coerceFunc",n),q(this,"allowLoose",i),this._offset=0}get data(){return H(this._data)}get consumed(){return this._offset}static coerce(e,t){let n=e.match("^u?int([0-9]+)$");return n&&parseInt(n[1])<=48&&(t=t.toNumber()),t}coerce(e,t){return this._coerceFunc?this._coerceFunc(e,t):Da.coerce(e,t)}_peekBytes(e,t,n){let i=Math.ceil(t/this.wordSize)*this.wordSize;return this._offset+i>this._data.length&&(this.allowLoose&&n&&this._offset+t<=this._data.length?i=t:of.throwError("data out-of-bounds",B.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+i})),this._data.slice(this._offset,this._offset+i)}subReader(e){return new Da(this._data.slice(this._offset+e),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(e,t){let n=this._peekBytes(0,e,!!t);return this._offset+=n.length,n.slice(0,e)}readValue(){return R.from(this.readBytes(this.wordSize))}}var Qu={exports:{}};/** +var gp=Object.defineProperty;var pp=(r,e,t)=>e in r?gp(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var _e=(r,e,t)=>(pp(r,typeof e!="symbol"?e+"":e,t),t);import{g as xp,h as Du,i as Xi,k as bp,s as mp,r as ca,j as Oe,u as Lu}from"./index-CchMGs7j.js";const wp=[{inputs:[{internalType:"bytes32",type:"bytes32"}],name:"getAlternativeSignature",outputs:[{internalType:"string",type:"string"}],stateMutability:"view",type:"function"}];var yp=Object.freeze({__proto__:null,abi:wp});const vp=[{type:"function",name:"isValidSignature",constant:!0,inputs:[{type:"bytes32"},{type:"bytes"}],outputs:[{type:"bytes4"}],payable:!1,stateMutability:"view"}],Ep={isValidSignatureBytes32:"0x1626ba7e"};var Ap=Object.freeze({__proto__:null,abi:vp,returns:Ep});const _p=[{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 Sp=Object.freeze({__proto__:null,abi:_p});const Cp=[{type:"function",name:"deploy",constant:!1,inputs:[{type:"address"},{type:"bytes32"}],outputs:[],payable:!0,stateMutability:"payable"}];var Ip=Object.freeze({__proto__:null,abi:Cp});const kp=[{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 Tp=Object.freeze({__proto__:null,abi:kp});const Mp=[{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 Np=Object.freeze({__proto__:null,abi:Mp});const Op=[{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 Pp=Object.freeze({__proto__:null,abi:Op});const Rp=[{inputs:[{internalType:"address",name:"",type:"address"}],name:"requireFreshSigner",outputs:[],stateMutability:"nonpayable",type:"function"}];var Bp=Object.freeze({__proto__:null,abi:Rp});const Rt={erc6492:Sp,erc5719:yp,erc1271:Ap,factory:Ip,mainModule:Tp,mainModuleUpgradable:Np,sequenceUtils:Pp,requireFreshSigner:Bp},Dp=Object.freeze(Object.defineProperty({__proto__:null,walletContracts:Rt},Symbol.toStringTag,{value:"Module"}));function Ra(){return Ra=Object.assign?Object.assign.bind():function(r){for(var e=1;ethis.fetch(this.url("Ping"),fe({},n)).then(i=>ue(i).then(s=>({status:s.status}))),this.version=n=>this.fetch(this.url("Version"),fe({},n)).then(i=>ue(i).then(s=>({version:s.version}))),this.runtimeStatus=n=>this.fetch(this.url("RuntimeStatus"),fe({},n)).then(i=>ue(i).then(s=>({status:s.status}))),this.clock=n=>this.fetch(this.url("Clock"),fe({},n)).then(i=>ue(i).then(s=>({serverTime:s.serverTime}))),this.getSequenceContext=n=>this.fetch(this.url("GetSequenceContext"),fe({},n)).then(i=>ue(i).then(s=>({data:s.data}))),this.getAuthToken=(n,i)=>this.fetch(this.url("GetAuthToken"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,jwtToken:a.jwtToken,address:a.address,user:a.user}))),this.getAuthToken2=(n,i)=>this.fetch(this.url("GetAuthToken2"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,jwtToken:a.jwtToken,address:a.address,user:a.user}))),this.sendPasswordlessLink=(n,i)=>this.fetch(this.url("SendPasswordlessLink"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.friendList=(n,i)=>this.fetch(this.url("FriendList"),fe(n,i)).then(s=>ue(s).then(a=>({page:a.page,friends:a.friends}))),this.getFriendByAddress=(n,i)=>this.fetch(this.url("GetFriendByAddress"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,friend:a.friend}))),this.searchFriends=(n,i)=>this.fetch(this.url("SearchFriends"),fe(n,i)).then(s=>ue(s).then(a=>({friends:a.friends}))),this.addFriend=(n,i)=>this.fetch(this.url("AddFriend"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,friend:a.friend}))),this.updateFriendNickname=(n,i)=>this.fetch(this.url("UpdateFriendNickname"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,friend:a.friend}))),this.removeFriend=(n,i)=>this.fetch(this.url("RemoveFriend"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.contractCall=(n,i)=>this.fetch(this.url("ContractCall"),fe(n,i)).then(s=>ue(s).then(a=>({returns:a.returns}))),this.decodeContractCall=(n,i)=>this.fetch(this.url("DecodeContractCall"),fe(n,i)).then(s=>ue(s).then(a=>({call:a.call}))),this.lookupContractCallSelectors=(n,i)=>this.fetch(this.url("LookupContractCallSelectors"),fe(n,i)).then(s=>ue(s).then(a=>({signatures:a.signatures}))),this.userStorageFetch=(n,i)=>this.fetch(this.url("UserStorageFetch"),fe(n,i)).then(s=>ue(s).then(a=>({object:a.object}))),this.userStorageSave=(n,i)=>this.fetch(this.url("UserStorageSave"),fe(n,i)).then(s=>ue(s).then(a=>({ok:a.ok}))),this.userStorageDelete=(n,i)=>this.fetch(this.url("UserStorageDelete"),fe(n,i)).then(s=>ue(s).then(a=>({ok:a.ok}))),this.userStorageFetchAll=(n,i)=>this.fetch(this.url("UserStorageFetchAll"),fe(n,i)).then(s=>ue(s).then(a=>({objects:a.objects}))),this.getMoonpayLink=(n,i)=>this.fetch(this.url("GetMoonpayLink"),fe(n,i)).then(s=>ue(s).then(a=>({signedUrl:a.signedUrl}))),this.getSardineClientToken=n=>this.fetch(this.url("GetSardineClientToken"),fe({},n)).then(i=>ue(i).then(s=>({token:s.token}))),this.resolveENSAddress=(n,i)=>this.fetch(this.url("ResolveENSAddress"),fe(n,i)).then(s=>ue(s).then(a=>({address:a.address,ok:a.ok}))),this.isValidSignature=(n,i)=>this.fetch(this.url("IsValidSignature"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.isValidMessageSignature=(n,i)=>this.fetch(this.url("IsValidMessageSignature"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.isValidTypedDataSignature=(n,i)=>this.fetch(this.url("IsValidTypedDataSignature"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.isValidETHAuthProof=(n,i)=>this.fetch(this.url("IsValidETHAuthProof"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.getCoinPrices=(n,i)=>this.fetch(this.url("GetCoinPrices"),fe(n,i)).then(s=>ue(s).then(a=>({tokenPrices:a.tokenPrices}))),this.getCollectiblePrices=(n,i)=>this.fetch(this.url("GetCollectiblePrices"),fe(n,i)).then(s=>ue(s).then(a=>({tokenPrices:a.tokenPrices}))),this.getExchangeRate=(n,i)=>this.fetch(this.url("GetExchangeRate"),fe(n,i)).then(s=>ue(s).then(a=>({exchangeRate:a.exchangeRate}))),this.memoryStore=(n,i)=>this.fetch(this.url("MemoryStore"),fe(n,i)).then(s=>ue(s).then(a=>({ok:a.ok}))),this.memoryLoad=(n,i)=>this.fetch(this.url("MemoryLoad"),fe(n,i)).then(s=>ue(s).then(a=>({value:a.value}))),this.getInviteInfo=n=>this.fetch(this.url("GetInviteInfo"),fe({},n)).then(i=>ue(i).then(s=>({inviteInfo:s.inviteInfo}))),this.isValidAccessCode=(n,i)=>this.fetch(this.url("IsValidAccessCode"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.internalClaimAccessCode=(n,i)=>this.fetch(this.url("InternalClaimAccessCode"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.blockNumberAtTime=(n,i)=>this.fetch(this.url("BlockNumberAtTime"),fe(n,i)).then(s=>ue(s).then(a=>({blocks:a.blocks}))),this.paperSessionSecret=(n,i)=>this.fetch(this.url("PaperSessionSecret"),fe(n,i)).then(s=>ue(s).then(a=>({secret:a.secret}))),this.paperSessionSecret2=(n,i)=>this.fetch(this.url("PaperSessionSecret2"),fe(n,i)).then(s=>ue(s).then(a=>({secret:a.secret}))),this.linkWallet=(n,i)=>this.fetch(this.url("LinkWallet"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,linkedWalletAddress:a.linkedWalletAddress}))),this.getLinkedWallets=(n,i)=>this.fetch(this.url("GetLinkedWallets"),fe(n,i)).then(s=>ue(s).then(a=>({linkedWallets:a.linkedWallets}))),this.hostname=e,this.fetch=(n,i)=>t(n,i)}url(e){return this.hostname+this.path+e}}const fe=(r={},e={})=>({method:"POST",headers:Ra({},e,{"Content-Type":"application/json"}),body:JSON.stringify(r||{})}),ue=r=>r.text().then(e=>{let t;try{t=JSON.parse(e)}catch{throw{code:"unknown",msg:`expecting JSON, got: ${e}`,status:r.status}}if(!r.ok)throw t;return t}),h0=typeof global=="object"?global.fetch:window.fetch;class ma extends Fu{constructor(e,t,n){super(e.endsWith("/")?e.slice(0,-1):e,h0),this.projectAccessKey=t,this.jwtAuth=n,this._fetch=(i,s)=>{const a={},o=this.jwtAuth,c=this.projectAccessKey;return o&&o.length>0&&(a.Authorization=`BEARER ${o}`),c&&c.length>0&&(a["X-Access-Key"]=c),s.headers=Ra({},s.headers,a),h0(i,s)},this.fetch=this._fetch}}const Wp=Object.freeze(Object.defineProperty({__proto__:null,API:Fu,SequenceAPIClient:ma,SortOrder:Hp,WebRPCSchemaHash:Up,WebRPCSchemaVersion:Fp,WebRPCVersion:Lp},Symbol.toStringTag,{value:"Module"}));var nf={exports:{}};const jp={},qp=Object.freeze(Object.defineProperty({__proto__:null,default:jp},Symbol.toStringTag,{value:"Module"})),Gp=xp(qp);nf.exports;(function(r){(function(e,t){function n(M,l){if(!M)throw new Error(l||"Assertion failed")}function i(M,l){M.super_=l;var x=function(){};x.prototype=l.prototype,M.prototype=new x,M.prototype.constructor=M}function s(M,l,x){if(s.isBN(M))return M;this.negative=0,this.words=null,this.length=0,this.red=null,M!==null&&((l==="le"||l==="be")&&(x=l,l=10),this._init(M||0,l||10,x||"be"))}typeof e=="object"?e.exports=s:t.BN=s,s.BN=s,s.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=Gp.Buffer}catch{}s.isBN=function(l){return l instanceof s?!0:l!==null&&typeof l=="object"&&l.constructor.wordSize===s.wordSize&&Array.isArray(l.words)},s.max=function(l,x){return l.cmp(x)>0?l:x},s.min=function(l,x){return l.cmp(x)<0?l:x},s.prototype._init=function(l,x,y){if(typeof l=="number")return this._initNumber(l,x,y);if(typeof l=="object")return this._initArray(l,x,y);x==="hex"&&(x=16),n(x===(x|0)&&x>=2&&x<=36),l=l.toString().replace(/\s+/g,"");var C=0;l[0]==="-"&&(C++,this.negative=1),C=0;C-=3)w=l[C]|l[C-1]<<8|l[C-2]<<16,this.words[p]|=w<>>26-v&67108863,v+=24,v>=26&&(v-=26,p++);else if(y==="le")for(C=0,p=0;C>>26-v&67108863,v+=24,v>=26&&(v-=26,p++);return this._strip()};function o(M,l){var x=M.charCodeAt(l);if(x>=48&&x<=57)return x-48;if(x>=65&&x<=70)return x-55;if(x>=97&&x<=102)return x-87;n(!1,"Invalid character in "+M)}function c(M,l,x){var y=o(M,x);return x-1>=l&&(y|=o(M,x-1)<<4),y}s.prototype._parseHex=function(l,x,y){this.length=Math.ceil((l.length-x)/6),this.words=new Array(this.length);for(var C=0;C=x;C-=2)v=c(l,x,C)<=18?(p-=18,w+=1,this.words[w]|=v>>>26):p+=8;else{var h=l.length-x;for(C=h%2===0?x+1:x;C=18?(p-=18,w+=1,this.words[w]|=v>>>26):p+=8}this._strip()};function u(M,l,x,y){for(var C=0,p=0,w=Math.min(M.length,x),v=l;v=49?p=h-49+10:h>=17?p=h-17+10:p=h,n(h>=0&&p1&&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")]=b}catch{s.prototype.inspect=b}else s.prototype.inspect=b;function b(){return(this.red?""}var E=["","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"],A=[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],T=[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(l,x){l=l||10,x=x|0||1;var y;if(l===16||l==="hex"){y="";for(var C=0,p=0,w=0;w>>24-C&16777215,C+=2,C>=26&&(C-=26,w--),p!==0||w!==this.length-1?y=E[6-h.length]+h+y:y=h+y}for(p!==0&&(y=p.toString(16)+y);y.length%x!==0;)y="0"+y;return this.negative!==0&&(y="-"+y),y}if(l===(l|0)&&l>=2&&l<=36){var f=A[l],m=T[l];y="";var I=this.clone();for(I.negative=0;!I.isZero();){var d=I.modrn(m).toString(l);I=I.idivn(m),I.isZero()?y=d+y:y=E[f-d.length]+d+y}for(this.isZero()&&(y="0"+y);y.length%x!==0;)y="0"+y;return this.negative!==0&&(y="-"+y),y}n(!1,"Base should be between 2 and 36")},s.prototype.toNumber=function(){var l=this.words[0];return this.length===2?l+=this.words[1]*67108864:this.length===3&&this.words[2]===1?l+=4503599627370496+this.words[1]*67108864:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-l:l},s.prototype.toJSON=function(){return this.toString(16,2)},a&&(s.prototype.toBuffer=function(l,x){return this.toArrayLike(a,l,x)}),s.prototype.toArray=function(l,x){return this.toArrayLike(Array,l,x)};var k=function(l,x){return l.allocUnsafe?l.allocUnsafe(x):new l(x)};s.prototype.toArrayLike=function(l,x,y){this._strip();var C=this.byteLength(),p=y||Math.max(1,C);n(C<=p,"byte array longer than desired length"),n(p>0,"Requested array length <= 0");var w=k(l,p),v=x==="le"?"LE":"BE";return this["_toArrayLike"+v](w,C),w},s.prototype._toArrayLikeLE=function(l,x){for(var y=0,C=0,p=0,w=0;p>8&255),y>16&255),w===6?(y>24&255),C=0,w=0):(C=v>>>24,w+=2)}if(y=0&&(l[y--]=v>>8&255),y>=0&&(l[y--]=v>>16&255),w===6?(y>=0&&(l[y--]=v>>24&255),C=0,w=0):(C=v>>>24,w+=2)}if(y>=0)for(l[y--]=C;y>=0;)l[y--]=0},Math.clz32?s.prototype._countBits=function(l){return 32-Math.clz32(l)}:s.prototype._countBits=function(l){var x=l,y=0;return x>=4096&&(y+=13,x>>>=13),x>=64&&(y+=7,x>>>=7),x>=8&&(y+=4,x>>>=4),x>=2&&(y+=2,x>>>=2),y+x},s.prototype._zeroBits=function(l){if(l===0)return 26;var x=l,y=0;return x&8191||(y+=13,x>>>=13),x&127||(y+=7,x>>>=7),x&15||(y+=4,x>>>=4),x&3||(y+=2,x>>>=2),x&1||y++,y},s.prototype.bitLength=function(){var l=this.words[this.length-1],x=this._countBits(l);return(this.length-1)*26+x};function _(M){for(var l=new Array(M.bitLength()),x=0;x>>C&1}return l}s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var l=0,x=0;xl.length?this.clone().ior(l):l.clone().ior(this)},s.prototype.uor=function(l){return this.length>l.length?this.clone().iuor(l):l.clone().iuor(this)},s.prototype.iuand=function(l){var x;this.length>l.length?x=l:x=this;for(var y=0;yl.length?this.clone().iand(l):l.clone().iand(this)},s.prototype.uand=function(l){return this.length>l.length?this.clone().iuand(l):l.clone().iuand(this)},s.prototype.iuxor=function(l){var x,y;this.length>l.length?(x=this,y=l):(x=l,y=this);for(var C=0;Cl.length?this.clone().ixor(l):l.clone().ixor(this)},s.prototype.uxor=function(l){return this.length>l.length?this.clone().iuxor(l):l.clone().iuxor(this)},s.prototype.inotn=function(l){n(typeof l=="number"&&l>=0);var x=Math.ceil(l/26)|0,y=l%26;this._expand(x),y>0&&x--;for(var C=0;C0&&(this.words[C]=~this.words[C]&67108863>>26-y),this._strip()},s.prototype.notn=function(l){return this.clone().inotn(l)},s.prototype.setn=function(l,x){n(typeof l=="number"&&l>=0);var y=l/26|0,C=l%26;return this._expand(y+1),x?this.words[y]=this.words[y]|1<l.length?(y=this,C=l):(y=l,C=this);for(var p=0,w=0;w>>26;for(;p!==0&&w>>26;if(this.length=y.length,p!==0)this.words[this.length]=p,this.length++;else if(y!==this)for(;wl.length?this.clone().iadd(l):l.clone().iadd(this)},s.prototype.isub=function(l){if(l.negative!==0){l.negative=0;var x=this.iadd(l);return l.negative=1,x._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(l),this.negative=1,this._normSign();var y=this.cmp(l);if(y===0)return this.negative=0,this.length=1,this.words[0]=0,this;var C,p;y>0?(C=this,p=l):(C=l,p=this);for(var w=0,v=0;v>26,this.words[v]=x&67108863;for(;w!==0&&v>26,this.words[v]=x&67108863;if(w===0&&v>>26,I=h&67108863,d=Math.min(f,l.length-1),S=Math.max(0,f-M.length+1);S<=d;S++){var N=f-S|0;C=M.words[N]|0,p=l.words[S]|0,w=C*p+I,m+=w/67108864|0,I=w&67108863}x.words[f]=I|0,h=m|0}return h!==0?x.words[f]=h|0:x.length--,x._strip()}var F=function(l,x,y){var C=l.words,p=x.words,w=y.words,v=0,h,f,m,I=C[0]|0,d=I&8191,S=I>>>13,N=C[1]|0,P=N&8191,U=N>>>13,K=C[2]|0,G=K&8191,V=K>>>13,he=C[3]|0,Y=he&8191,ie=he>>>13,sr=C[4]|0,Ie=sr&8191,Ee=sr>>>13,mt=C[5]|0,Le=mt&8191,Fe=mt>>>13,Un=C[6]|0,Ue=Un&8191,He=Un>>>13,Hn=C[7]|0,We=Hn&8191,je=Hn>>>13,Wn=C[8]|0,qe=Wn&8191,Ge=Wn>>>13,jn=C[9]|0,$e=jn&8191,ze=jn>>>13,qn=p[0]|0,Ve=qn&8191,Ke=qn>>>13,Gn=p[1]|0,Je=Gn&8191,Qe=Gn>>>13,$n=p[2]|0,Ye=$n&8191,Xe=$n>>>13,zn=p[3]|0,Ze=zn&8191,et=zn>>>13,Vn=p[4]|0,tt=Vn&8191,rt=Vn>>>13,Kn=p[5]|0,nt=Kn&8191,it=Kn>>>13,Jn=p[6]|0,st=Jn&8191,at=Jn>>>13,Qn=p[7]|0,ot=Qn&8191,ct=Qn>>>13,Yn=p[8]|0,ft=Yn&8191,ut=Yn>>>13,Xn=p[9]|0,lt=Xn&8191,dt=Xn>>>13;y.negative=l.negative^x.negative,y.length=19,h=Math.imul(d,Ve),f=Math.imul(d,Ke),f=f+Math.imul(S,Ve)|0,m=Math.imul(S,Ke);var xn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(xn>>>26)|0,xn&=67108863,h=Math.imul(P,Ve),f=Math.imul(P,Ke),f=f+Math.imul(U,Ve)|0,m=Math.imul(U,Ke),h=h+Math.imul(d,Je)|0,f=f+Math.imul(d,Qe)|0,f=f+Math.imul(S,Je)|0,m=m+Math.imul(S,Qe)|0;var bn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(bn>>>26)|0,bn&=67108863,h=Math.imul(G,Ve),f=Math.imul(G,Ke),f=f+Math.imul(V,Ve)|0,m=Math.imul(V,Ke),h=h+Math.imul(P,Je)|0,f=f+Math.imul(P,Qe)|0,f=f+Math.imul(U,Je)|0,m=m+Math.imul(U,Qe)|0,h=h+Math.imul(d,Ye)|0,f=f+Math.imul(d,Xe)|0,f=f+Math.imul(S,Ye)|0,m=m+Math.imul(S,Xe)|0;var mn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(mn>>>26)|0,mn&=67108863,h=Math.imul(Y,Ve),f=Math.imul(Y,Ke),f=f+Math.imul(ie,Ve)|0,m=Math.imul(ie,Ke),h=h+Math.imul(G,Je)|0,f=f+Math.imul(G,Qe)|0,f=f+Math.imul(V,Je)|0,m=m+Math.imul(V,Qe)|0,h=h+Math.imul(P,Ye)|0,f=f+Math.imul(P,Xe)|0,f=f+Math.imul(U,Ye)|0,m=m+Math.imul(U,Xe)|0,h=h+Math.imul(d,Ze)|0,f=f+Math.imul(d,et)|0,f=f+Math.imul(S,Ze)|0,m=m+Math.imul(S,et)|0;var wn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(wn>>>26)|0,wn&=67108863,h=Math.imul(Ie,Ve),f=Math.imul(Ie,Ke),f=f+Math.imul(Ee,Ve)|0,m=Math.imul(Ee,Ke),h=h+Math.imul(Y,Je)|0,f=f+Math.imul(Y,Qe)|0,f=f+Math.imul(ie,Je)|0,m=m+Math.imul(ie,Qe)|0,h=h+Math.imul(G,Ye)|0,f=f+Math.imul(G,Xe)|0,f=f+Math.imul(V,Ye)|0,m=m+Math.imul(V,Xe)|0,h=h+Math.imul(P,Ze)|0,f=f+Math.imul(P,et)|0,f=f+Math.imul(U,Ze)|0,m=m+Math.imul(U,et)|0,h=h+Math.imul(d,tt)|0,f=f+Math.imul(d,rt)|0,f=f+Math.imul(S,tt)|0,m=m+Math.imul(S,rt)|0;var yn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(yn>>>26)|0,yn&=67108863,h=Math.imul(Le,Ve),f=Math.imul(Le,Ke),f=f+Math.imul(Fe,Ve)|0,m=Math.imul(Fe,Ke),h=h+Math.imul(Ie,Je)|0,f=f+Math.imul(Ie,Qe)|0,f=f+Math.imul(Ee,Je)|0,m=m+Math.imul(Ee,Qe)|0,h=h+Math.imul(Y,Ye)|0,f=f+Math.imul(Y,Xe)|0,f=f+Math.imul(ie,Ye)|0,m=m+Math.imul(ie,Xe)|0,h=h+Math.imul(G,Ze)|0,f=f+Math.imul(G,et)|0,f=f+Math.imul(V,Ze)|0,m=m+Math.imul(V,et)|0,h=h+Math.imul(P,tt)|0,f=f+Math.imul(P,rt)|0,f=f+Math.imul(U,tt)|0,m=m+Math.imul(U,rt)|0,h=h+Math.imul(d,nt)|0,f=f+Math.imul(d,it)|0,f=f+Math.imul(S,nt)|0,m=m+Math.imul(S,it)|0;var Mo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Mo>>>26)|0,Mo&=67108863,h=Math.imul(Ue,Ve),f=Math.imul(Ue,Ke),f=f+Math.imul(He,Ve)|0,m=Math.imul(He,Ke),h=h+Math.imul(Le,Je)|0,f=f+Math.imul(Le,Qe)|0,f=f+Math.imul(Fe,Je)|0,m=m+Math.imul(Fe,Qe)|0,h=h+Math.imul(Ie,Ye)|0,f=f+Math.imul(Ie,Xe)|0,f=f+Math.imul(Ee,Ye)|0,m=m+Math.imul(Ee,Xe)|0,h=h+Math.imul(Y,Ze)|0,f=f+Math.imul(Y,et)|0,f=f+Math.imul(ie,Ze)|0,m=m+Math.imul(ie,et)|0,h=h+Math.imul(G,tt)|0,f=f+Math.imul(G,rt)|0,f=f+Math.imul(V,tt)|0,m=m+Math.imul(V,rt)|0,h=h+Math.imul(P,nt)|0,f=f+Math.imul(P,it)|0,f=f+Math.imul(U,nt)|0,m=m+Math.imul(U,it)|0,h=h+Math.imul(d,st)|0,f=f+Math.imul(d,at)|0,f=f+Math.imul(S,st)|0,m=m+Math.imul(S,at)|0;var No=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(No>>>26)|0,No&=67108863,h=Math.imul(We,Ve),f=Math.imul(We,Ke),f=f+Math.imul(je,Ve)|0,m=Math.imul(je,Ke),h=h+Math.imul(Ue,Je)|0,f=f+Math.imul(Ue,Qe)|0,f=f+Math.imul(He,Je)|0,m=m+Math.imul(He,Qe)|0,h=h+Math.imul(Le,Ye)|0,f=f+Math.imul(Le,Xe)|0,f=f+Math.imul(Fe,Ye)|0,m=m+Math.imul(Fe,Xe)|0,h=h+Math.imul(Ie,Ze)|0,f=f+Math.imul(Ie,et)|0,f=f+Math.imul(Ee,Ze)|0,m=m+Math.imul(Ee,et)|0,h=h+Math.imul(Y,tt)|0,f=f+Math.imul(Y,rt)|0,f=f+Math.imul(ie,tt)|0,m=m+Math.imul(ie,rt)|0,h=h+Math.imul(G,nt)|0,f=f+Math.imul(G,it)|0,f=f+Math.imul(V,nt)|0,m=m+Math.imul(V,it)|0,h=h+Math.imul(P,st)|0,f=f+Math.imul(P,at)|0,f=f+Math.imul(U,st)|0,m=m+Math.imul(U,at)|0,h=h+Math.imul(d,ot)|0,f=f+Math.imul(d,ct)|0,f=f+Math.imul(S,ot)|0,m=m+Math.imul(S,ct)|0;var Oo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Oo>>>26)|0,Oo&=67108863,h=Math.imul(qe,Ve),f=Math.imul(qe,Ke),f=f+Math.imul(Ge,Ve)|0,m=Math.imul(Ge,Ke),h=h+Math.imul(We,Je)|0,f=f+Math.imul(We,Qe)|0,f=f+Math.imul(je,Je)|0,m=m+Math.imul(je,Qe)|0,h=h+Math.imul(Ue,Ye)|0,f=f+Math.imul(Ue,Xe)|0,f=f+Math.imul(He,Ye)|0,m=m+Math.imul(He,Xe)|0,h=h+Math.imul(Le,Ze)|0,f=f+Math.imul(Le,et)|0,f=f+Math.imul(Fe,Ze)|0,m=m+Math.imul(Fe,et)|0,h=h+Math.imul(Ie,tt)|0,f=f+Math.imul(Ie,rt)|0,f=f+Math.imul(Ee,tt)|0,m=m+Math.imul(Ee,rt)|0,h=h+Math.imul(Y,nt)|0,f=f+Math.imul(Y,it)|0,f=f+Math.imul(ie,nt)|0,m=m+Math.imul(ie,it)|0,h=h+Math.imul(G,st)|0,f=f+Math.imul(G,at)|0,f=f+Math.imul(V,st)|0,m=m+Math.imul(V,at)|0,h=h+Math.imul(P,ot)|0,f=f+Math.imul(P,ct)|0,f=f+Math.imul(U,ot)|0,m=m+Math.imul(U,ct)|0,h=h+Math.imul(d,ft)|0,f=f+Math.imul(d,ut)|0,f=f+Math.imul(S,ft)|0,m=m+Math.imul(S,ut)|0;var Po=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Po>>>26)|0,Po&=67108863,h=Math.imul($e,Ve),f=Math.imul($e,Ke),f=f+Math.imul(ze,Ve)|0,m=Math.imul(ze,Ke),h=h+Math.imul(qe,Je)|0,f=f+Math.imul(qe,Qe)|0,f=f+Math.imul(Ge,Je)|0,m=m+Math.imul(Ge,Qe)|0,h=h+Math.imul(We,Ye)|0,f=f+Math.imul(We,Xe)|0,f=f+Math.imul(je,Ye)|0,m=m+Math.imul(je,Xe)|0,h=h+Math.imul(Ue,Ze)|0,f=f+Math.imul(Ue,et)|0,f=f+Math.imul(He,Ze)|0,m=m+Math.imul(He,et)|0,h=h+Math.imul(Le,tt)|0,f=f+Math.imul(Le,rt)|0,f=f+Math.imul(Fe,tt)|0,m=m+Math.imul(Fe,rt)|0,h=h+Math.imul(Ie,nt)|0,f=f+Math.imul(Ie,it)|0,f=f+Math.imul(Ee,nt)|0,m=m+Math.imul(Ee,it)|0,h=h+Math.imul(Y,st)|0,f=f+Math.imul(Y,at)|0,f=f+Math.imul(ie,st)|0,m=m+Math.imul(ie,at)|0,h=h+Math.imul(G,ot)|0,f=f+Math.imul(G,ct)|0,f=f+Math.imul(V,ot)|0,m=m+Math.imul(V,ct)|0,h=h+Math.imul(P,ft)|0,f=f+Math.imul(P,ut)|0,f=f+Math.imul(U,ft)|0,m=m+Math.imul(U,ut)|0,h=h+Math.imul(d,lt)|0,f=f+Math.imul(d,dt)|0,f=f+Math.imul(S,lt)|0,m=m+Math.imul(S,dt)|0;var Ro=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Ro>>>26)|0,Ro&=67108863,h=Math.imul($e,Je),f=Math.imul($e,Qe),f=f+Math.imul(ze,Je)|0,m=Math.imul(ze,Qe),h=h+Math.imul(qe,Ye)|0,f=f+Math.imul(qe,Xe)|0,f=f+Math.imul(Ge,Ye)|0,m=m+Math.imul(Ge,Xe)|0,h=h+Math.imul(We,Ze)|0,f=f+Math.imul(We,et)|0,f=f+Math.imul(je,Ze)|0,m=m+Math.imul(je,et)|0,h=h+Math.imul(Ue,tt)|0,f=f+Math.imul(Ue,rt)|0,f=f+Math.imul(He,tt)|0,m=m+Math.imul(He,rt)|0,h=h+Math.imul(Le,nt)|0,f=f+Math.imul(Le,it)|0,f=f+Math.imul(Fe,nt)|0,m=m+Math.imul(Fe,it)|0,h=h+Math.imul(Ie,st)|0,f=f+Math.imul(Ie,at)|0,f=f+Math.imul(Ee,st)|0,m=m+Math.imul(Ee,at)|0,h=h+Math.imul(Y,ot)|0,f=f+Math.imul(Y,ct)|0,f=f+Math.imul(ie,ot)|0,m=m+Math.imul(ie,ct)|0,h=h+Math.imul(G,ft)|0,f=f+Math.imul(G,ut)|0,f=f+Math.imul(V,ft)|0,m=m+Math.imul(V,ut)|0,h=h+Math.imul(P,lt)|0,f=f+Math.imul(P,dt)|0,f=f+Math.imul(U,lt)|0,m=m+Math.imul(U,dt)|0;var Bo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Bo>>>26)|0,Bo&=67108863,h=Math.imul($e,Ye),f=Math.imul($e,Xe),f=f+Math.imul(ze,Ye)|0,m=Math.imul(ze,Xe),h=h+Math.imul(qe,Ze)|0,f=f+Math.imul(qe,et)|0,f=f+Math.imul(Ge,Ze)|0,m=m+Math.imul(Ge,et)|0,h=h+Math.imul(We,tt)|0,f=f+Math.imul(We,rt)|0,f=f+Math.imul(je,tt)|0,m=m+Math.imul(je,rt)|0,h=h+Math.imul(Ue,nt)|0,f=f+Math.imul(Ue,it)|0,f=f+Math.imul(He,nt)|0,m=m+Math.imul(He,it)|0,h=h+Math.imul(Le,st)|0,f=f+Math.imul(Le,at)|0,f=f+Math.imul(Fe,st)|0,m=m+Math.imul(Fe,at)|0,h=h+Math.imul(Ie,ot)|0,f=f+Math.imul(Ie,ct)|0,f=f+Math.imul(Ee,ot)|0,m=m+Math.imul(Ee,ct)|0,h=h+Math.imul(Y,ft)|0,f=f+Math.imul(Y,ut)|0,f=f+Math.imul(ie,ft)|0,m=m+Math.imul(ie,ut)|0,h=h+Math.imul(G,lt)|0,f=f+Math.imul(G,dt)|0,f=f+Math.imul(V,lt)|0,m=m+Math.imul(V,dt)|0;var Do=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Do>>>26)|0,Do&=67108863,h=Math.imul($e,Ze),f=Math.imul($e,et),f=f+Math.imul(ze,Ze)|0,m=Math.imul(ze,et),h=h+Math.imul(qe,tt)|0,f=f+Math.imul(qe,rt)|0,f=f+Math.imul(Ge,tt)|0,m=m+Math.imul(Ge,rt)|0,h=h+Math.imul(We,nt)|0,f=f+Math.imul(We,it)|0,f=f+Math.imul(je,nt)|0,m=m+Math.imul(je,it)|0,h=h+Math.imul(Ue,st)|0,f=f+Math.imul(Ue,at)|0,f=f+Math.imul(He,st)|0,m=m+Math.imul(He,at)|0,h=h+Math.imul(Le,ot)|0,f=f+Math.imul(Le,ct)|0,f=f+Math.imul(Fe,ot)|0,m=m+Math.imul(Fe,ct)|0,h=h+Math.imul(Ie,ft)|0,f=f+Math.imul(Ie,ut)|0,f=f+Math.imul(Ee,ft)|0,m=m+Math.imul(Ee,ut)|0,h=h+Math.imul(Y,lt)|0,f=f+Math.imul(Y,dt)|0,f=f+Math.imul(ie,lt)|0,m=m+Math.imul(ie,dt)|0;var Lo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Lo>>>26)|0,Lo&=67108863,h=Math.imul($e,tt),f=Math.imul($e,rt),f=f+Math.imul(ze,tt)|0,m=Math.imul(ze,rt),h=h+Math.imul(qe,nt)|0,f=f+Math.imul(qe,it)|0,f=f+Math.imul(Ge,nt)|0,m=m+Math.imul(Ge,it)|0,h=h+Math.imul(We,st)|0,f=f+Math.imul(We,at)|0,f=f+Math.imul(je,st)|0,m=m+Math.imul(je,at)|0,h=h+Math.imul(Ue,ot)|0,f=f+Math.imul(Ue,ct)|0,f=f+Math.imul(He,ot)|0,m=m+Math.imul(He,ct)|0,h=h+Math.imul(Le,ft)|0,f=f+Math.imul(Le,ut)|0,f=f+Math.imul(Fe,ft)|0,m=m+Math.imul(Fe,ut)|0,h=h+Math.imul(Ie,lt)|0,f=f+Math.imul(Ie,dt)|0,f=f+Math.imul(Ee,lt)|0,m=m+Math.imul(Ee,dt)|0;var Fo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Fo>>>26)|0,Fo&=67108863,h=Math.imul($e,nt),f=Math.imul($e,it),f=f+Math.imul(ze,nt)|0,m=Math.imul(ze,it),h=h+Math.imul(qe,st)|0,f=f+Math.imul(qe,at)|0,f=f+Math.imul(Ge,st)|0,m=m+Math.imul(Ge,at)|0,h=h+Math.imul(We,ot)|0,f=f+Math.imul(We,ct)|0,f=f+Math.imul(je,ot)|0,m=m+Math.imul(je,ct)|0,h=h+Math.imul(Ue,ft)|0,f=f+Math.imul(Ue,ut)|0,f=f+Math.imul(He,ft)|0,m=m+Math.imul(He,ut)|0,h=h+Math.imul(Le,lt)|0,f=f+Math.imul(Le,dt)|0,f=f+Math.imul(Fe,lt)|0,m=m+Math.imul(Fe,dt)|0;var Uo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Uo>>>26)|0,Uo&=67108863,h=Math.imul($e,st),f=Math.imul($e,at),f=f+Math.imul(ze,st)|0,m=Math.imul(ze,at),h=h+Math.imul(qe,ot)|0,f=f+Math.imul(qe,ct)|0,f=f+Math.imul(Ge,ot)|0,m=m+Math.imul(Ge,ct)|0,h=h+Math.imul(We,ft)|0,f=f+Math.imul(We,ut)|0,f=f+Math.imul(je,ft)|0,m=m+Math.imul(je,ut)|0,h=h+Math.imul(Ue,lt)|0,f=f+Math.imul(Ue,dt)|0,f=f+Math.imul(He,lt)|0,m=m+Math.imul(He,dt)|0;var Ho=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Ho>>>26)|0,Ho&=67108863,h=Math.imul($e,ot),f=Math.imul($e,ct),f=f+Math.imul(ze,ot)|0,m=Math.imul(ze,ct),h=h+Math.imul(qe,ft)|0,f=f+Math.imul(qe,ut)|0,f=f+Math.imul(Ge,ft)|0,m=m+Math.imul(Ge,ut)|0,h=h+Math.imul(We,lt)|0,f=f+Math.imul(We,dt)|0,f=f+Math.imul(je,lt)|0,m=m+Math.imul(je,dt)|0;var Wo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Wo>>>26)|0,Wo&=67108863,h=Math.imul($e,ft),f=Math.imul($e,ut),f=f+Math.imul(ze,ft)|0,m=Math.imul(ze,ut),h=h+Math.imul(qe,lt)|0,f=f+Math.imul(qe,dt)|0,f=f+Math.imul(Ge,lt)|0,m=m+Math.imul(Ge,dt)|0;var jo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(jo>>>26)|0,jo&=67108863,h=Math.imul($e,lt),f=Math.imul($e,dt),f=f+Math.imul(ze,lt)|0,m=Math.imul(ze,dt);var qo=(v+h|0)+((f&8191)<<13)|0;return v=(m+(f>>>13)|0)+(qo>>>26)|0,qo&=67108863,w[0]=xn,w[1]=bn,w[2]=mn,w[3]=wn,w[4]=yn,w[5]=Mo,w[6]=No,w[7]=Oo,w[8]=Po,w[9]=Ro,w[10]=Bo,w[11]=Do,w[12]=Lo,w[13]=Fo,w[14]=Uo,w[15]=Ho,w[16]=Wo,w[17]=jo,w[18]=qo,v!==0&&(w[19]=v,y.length++),y};Math.imul||(F=O);function D(M,l,x){x.negative=l.negative^M.negative,x.length=M.length+l.length;for(var y=0,C=0,p=0;p>>26)|0,C+=w>>>26,w&=67108863}x.words[p]=v,y=w,w=C}return y!==0?x.words[p]=y:x.length--,x._strip()}function $(M,l,x){return D(M,l,x)}s.prototype.mulTo=function(l,x){var y,C=this.length+l.length;return this.length===10&&l.length===10?y=F(this,l,x):C<63?y=O(this,l,x):C<1024?y=D(this,l,x):y=$(this,l,x),y},s.prototype.mul=function(l){var x=new s(null);return x.words=new Array(this.length+l.length),this.mulTo(l,x)},s.prototype.mulf=function(l){var x=new s(null);return x.words=new Array(this.length+l.length),$(this,l,x)},s.prototype.imul=function(l){return this.clone().mulTo(l,this)},s.prototype.imuln=function(l){var x=l<0;x&&(l=-l),n(typeof l=="number"),n(l<67108864);for(var y=0,C=0;C>=26,y+=p/67108864|0,y+=w>>>26,this.words[C]=w&67108863}return y!==0&&(this.words[C]=y,this.length++),x?this.ineg():this},s.prototype.muln=function(l){return this.clone().imuln(l)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(l){var x=_(l);if(x.length===0)return new s(1);for(var y=this,C=0;C=0);var x=l%26,y=(l-x)/26,C=67108863>>>26-x<<26-x,p;if(x!==0){var w=0;for(p=0;p>>26-x}w&&(this.words[p]=w,this.length++)}if(y!==0){for(p=this.length-1;p>=0;p--)this.words[p+y]=this.words[p];for(p=0;p=0);var C;x?C=(x-x%26)/26:C=0;var p=l%26,w=Math.min((l-p)/26,this.length),v=67108863^67108863>>>p<w)for(this.length-=w,f=0;f=0&&(m!==0||f>=C);f--){var I=this.words[f]|0;this.words[f]=m<<26-p|I>>>p,m=I&v}return h&&m!==0&&(h.words[h.length++]=m),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},s.prototype.ishrn=function(l,x,y){return n(this.negative===0),this.iushrn(l,x,y)},s.prototype.shln=function(l){return this.clone().ishln(l)},s.prototype.ushln=function(l){return this.clone().iushln(l)},s.prototype.shrn=function(l){return this.clone().ishrn(l)},s.prototype.ushrn=function(l){return this.clone().iushrn(l)},s.prototype.testn=function(l){n(typeof l=="number"&&l>=0);var x=l%26,y=(l-x)/26,C=1<=0);var x=l%26,y=(l-x)/26;if(n(this.negative===0,"imaskn works only with positive numbers"),this.length<=y)return this;if(x!==0&&y++,this.length=Math.min(y,this.length),x!==0){var C=67108863^67108863>>>x<=67108864;x++)this.words[x]-=67108864,x===this.length-1?this.words[x+1]=1:this.words[x+1]++;return this.length=Math.max(this.length,x+1),this},s.prototype.isubn=function(l){if(n(typeof l=="number"),n(l<67108864),l<0)return this.iaddn(-l);if(this.negative!==0)return this.negative=0,this.iaddn(l),this.negative=1,this;if(this.words[0]-=l,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var x=0;x>26)-(h/67108864|0),this.words[p+y]=w&67108863}for(;p>26,this.words[p+y]=w&67108863;if(v===0)return this._strip();for(n(v===-1),v=0,p=0;p>26,this.words[p]=w&67108863;return this.negative=1,this._strip()},s.prototype._wordDiv=function(l,x){var y=this.length-l.length,C=this.clone(),p=l,w=p.words[p.length-1]|0,v=this._countBits(w);y=26-v,y!==0&&(p=p.ushln(y),C.iushln(y),w=p.words[p.length-1]|0);var h=C.length-p.length,f;if(x!=="mod"){f=new s(null),f.length=h+1,f.words=new Array(f.length);for(var m=0;m=0;d--){var S=(C.words[p.length+d]|0)*67108864+(C.words[p.length+d-1]|0);for(S=Math.min(S/w|0,67108863),C._ishlnsubmul(p,S,d);C.negative!==0;)S--,C.negative=0,C._ishlnsubmul(p,1,d),C.isZero()||(C.negative^=1);f&&(f.words[d]=S)}return f&&f._strip(),C._strip(),x!=="div"&&y!==0&&C.iushrn(y),{div:f||null,mod:C}},s.prototype.divmod=function(l,x,y){if(n(!l.isZero()),this.isZero())return{div:new s(0),mod:new s(0)};var C,p,w;return this.negative!==0&&l.negative===0?(w=this.neg().divmod(l,x),x!=="mod"&&(C=w.div.neg()),x!=="div"&&(p=w.mod.neg(),y&&p.negative!==0&&p.iadd(l)),{div:C,mod:p}):this.negative===0&&l.negative!==0?(w=this.divmod(l.neg(),x),x!=="mod"&&(C=w.div.neg()),{div:C,mod:w.mod}):this.negative&l.negative?(w=this.neg().divmod(l.neg(),x),x!=="div"&&(p=w.mod.neg(),y&&p.negative!==0&&p.isub(l)),{div:w.div,mod:p}):l.length>this.length||this.cmp(l)<0?{div:new s(0),mod:this}:l.length===1?x==="div"?{div:this.divn(l.words[0]),mod:null}:x==="mod"?{div:null,mod:new s(this.modrn(l.words[0]))}:{div:this.divn(l.words[0]),mod:new s(this.modrn(l.words[0]))}:this._wordDiv(l,x)},s.prototype.div=function(l){return this.divmod(l,"div",!1).div},s.prototype.mod=function(l){return this.divmod(l,"mod",!1).mod},s.prototype.umod=function(l){return this.divmod(l,"mod",!0).mod},s.prototype.divRound=function(l){var x=this.divmod(l);if(x.mod.isZero())return x.div;var y=x.div.negative!==0?x.mod.isub(l):x.mod,C=l.ushrn(1),p=l.andln(1),w=y.cmp(C);return w<0||p===1&&w===0?x.div:x.div.negative!==0?x.div.isubn(1):x.div.iaddn(1)},s.prototype.modrn=function(l){var x=l<0;x&&(l=-l),n(l<=67108863);for(var y=(1<<26)%l,C=0,p=this.length-1;p>=0;p--)C=(y*C+(this.words[p]|0))%l;return x?-C:C},s.prototype.modn=function(l){return this.modrn(l)},s.prototype.idivn=function(l){var x=l<0;x&&(l=-l),n(l<=67108863);for(var y=0,C=this.length-1;C>=0;C--){var p=(this.words[C]|0)+y*67108864;this.words[C]=p/l|0,y=p%l}return this._strip(),x?this.ineg():this},s.prototype.divn=function(l){return this.clone().idivn(l)},s.prototype.egcd=function(l){n(l.negative===0),n(!l.isZero());var x=this,y=l.clone();x.negative!==0?x=x.umod(l):x=x.clone();for(var C=new s(1),p=new s(0),w=new s(0),v=new s(1),h=0;x.isEven()&&y.isEven();)x.iushrn(1),y.iushrn(1),++h;for(var f=y.clone(),m=x.clone();!x.isZero();){for(var I=0,d=1;!(x.words[0]&d)&&I<26;++I,d<<=1);if(I>0)for(x.iushrn(I);I-- >0;)(C.isOdd()||p.isOdd())&&(C.iadd(f),p.isub(m)),C.iushrn(1),p.iushrn(1);for(var S=0,N=1;!(y.words[0]&N)&&S<26;++S,N<<=1);if(S>0)for(y.iushrn(S);S-- >0;)(w.isOdd()||v.isOdd())&&(w.iadd(f),v.isub(m)),w.iushrn(1),v.iushrn(1);x.cmp(y)>=0?(x.isub(y),C.isub(w),p.isub(v)):(y.isub(x),w.isub(C),v.isub(p))}return{a:w,b:v,gcd:y.iushln(h)}},s.prototype._invmp=function(l){n(l.negative===0),n(!l.isZero());var x=this,y=l.clone();x.negative!==0?x=x.umod(l):x=x.clone();for(var C=new s(1),p=new s(0),w=y.clone();x.cmpn(1)>0&&y.cmpn(1)>0;){for(var v=0,h=1;!(x.words[0]&h)&&v<26;++v,h<<=1);if(v>0)for(x.iushrn(v);v-- >0;)C.isOdd()&&C.iadd(w),C.iushrn(1);for(var f=0,m=1;!(y.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(y.iushrn(f);f-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);x.cmp(y)>=0?(x.isub(y),C.isub(p)):(y.isub(x),p.isub(C))}var I;return x.cmpn(1)===0?I=C:I=p,I.cmpn(0)<0&&I.iadd(l),I},s.prototype.gcd=function(l){if(this.isZero())return l.abs();if(l.isZero())return this.abs();var x=this.clone(),y=l.clone();x.negative=0,y.negative=0;for(var C=0;x.isEven()&&y.isEven();C++)x.iushrn(1),y.iushrn(1);do{for(;x.isEven();)x.iushrn(1);for(;y.isEven();)y.iushrn(1);var p=x.cmp(y);if(p<0){var w=x;x=y,y=w}else if(p===0||y.cmpn(1)===0)break;x.isub(y)}while(!0);return y.iushln(C)},s.prototype.invm=function(l){return this.egcd(l).a.umod(l)},s.prototype.isEven=function(){return(this.words[0]&1)===0},s.prototype.isOdd=function(){return(this.words[0]&1)===1},s.prototype.andln=function(l){return this.words[0]&l},s.prototype.bincn=function(l){n(typeof l=="number");var x=l%26,y=(l-x)/26,C=1<>>26,v&=67108863,this.words[w]=v}return p!==0&&(this.words[w]=p,this.length++),this},s.prototype.isZero=function(){return this.length===1&&this.words[0]===0},s.prototype.cmpn=function(l){var x=l<0;if(this.negative!==0&&!x)return-1;if(this.negative===0&&x)return 1;this._strip();var y;if(this.length>1)y=1;else{x&&(l=-l),n(l<=67108863,"Number is too big");var C=this.words[0]|0;y=C===l?0:Cl.length)return 1;if(this.length=0;y--){var C=this.words[y]|0,p=l.words[y]|0;if(C!==p){Cp&&(x=1);break}}return x},s.prototype.gtn=function(l){return this.cmpn(l)===1},s.prototype.gt=function(l){return this.cmp(l)===1},s.prototype.gten=function(l){return this.cmpn(l)>=0},s.prototype.gte=function(l){return this.cmp(l)>=0},s.prototype.ltn=function(l){return this.cmpn(l)===-1},s.prototype.lt=function(l){return this.cmp(l)===-1},s.prototype.lten=function(l){return this.cmpn(l)<=0},s.prototype.lte=function(l){return this.cmp(l)<=0},s.prototype.eqn=function(l){return this.cmpn(l)===0},s.prototype.eq=function(l){return this.cmp(l)===0},s.red=function(l){return new re(l)},s.prototype.toRed=function(l){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),l.convertTo(this)._forceRed(l)},s.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},s.prototype._forceRed=function(l){return this.red=l,this},s.prototype.forceRed=function(l){return n(!this.red,"Already a number in reduction context"),this._forceRed(l)},s.prototype.redAdd=function(l){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,l)},s.prototype.redIAdd=function(l){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,l)},s.prototype.redSub=function(l){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,l)},s.prototype.redISub=function(l){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,l)},s.prototype.redShl=function(l){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,l)},s.prototype.redMul=function(l){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.mul(this,l)},s.prototype.redIMul=function(l){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.imul(this,l)},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(l){return n(this.red&&!l.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,l)};var L={k256:null,p224:null,p192:null,p25519:null};function z(M,l){this.name=M,this.p=new s(l,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}z.prototype._tmp=function(){var l=new s(null);return l.words=new Array(Math.ceil(this.n/13)),l},z.prototype.ireduce=function(l){var x=l,y;do this.split(x,this.tmp),x=this.imulK(x),x=x.iadd(this.tmp),y=x.bitLength();while(y>this.n);var C=y0?x.isub(this.p):x.strip!==void 0?x.strip():x._strip(),x},z.prototype.split=function(l,x){l.iushrn(this.n,0,x)},z.prototype.imulK=function(l){return l.imul(this.k)};function Z(){z.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(Z,z),Z.prototype.split=function(l,x){for(var y=4194303,C=Math.min(l.length,9),p=0;p>>22,w=v}w>>>=22,l.words[p-10]=w,w===0&&l.length>10?l.length-=10:l.length-=9},Z.prototype.imulK=function(l){l.words[l.length]=0,l.words[l.length+1]=0,l.length+=2;for(var x=0,y=0;y>>=26,l.words[y]=p,x=C}return x!==0&&(l.words[l.length++]=x),l},s._prime=function(l){if(L[l])return L[l];var x;if(l==="k256")x=new Z;else if(l==="p224")x=new J;else if(l==="p192")x=new Q;else if(l==="p25519")x=new te;else throw new Error("Unknown prime "+l);return L[l]=x,x};function re(M){if(typeof M=="string"){var l=s._prime(M);this.m=l.p,this.prime=l}else n(M.gtn(1),"modulus must be greater than 1"),this.m=M,this.prime=null}re.prototype._verify1=function(l){n(l.negative===0,"red works only with positives"),n(l.red,"red works only with red numbers")},re.prototype._verify2=function(l,x){n((l.negative|x.negative)===0,"red works only with positives"),n(l.red&&l.red===x.red,"red works only with red numbers")},re.prototype.imod=function(l){return this.prime?this.prime.ireduce(l)._forceRed(this):(g(l,l.umod(this.m)._forceRed(this)),l)},re.prototype.neg=function(l){return l.isZero()?l.clone():this.m.sub(l)._forceRed(this)},re.prototype.add=function(l,x){this._verify2(l,x);var y=l.add(x);return y.cmp(this.m)>=0&&y.isub(this.m),y._forceRed(this)},re.prototype.iadd=function(l,x){this._verify2(l,x);var y=l.iadd(x);return y.cmp(this.m)>=0&&y.isub(this.m),y},re.prototype.sub=function(l,x){this._verify2(l,x);var y=l.sub(x);return y.cmpn(0)<0&&y.iadd(this.m),y._forceRed(this)},re.prototype.isub=function(l,x){this._verify2(l,x);var y=l.isub(x);return y.cmpn(0)<0&&y.iadd(this.m),y},re.prototype.shl=function(l,x){return this._verify1(l),this.imod(l.ushln(x))},re.prototype.imul=function(l,x){return this._verify2(l,x),this.imod(l.imul(x))},re.prototype.mul=function(l,x){return this._verify2(l,x),this.imod(l.mul(x))},re.prototype.isqr=function(l){return this.imul(l,l.clone())},re.prototype.sqr=function(l){return this.mul(l,l)},re.prototype.sqrt=function(l){if(l.isZero())return l.clone();var x=this.m.andln(3);if(n(x%2===1),x===3){var y=this.m.add(new s(1)).iushrn(2);return this.pow(l,y)}for(var C=this.m.subn(1),p=0;!C.isZero()&&C.andln(1)===0;)p++,C.iushrn(1);n(!C.isZero());var w=new s(1).toRed(this),v=w.redNeg(),h=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new s(2*f*f).toRed(this);this.pow(f,h).cmp(v)!==0;)f.redIAdd(v);for(var m=this.pow(f,C),I=this.pow(l,C.addn(1).iushrn(1)),d=this.pow(l,C),S=p;d.cmp(w)!==0;){for(var N=d,P=0;N.cmp(w)!==0;P++)N=N.redSqr();n(P=0;p--){for(var m=x.words[p],I=f-1;I>=0;I--){var d=m>>I&1;if(w!==C[0]&&(w=this.sqr(w)),d===0&&v===0){h=0;continue}v<<=1,v|=d,h++,!(h!==y&&(p!==0||I!==0))&&(w=this.mul(w,C[v]),h=0,v=0)}f=26}return w},re.prototype.convertTo=function(l){var x=l.umod(this.m);return x===l?x.clone():x},re.prototype.convertFrom=function(l){var x=l.clone();return x.red=null,x},s.mont=function(l){return new be(l)};function be(M){re.call(this,M),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(be,re),be.prototype.convertTo=function(l){return this.imod(l.ushln(this.shift))},be.prototype.convertFrom=function(l){var x=this.imod(l.mul(this.rinv));return x.red=null,x},be.prototype.imul=function(l,x){if(l.isZero()||x.isZero())return l.words[0]=0,l.length=1,l;var y=l.imul(x),C=y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=y.isub(C).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},be.prototype.mul=function(l,x){if(l.isZero()||x.isZero())return new s(0)._forceRed(this);var y=l.mul(x),C=y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=y.isub(C).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},be.prototype.invm=function(l){var x=this.imod(l._invmp(this.m).mul(this.r2));return x._forceRed(this)}})(r,Du)})(nf);var $p=nf.exports;const oe=Xi($p),zp="logger/5.7.0";let g0=!1,p0=!1;const wa={debug:1,default:2,info:2,warning:3,error:4,off:5};let x0=wa.default,Go=null;function Vp(){try{const r=[];if(["NFD","NFC","NFKD","NFKC"].forEach(e=>{try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{r.push(e)}}),r.length)throw new Error("missing "+r.join(", "));if("é".normalize("NFD")!=="é")throw new Error("broken implementation")}catch(r){return r.message}return null}const b0=Vp();var gc;(function(r){r.DEBUG="DEBUG",r.INFO="INFO",r.WARNING="WARNING",r.ERROR="ERROR",r.OFF="OFF"})(gc||(gc={}));var Ar;(function(r){r.UNKNOWN_ERROR="UNKNOWN_ERROR",r.NOT_IMPLEMENTED="NOT_IMPLEMENTED",r.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",r.NETWORK_ERROR="NETWORK_ERROR",r.SERVER_ERROR="SERVER_ERROR",r.TIMEOUT="TIMEOUT",r.BUFFER_OVERRUN="BUFFER_OVERRUN",r.NUMERIC_FAULT="NUMERIC_FAULT",r.MISSING_NEW="MISSING_NEW",r.INVALID_ARGUMENT="INVALID_ARGUMENT",r.MISSING_ARGUMENT="MISSING_ARGUMENT",r.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",r.CALL_EXCEPTION="CALL_EXCEPTION",r.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",r.NONCE_EXPIRED="NONCE_EXPIRED",r.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",r.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",r.TRANSACTION_REPLACED="TRANSACTION_REPLACED",r.ACTION_REJECTED="ACTION_REJECTED"})(Ar||(Ar={}));const m0="0123456789abcdef";let B=class It{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,t){const n=e.toLowerCase();wa[n]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(x0>wa[n])&&console.log.apply(console,t)}debug(...e){this._log(It.levels.DEBUG,e)}info(...e){this._log(It.levels.INFO,e)}warn(...e){this._log(It.levels.WARNING,e)}makeError(e,t,n){if(p0)return this.makeError("censored error",t,{});t||(t=It.errors.UNKNOWN_ERROR),n||(n={});const i=[];Object.keys(n).forEach(c=>{const u=n[c];try{if(u instanceof Uint8Array){let g="";for(let b=0;b>4],g+=m0[u[b]&15];i.push(c+"=Uint8Array(0x"+g+")")}else i.push(c+"="+JSON.stringify(u))}catch{i.push(c+"="+JSON.stringify(n[c].toString()))}}),i.push(`code=${t}`),i.push(`version=${this.version}`);const s=e;let a="";switch(t){case Ar.NUMERIC_FAULT:{a="NUMERIC_FAULT";const c=e;switch(c){case"overflow":case"underflow":case"division-by-zero":a+="-"+c;break;case"negative-power":case"negative-width":a+="-unsupported";break;case"unbound-bitwise-result":a+="-unbound-result";break}break}case Ar.CALL_EXCEPTION:case Ar.INSUFFICIENT_FUNDS:case Ar.MISSING_NEW:case Ar.NONCE_EXPIRED:case Ar.REPLACEMENT_UNDERPRICED:case Ar.TRANSACTION_REPLACED:case Ar.UNPREDICTABLE_GAS_LIMIT:a=t;break}a&&(e+=" [ See: https://links.ethers.org/v5-errors-"+a+" ]"),i.length&&(e+=" ("+i.join(", ")+")");const o=new Error(e);return o.reason=s,o.code=t,Object.keys(n).forEach(function(c){o[c]=n[c]}),o}throwError(e,t,n){throw this.makeError(e,t,n)}throwArgumentError(e,t,n){return this.throwError(e,It.errors.INVALID_ARGUMENT,{argument:t,value:n})}assert(e,t,n,i){e||this.throwError(t,n,i)}assertArgument(e,t,n,i){e||this.throwArgumentError(t,n,i)}checkNormalize(e){b0&&this.throwError("platform missing String.prototype.normalize",It.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:b0})}checkSafeUint53(e,t){typeof e=="number"&&(t==null&&(t="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(t,It.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(t,It.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,t,n){n?n=": "+n:n="",et&&this.throwError("too many arguments"+n,It.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:t})}checkNew(e,t){(e===Object||e==null)&&this.throwError("missing new",It.errors.MISSING_NEW,{name:t.name})}checkAbstract(e,t){e===t?this.throwError("cannot instantiate abstract class "+JSON.stringify(t.name)+" directly; use a sub-class",It.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",It.errors.MISSING_NEW,{name:t.name})}static globalLogger(){return Go||(Go=new It(zp)),Go}static setCensorship(e,t){if(!e&&t&&this.globalLogger().throwError("cannot permanently disable censorship",It.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),g0){if(!e)return;this.globalLogger().throwError("error censorship permanent",It.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}p0=!!e,g0=!!t}static setLogLevel(e){const t=wa[e.toLowerCase()];if(t==null){It.globalLogger().warn("invalid log level - "+e);return}x0=t}static from(e){return new It(e)}};B.errors=Ar;B.levels=gc;const Kp="bytes/5.7.0",wt=new B(Kp);function Uu(r){return!!r.toHexString}function Di(r){return r.slice||(r.slice=function(){const e=Array.prototype.slice.call(arguments);return Di(new Uint8Array(Array.prototype.slice.apply(r,e)))}),r}function an(r){return ye(r)&&!(r.length%2)||un(r)}function w0(r){return typeof r=="number"&&r==r&&r%1===0}function un(r){if(r==null)return!1;if(r.constructor===Uint8Array)return!0;if(typeof r=="string"||!w0(r.length)||r.length<0)return!1;for(let e=0;e=256)return!1}return!0}function W(r,e){if(e||(e={}),typeof r=="number"){wt.checkSafeUint53(r,"invalid arrayify value");const t=[];for(;r;)t.unshift(r&255),r=parseInt(String(r/256));return t.length===0&&t.push(0),Di(new Uint8Array(t))}if(e.allowMissingPrefix&&typeof r=="string"&&r.substring(0,2)!=="0x"&&(r="0x"+r),Uu(r)&&(r=r.toHexString()),ye(r)){let t=r.substring(2);t.length%2&&(e.hexPad==="left"?t="0"+t:e.hexPad==="right"?t+="0":wt.throwArgumentError("hex data is odd-length","value",r));const n=[];for(let i=0;iW(i)),t=e.reduce((i,s)=>i+s.length,0),n=new Uint8Array(t);return e.reduce((i,s)=>(n.set(s,i),i+s.length),0),Di(n)}function Hr(r){let e=W(r);if(e.length===0)return e;let t=0;for(;te&&wt.throwArgumentError("value out of range","value",arguments[0]);const t=new Uint8Array(e);return t.set(r,e-r.length),Di(t)}function ye(r,e){return!(typeof r!="string"||!r.match(/^0x[0-9A-Fa-f]*$/)||e&&r.length!==2+2*e)}const $o="0123456789abcdef";function H(r,e){if(e||(e={}),typeof r=="number"){wt.checkSafeUint53(r,"invalid hexlify value");let t="";for(;r;)t=$o[r&15]+t,r=Math.floor(r/16);return t.length?(t.length%2&&(t="0"+t),"0x"+t):"0x00"}if(typeof r=="bigint")return r=r.toString(16),r.length%2?"0x0"+r:"0x"+r;if(e.allowMissingPrefix&&typeof r=="string"&&r.substring(0,2)!=="0x"&&(r="0x"+r),Uu(r))return r.toHexString();if(ye(r))return r.length%2&&(e.hexPad==="left"?r="0x0"+r.substring(2):e.hexPad==="right"?r+="0":wt.throwArgumentError("hex data is odd-length","value",r)),r.toLowerCase();if(un(r)){let t="0x";for(let n=0;n>4]+$o[i&15]}return t}return wt.throwArgumentError("invalid hexlify value","value",r)}function Gr(r){if(typeof r!="string")r=H(r);else if(!ye(r)||r.length%2)return null;return(r.length-2)/2}function yt(r,e,t){return typeof r!="string"?r=H(r):(!ye(r)||r.length%2)&&wt.throwArgumentError("invalid hexData","value",r),e=2+2*e,t!=null?"0x"+r.substring(e,2+2*t):"0x"+r.substring(e)}function Qt(r){let e="0x";return r.forEach(t=>{e+=H(t).substring(2)}),e}function kr(r){const e=Hu(H(r,{hexPad:"left"}));return e==="0x"?"0x0":e}function Hu(r){typeof r!="string"&&(r=H(r)),ye(r)||wt.throwArgumentError("invalid hex string","value",r),r=r.substring(2);let e=0;for(;e2*e+2&&wt.throwArgumentError("value out of range","value",arguments[1]);r.length<2*e+2;)r="0x0"+r.substring(2);return r}function mi(r){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(an(r)){let t=W(r);t.length===64?(e.v=27+(t[32]>>7),t[32]&=127,e.r=H(t.slice(0,32)),e.s=H(t.slice(32,64))):t.length===65?(e.r=H(t.slice(0,32)),e.s=H(t.slice(32,64)),e.v=t[64]):wt.throwArgumentError("invalid signature string","signature",r),e.v<27&&(e.v===0||e.v===1?e.v+=27:wt.throwArgumentError("signature invalid v byte","signature",r)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(t[32]|=128),e._vs=H(t.slice(32,64))}else{if(e.r=r.r,e.s=r.s,e.v=r.v,e.recoveryParam=r.recoveryParam,e._vs=r._vs,e._vs!=null){const i=ws(W(e._vs),32);e._vs=H(i);const s=i[0]>=128?1:0;e.recoveryParam==null?e.recoveryParam=s:e.recoveryParam!==s&&wt.throwArgumentError("signature recoveryParam mismatch _vs","signature",r),i[0]&=127;const a=H(i);e.s==null?e.s=a:e.s!==a&&wt.throwArgumentError("signature v mismatch _vs","signature",r)}if(e.recoveryParam==null)e.v==null?wt.throwArgumentError("signature missing v and recoveryParam","signature",r):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&&wt.throwArgumentError("signature recoveryParam mismatch v","signature",r)}e.r==null||!ye(e.r)?wt.throwArgumentError("signature missing or invalid r","signature",r):e.r=Re(e.r,32),e.s==null||!ye(e.s)?wt.throwArgumentError("signature missing or invalid s","signature",r):e.s=Re(e.s,32);const t=W(e.s);t[0]>=128&&wt.throwArgumentError("signature s out of range","signature",r),e.recoveryParam&&(t[0]|=128);const n=H(t);e._vs&&(ye(e._vs)||wt.throwArgumentError("signature invalid _vs","signature",r),e._vs=Re(e._vs,32)),e._vs==null?e._vs=n:e._vs!==n&&wt.throwArgumentError("signature _vs mismatch v and s","signature",r)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function pc(r){return r=mi(r),H(Pe([r.r,r.s,r.recoveryParam?"0x1c":"0x1b"]))}const Wu="bignumber/5.7.0";var Bs=oe.BN;const Yr=new B(Wu),zo={},y0=9007199254740991;function Jp(r){return r!=null&&(R.isBigNumber(r)||typeof r=="number"&&r%1===0||typeof r=="string"&&!!r.match(/^-?[0-9]+$/)||ye(r)||typeof r=="bigint"||un(r))}let v0=!1;class R{constructor(e,t){e!==zo&&Yr.throwError("cannot call constructor directly; use BigNumber.from",B.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=t,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return er(me(this).fromTwos(e))}toTwos(e){return er(me(this).toTwos(e))}abs(){return this._hex[0]==="-"?R.from(this._hex.substring(1)):this}add(e){return er(me(this).add(me(e)))}sub(e){return er(me(this).sub(me(e)))}div(e){return R.from(e).isZero()&&fr("division-by-zero","div"),er(me(this).div(me(e)))}mul(e){return er(me(this).mul(me(e)))}mod(e){const t=me(e);return t.isNeg()&&fr("division-by-zero","mod"),er(me(this).umod(t))}pow(e){const t=me(e);return t.isNeg()&&fr("negative-power","pow"),er(me(this).pow(t))}and(e){const t=me(e);return(this.isNegative()||t.isNeg())&&fr("unbound-bitwise-result","and"),er(me(this).and(t))}or(e){const t=me(e);return(this.isNegative()||t.isNeg())&&fr("unbound-bitwise-result","or"),er(me(this).or(t))}xor(e){const t=me(e);return(this.isNegative()||t.isNeg())&&fr("unbound-bitwise-result","xor"),er(me(this).xor(t))}mask(e){return(this.isNegative()||e<0)&&fr("negative-width","mask"),er(me(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&fr("negative-width","shl"),er(me(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&fr("negative-width","shr"),er(me(this).shrn(e))}eq(e){return me(this).eq(me(e))}lt(e){return me(this).lt(me(e))}lte(e){return me(this).lte(me(e))}gt(e){return me(this).gt(me(e))}gte(e){return me(this).gte(me(e))}isNegative(){return this._hex[0]==="-"}isZero(){return me(this).isZero()}toNumber(){try{return me(this).toNumber()}catch{fr("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return Yr.throwError("this platform does not support BigInt",B.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?v0||(v0=!0,Yr.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Yr.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",B.errors.UNEXPECTED_ARGUMENT,{}):Yr.throwError("BigNumber.toString does not accept parameters",B.errors.UNEXPECTED_ARGUMENT,{})),me(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof R)return e;if(typeof e=="string")return e.match(/^-?0x[0-9a-f]+$/i)?new R(zo,Ds(e)):e.match(/^-?[0-9]+$/)?new R(zo,Ds(new Bs(e))):Yr.throwArgumentError("invalid BigNumber string","value",e);if(typeof e=="number")return e%1&&fr("underflow","BigNumber.from",e),(e>=y0||e<=-y0)&&fr("overflow","BigNumber.from",e),R.from(String(e));const t=e;if(typeof t=="bigint")return R.from(t.toString());if(un(t))return R.from(H(t));if(t)if(t.toHexString){const n=t.toHexString();if(typeof n=="string")return R.from(n)}else{let n=t._hex;if(n==null&&t.type==="BigNumber"&&(n=t.hex),typeof n=="string"&&(ye(n)||n[0]==="-"&&ye(n.substring(1))))return R.from(n)}return Yr.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!!(e&&e._isBigNumber)}}function Ds(r){if(typeof r!="string")return Ds(r.toString(16));if(r[0]==="-")return r=r.substring(1),r[0]==="-"&&Yr.throwArgumentError("invalid hex","value",r),r=Ds(r),r==="0x00"?r:"-"+r;if(r.substring(0,2)!=="0x"&&(r="0x"+r),r==="0x")return"0x00";for(r.length%2&&(r="0x0"+r.substring(2));r.length>4&&r.substring(0,4)==="0x00";)r="0x"+r.substring(4);return r}function er(r){return R.from(Ds(r))}function me(r){const e=R.from(r).toHexString();return e[0]==="-"?new Bs("-"+e.substring(3),16):new Bs(e.substring(2),16)}function fr(r,e,t){const n={fault:r,operation:e};return t!=null&&(n.value=t),Yr.throwError(r,B.errors.NUMERIC_FAULT,n)}function Qp(r){return new Bs(r,36).toString(16)}function Yp(r){return new Bs(r,16).toString(36)}const Yt=new B(Wu),ys={},ju=R.from(0),qu=R.from(-1);function Gu(r,e,t,n){const i={fault:e,operation:t};return n!==void 0&&(i.value=n),Yt.throwError(r,B.errors.NUMERIC_FAULT,i)}let vs="0";for(;vs.length<256;)vs+=vs;function sf(r){if(typeof r!="number")try{r=R.from(r).toNumber()}catch{}return typeof r=="number"&&r>=0&&r<=256&&!(r%1)?"1"+vs.substring(0,r):Yt.throwArgumentError("invalid decimal size","decimals",r)}function ya(r,e){e==null&&(e=0);const t=sf(e);r=R.from(r);const n=r.lt(ju);n&&(r=r.mul(qu));let i=r.mod(t).toString();for(;i.length2&&Yt.throwArgumentError("too many decimal points","value",r);let s=i[0],a=i[1];for(s||(s="0"),a||(a="0");a[a.length-1]==="0";)a=a.substring(0,a.length-1);for(a.length>t.length-1&&Gu("fractional component exceeds decimals","underflow","parseFixed"),a===""&&(a="0");a.lengthe[a]==null?c:(typeof e[a]!==o&&Yt.throwArgumentError("invalid fixed format ("+a+" not "+o+")","format."+a,e[a]),e[a]);t=s("signed","boolean",t),n=s("width","number",n),i=s("decimals","number",i)}return n%8&&Yt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",n),i>80&&Yt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",i),new Li(ys,t,n,i)}}class Dt{constructor(e,t,n,i){e!==ys&&Yt.throwError("cannot use FixedNumber constructor; use FixedNumber.from",B.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=i,this._hex=t,this._value=n,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(e){this.format.name!==e.format.name&&Yt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",e)}addUnsafe(e){this._checkFormat(e);const t=Or(this._value,this.format.decimals),n=Or(e._value,e.format.decimals);return Dt.fromValue(t.add(n),this.format.decimals,this.format)}subUnsafe(e){this._checkFormat(e);const t=Or(this._value,this.format.decimals),n=Or(e._value,e.format.decimals);return Dt.fromValue(t.sub(n),this.format.decimals,this.format)}mulUnsafe(e){this._checkFormat(e);const t=Or(this._value,this.format.decimals),n=Or(e._value,e.format.decimals);return Dt.fromValue(t.mul(n).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(e){this._checkFormat(e);const t=Or(this._value,this.format.decimals),n=Or(e._value,e.format.decimals);return Dt.fromValue(t.mul(this.format._multiplier).div(n),this.format.decimals,this.format)}floor(){const e=this.toString().split(".");e.length===1&&e.push("0");let t=Dt.from(e[0],this.format);const n=!e[1].match(/^(0*)$/);return this.isNegative()&&n&&(t=t.subUnsafe(E0.toFormat(t.format))),t}ceiling(){const e=this.toString().split(".");e.length===1&&e.push("0");let t=Dt.from(e[0],this.format);const n=!e[1].match(/^(0*)$/);return!this.isNegative()&&n&&(t=t.addUnsafe(E0.toFormat(t.format))),t}round(e){e==null&&(e=0);const t=this.toString().split(".");if(t.length===1&&t.push("0"),(e<0||e>80||e%1)&&Yt.throwArgumentError("invalid decimal count","decimals",e),t[1].length<=e)return this;const n=Dt.from("1"+vs.substring(0,e),this.format),i=Xp.toFormat(this.format);return this.mulUnsafe(n).addUnsafe(i).floor().divUnsafe(n)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(e){if(e==null)return this._hex;e%8&&Yt.throwArgumentError("invalid byte width","width",e);const t=R.from(this._hex).fromTwos(this.format.width).toTwos(e).toHexString();return Re(t,e/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(e){return Dt.fromString(this._value,e)}static fromValue(e,t,n){return n==null&&t!=null&&!Jp(t)&&(n=t,t=null),t==null&&(t=0),n==null&&(n="fixed"),Dt.fromString(ya(e,t),Li.from(n))}static fromString(e,t){t==null&&(t="fixed");const n=Li.from(t),i=Or(e,n.decimals);!n.signed&&i.lt(ju)&&Gu("unsigned value cannot be negative","overflow","value",e);let s=null;n.signed?s=i.toTwos(n.width).toHexString():(s=i.toHexString(),s=Re(s,n.width/8));const a=ya(i,n.decimals);return new Dt(ys,s,a,n)}static fromBytes(e,t){t==null&&(t="fixed");const n=Li.from(t);if(W(e).length>n.width/8)throw new Error("overflow");let i=R.from(e);n.signed&&(i=i.fromTwos(n.width));const s=i.toTwos((n.signed?0:1)+n.width).toHexString(),a=ya(i,n.decimals);return new Dt(ys,s,a,n)}static from(e,t){if(typeof e=="string")return Dt.fromString(e,t);if(un(e))return Dt.fromBytes(e,t);try{return Dt.fromValue(e,0,t)}catch(n){if(n.code!==B.errors.INVALID_ARGUMENT)throw n}return Yt.throwArgumentError("invalid FixedNumber value","value",e)}static isFixedNumber(e){return!!(e&&e._isFixedNumber)}}const E0=Dt.from(1),Xp=Dt.from("0.5"),Zp="properties/5.7.0";var e1=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(g){try{u(n.next(g))}catch(b){a(b)}}function c(g){try{u(n.throw(g))}catch(b){a(b)}}function u(g){g.done?s(g.value):i(g.value).then(o,c)}u((n=n.apply(r,e||[])).next())})};const Ba=new B(Zp);function q(r,e,t){Object.defineProperty(r,e,{enumerable:!0,value:t,writable:!1})}function Cr(r,e){for(let t=0;t<32;t++){if(r[e])return r[e];if(!r.prototype||typeof r.prototype!="object")break;r=Object.getPrototypeOf(r.prototype).constructor}return null}function De(r){return e1(this,void 0,void 0,function*(){const e=Object.keys(r).map(n=>{const i=r[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 af(r,e){(!r||typeof r!="object")&&Ba.throwArgumentError("invalid object","object",r),Object.keys(r).forEach(t=>{e[t]||Ba.throwArgumentError("invalid object key - "+t,"transaction:"+t,r)})}function Ct(r){const e={};for(const t in r)e[t]=r[t];return e}const t1={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function $u(r){if(r==null||t1[typeof r])return!0;if(Array.isArray(r)||typeof r=="object"){if(!Object.isFrozen(r))return!1;const e=Object.keys(r);for(let t=0;t$r(e)));if(typeof r=="object"){const e={};for(const t in r){const n=r[t];n!==void 0&&q(e,t,$r(n))}return e}return Ba.throwArgumentError(`Cannot deepCopy ${typeof r}`,"object",r)}function $r(r){return r1(r)}class wi{constructor(e){for(const t in e)this[t]=$r(e[t])}}const Js="abi/5.7.0",Ae=new B(Js),li={};let A0={calldata:!0,memory:!0,storage:!0},n1={calldata:!0,memory:!0};function fa(r,e){if(r==="bytes"||r==="string"){if(A0[e])return!0}else if(r==="address"){if(e==="payable")return!0}else if((r.indexOf("[")>=0||r==="tuple")&&n1[e])return!0;return(A0[e]||e==="payable")&&Ae.throwArgumentError("invalid modifier","name",e),!1}function i1(r,e){let t=r;function n(o){Ae.throwArgumentError(`unexpected character at position ${o}`,"param",r)}r=r.replace(/\s/g," ");function i(o){let c={type:"",name:"",parent:o,state:{allowType:!0}};return e&&(c.indexed=!1),c}let s={type:"",name:"",state:{allowType:!0}},a=s;for(let o=0;oJSON.parse(i.format(e)))),JSON.stringify(n)}let t="";return this.baseType==="array"?(t+=this.arrayChildren.format(e),t+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):this.baseType==="tuple"?(e!==Se.sighash&&(t+=this.type),t+="("+this.components.map(n=>n.format(e)).join(e===Se.full?", ":",")+")"):t+=this.type,e!==Se.sighash&&(this.indexed===!0&&(t+=" indexed"),e===Se.full&&this.name&&(t+=" "+this.name)),t}static from(e,t){return typeof e=="string"?Tt.fromString(e,t):Tt.fromObject(e)}static fromObject(e){return Tt.isParamType(e)?e:new Tt(li,{name:e.name||null,type:Ti(e.type),indexed:e.indexed==null?null:!!e.indexed,components:e.components?e.components.map(Tt.fromObject):null})}static fromString(e,t){function n(i){return Tt.fromObject({name:i.name,type:i.type,indexed:i.indexed,components:i.components})}return n(i1(e,!!t))}static isParamType(e){return!!(e!=null&&e._isParamType)}}function Ls(r,e){return o1(r).map(t=>Tt.fromString(t,e))}class Dr{constructor(e,t){e!==li&&Ae.throwError("use a static from method",B.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),va(this,t),this._isFragment=!0,Object.freeze(this)}static from(e){return Dr.isFragment(e)?e:typeof e=="string"?Dr.fromString(e):Dr.fromObject(e)}static fromObject(e){if(Dr.isFragment(e))return e;switch(e.type){case"function":return Sr.fromObject(e);case"event":return Br.fromObject(e);case"constructor":return _r.fromObject(e);case"error":return tn.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"?Br.fromString(e.substring(5).trim()):e.split(" ")[0]==="function"?Sr.fromString(e.substring(8).trim()):e.split("(")[0].trim()==="constructor"?_r.fromString(e.trim()):e.split(" ")[0]==="error"?tn.fromString(e.substring(5).trim()):Ae.throwArgumentError("unsupported fragment","value",e)}static isFragment(e){return!!(e&&e._isFragment)}}class Br extends Dr{format(e){if(e||(e=Se.sighash),Se[e]||Ae.throwArgumentError("invalid format type","format",e),e===Se.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});let t="";return e!==Se.sighash&&(t+="event "),t+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===Se.full?", ":",")+") ",e!==Se.sighash&&this.anonymous&&(t+="anonymous "),t.trim()}static from(e){return typeof e=="string"?Br.fromString(e):Br.fromObject(e)}static fromObject(e){if(Br.isEventFragment(e))return e;e.type!=="event"&&Ae.throwArgumentError("invalid event object","value",e);const t={name:Fs(e.name),anonymous:e.anonymous,inputs:e.inputs?e.inputs.map(Tt.fromObject):[],type:"event"};return new Br(li,t)}static fromString(e){let t=e.match(Us);t||Ae.throwArgumentError("invalid event string","value",e);let n=!1;return t[3].split(" ").forEach(i=>{switch(i.trim()){case"anonymous":n=!0;break;case"":break;default:Ae.warn("unknown modifier: "+i)}}),Br.fromObject({name:t[1].trim(),anonymous:n,inputs:Ls(t[2],!0),type:"event"})}static isEventFragment(e){return e&&e._isFragment&&e.type==="event"}}function zu(r,e){e.gas=null;let t=r.split("@");return t.length!==1?(t.length>2&&Ae.throwArgumentError("invalid human-readable ABI signature","value",r),t[1].match(/^[0-9]+$/)||Ae.throwArgumentError("invalid human-readable ABI signature gas","value",r),e.gas=R.from(t[1]),t[0]):r}function Vu(r,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",r.split(" ").forEach(t=>{switch(t.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: "+t)}})}function Ku(r){let e={constant:!1,payable:!0,stateMutability:"payable"};return r.stateMutability!=null?(e.stateMutability=r.stateMutability,e.constant=e.stateMutability==="view"||e.stateMutability==="pure",r.constant!=null&&!!r.constant!==e.constant&&Ae.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",r),e.payable=e.stateMutability==="payable",r.payable!=null&&!!r.payable!==e.payable&&Ae.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",r)):r.payable!=null?(e.payable=!!r.payable,r.constant==null&&!e.payable&&r.type!=="constructor"&&Ae.throwArgumentError("unable to determine stateMutability","value",r),e.constant=!!r.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&Ae.throwArgumentError("cannot have constant payable function","value",r)):r.constant!=null?(e.constant=!!r.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):r.type!=="constructor"&&Ae.throwArgumentError("unable to determine stateMutability","value",r),e}class _r extends Dr{format(e){if(e||(e=Se.sighash),Se[e]||Ae.throwArgumentError("invalid format type","format",e),e===Se.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===Se.sighash&&Ae.throwError("cannot format a constructor for sighash",B.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let t="constructor("+this.inputs.map(n=>n.format(e)).join(e===Se.full?", ":",")+") ";return this.stateMutability&&this.stateMutability!=="nonpayable"&&(t+=this.stateMutability+" "),t.trim()}static from(e){return typeof e=="string"?_r.fromString(e):_r.fromObject(e)}static fromObject(e){if(_r.isConstructorFragment(e))return e;e.type!=="constructor"&&Ae.throwArgumentError("invalid constructor object","value",e);let t=Ku(e);t.constant&&Ae.throwArgumentError("constructor cannot be constant","value",e);const n={name:null,type:e.type,inputs:e.inputs?e.inputs.map(Tt.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?R.from(e.gas):null};return new _r(li,n)}static fromString(e){let t={type:"constructor"};e=zu(e,t);let n=e.match(Us);return(!n||n[1].trim()!=="constructor")&&Ae.throwArgumentError("invalid constructor string","value",e),t.inputs=Ls(n[2].trim(),!1),Vu(n[3].trim(),t),_r.fromObject(t)}static isConstructorFragment(e){return e&&e._isFragment&&e.type==="constructor"}}class Sr extends _r{format(e){if(e||(e=Se.sighash),Se[e]||Ae.throwArgumentError("invalid format type","format",e),e===Se.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 t="";return e!==Se.sighash&&(t+="function "),t+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===Se.full?", ":",")+") ",e!==Se.sighash&&(this.stateMutability?this.stateMutability!=="nonpayable"&&(t+=this.stateMutability+" "):this.constant&&(t+="view "),this.outputs&&this.outputs.length&&(t+="returns ("+this.outputs.map(n=>n.format(e)).join(", ")+") "),this.gas!=null&&(t+="@"+this.gas.toString()+" ")),t.trim()}static from(e){return typeof e=="string"?Sr.fromString(e):Sr.fromObject(e)}static fromObject(e){if(Sr.isFunctionFragment(e))return e;e.type!=="function"&&Ae.throwArgumentError("invalid function object","value",e);let t=Ku(e);const n={type:e.type,name:Fs(e.name),constant:t.constant,inputs:e.inputs?e.inputs.map(Tt.fromObject):[],outputs:e.outputs?e.outputs.map(Tt.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?R.from(e.gas):null};return new Sr(li,n)}static fromString(e){let t={type:"function"};e=zu(e,t);let n=e.split(" returns ");n.length>2&&Ae.throwArgumentError("invalid function string","value",e);let i=n[0].match(Us);if(i||Ae.throwArgumentError("invalid function signature","value",e),t.name=i[1].trim(),t.name&&Fs(t.name),t.inputs=Ls(i[2],!1),Vu(i[3].trim(),t),n.length>1){let s=n[1].match(Us);(s[1].trim()!=""||s[3].trim()!="")&&Ae.throwArgumentError("unexpected tokens","value",e),t.outputs=Ls(s[2],!1)}else t.outputs=[];return Sr.fromObject(t)}static isFunctionFragment(e){return e&&e._isFragment&&e.type==="function"}}function _0(r){const e=r.format();return(e==="Error(string)"||e==="Panic(uint256)")&&Ae.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",r),r}class tn extends Dr{format(e){if(e||(e=Se.sighash),Se[e]||Ae.throwArgumentError("invalid format type","format",e),e===Se.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});let t="";return e!==Se.sighash&&(t+="error "),t+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===Se.full?", ":",")+") ",t.trim()}static from(e){return typeof e=="string"?tn.fromString(e):tn.fromObject(e)}static fromObject(e){if(tn.isErrorFragment(e))return e;e.type!=="error"&&Ae.throwArgumentError("invalid error object","value",e);const t={type:e.type,name:Fs(e.name),inputs:e.inputs?e.inputs.map(Tt.fromObject):[]};return _0(new tn(li,t))}static fromString(e){let t={type:"error"},n=e.match(Us);return n||Ae.throwArgumentError("invalid error signature","value",e),t.name=n[1].trim(),t.name&&Fs(t.name),t.inputs=Ls(n[2],!1),_0(tn.fromObject(t))}static isErrorFragment(e){return e&&e._isFragment&&e.type==="error"}}function Ti(r){return r.match(/^uint($|[^1-9])/)?r="uint256"+r.substring(4):r.match(/^int($|[^1-9])/)&&(r="int256"+r.substring(3)),r}const a1=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function Fs(r){return(!r||!r.match(a1))&&Ae.throwArgumentError(`invalid identifier "${r}"`,"value",r),r}const Us=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");function o1(r){r=r.trim();let e=[],t="",n=0;for(let i=0;ithis.wordSize&&of.throwError("value out-of-bounds",B.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:t.length}),t.length%this.wordSize&&(t=Pe([this._padding.slice(t.length%this.wordSize),t])),t}writeValue(e){return this._writeData(this._getValue(e))}writeUpdatableValue(){const e=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,t=>{this._data[e]=this._getValue(t)}}}class Da{constructor(e,t,n,i){q(this,"_data",W(e)),q(this,"wordSize",t||32),q(this,"_coerceFunc",n),q(this,"allowLoose",i),this._offset=0}get data(){return H(this._data)}get consumed(){return this._offset}static coerce(e,t){let n=e.match("^u?int([0-9]+)$");return n&&parseInt(n[1])<=48&&(t=t.toNumber()),t}coerce(e,t){return this._coerceFunc?this._coerceFunc(e,t):Da.coerce(e,t)}_peekBytes(e,t,n){let i=Math.ceil(t/this.wordSize)*this.wordSize;return this._offset+i>this._data.length&&(this.allowLoose&&n&&this._offset+t<=this._data.length?i=t:of.throwError("data out-of-bounds",B.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+i})),this._data.slice(this._offset,this._offset+i)}subReader(e){return new Da(this._data.slice(this._offset+e),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(e,t){let n=this._peekBytes(0,e,!!t);return this._offset+=n.length,n.slice(0,e)}readValue(){return R.from(this.readBytes(this.wordSize))}}var Qu={exports:{}};/** * [js-sha3]{@link https://github.com/emn178/js-sha3} * * @version 0.8.0 diff --git a/assets/01-why-8FHUeyRc.js b/assets/01-why-DDLn-B4w.js similarity index 98% rename from assets/01-why-8FHUeyRc.js rename to assets/01-why-DDLn-B4w.js index 48d83ba253..36b24f275b 100644 --- a/assets/01-why-8FHUeyRc.js +++ b/assets/01-why-DDLn-B4w.js @@ -1,4 +1,4 @@ -import{u as s,j as e}from"./index-BXOUdEEZ.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{u as s,j as e}from"./index-CchMGs7j.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/02-auth-address-63x9gD_B.js b/assets/02-auth-address-CyNhiG2u.js similarity index 99% rename from assets/02-auth-address-63x9gD_B.js rename to assets/02-auth-address-CyNhiG2u.js index c942b0629e..cc640411c0 100644 --- a/assets/02-auth-address-63x9gD_B.js +++ b/assets/02-auth-address-CyNhiG2u.js @@ -1,4 +1,4 @@ -import{u as n,j as s}from"./index-BXOUdEEZ.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{u as n,j as s}from"./index-CchMGs7j.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/02-auth-address-DQDRmsCg.js b/assets/02-auth-address-ckDlTMpv.js similarity index 99% rename from assets/02-auth-address-DQDRmsCg.js rename to assets/02-auth-address-ckDlTMpv.js index c942b0629e..cc640411c0 100644 --- a/assets/02-auth-address-DQDRmsCg.js +++ b/assets/02-auth-address-ckDlTMpv.js @@ -1,4 +1,4 @@ -import{u as n,j as s}from"./index-BXOUdEEZ.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{u as n,j as s}from"./index-CchMGs7j.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/02-building-relaying-server-BHX8B3BM.js b/assets/02-building-relaying-server-tgIgg2w9.js similarity index 99% rename from assets/02-building-relaying-server-BHX8B3BM.js rename to assets/02-building-relaying-server-tgIgg2w9.js index 771e9ed3b0..6f8c1b3658 100644 --- a/assets/02-building-relaying-server-BHX8B3BM.js +++ b/assets/02-building-relaying-server-tgIgg2w9.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-BXOUdEEZ.js";const a={slug:"/relayer/building-relaying-server",title:"Building a Relaying Server",description:"undefined"};function i(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",...l(),...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{u as l,j as s}from"./index-CchMGs7j.js";const a={slug:"/relayer/building-relaying-server",title:"Building a Relaying Server",description:"undefined"};function i(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",...l(),...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(e.p,{children:`:::info Sequentual Transactions diff --git a/assets/02-deploy-ERC20-currency-CDfzyuDC.js b/assets/02-deploy-ERC20-currency-CJ-woKNT.js similarity index 98% rename from assets/02-deploy-ERC20-currency-CDfzyuDC.js rename to assets/02-deploy-ERC20-currency-CJ-woKNT.js index 0bb458b0e1..05753ba1ea 100644 --- a/assets/02-deploy-ERC20-currency-CDfzyuDC.js +++ b/assets/02-deploy-ERC20-currency-CJ-woKNT.js @@ -1,4 +1,4 @@ -import{u as s,j as e,e as i}from"./index-BXOUdEEZ.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{u as s,j as e,e as i}from"./index-CchMGs7j.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."}),` @@ -43,7 +43,7 @@ solidity or `,e.jsx(n.code,{children:'ethers.utils.keccak256(ethers.utils.toUtf8 in javascript`]})}),` `,e.jsx(i,{type:"tip",children:e.jsxs(n.p,{children:["It's a typical pattern to use offchain compute like a cloudflare worker with a relayer wallet sending transactions, which would be inputted in the account field, more on how to accomplish this ",e.jsx(n.a,{href:"/guides/templates/03-mint-collectibles-serverless#mint-collectibles-using-a-gasless-serverless-relayer",children:"here"})]})}),` `,e.jsxs(n.h2,{id:"step-6-mint-tokens-to-your-wallet-address",children:["Step 6: Mint tokens to your wallet address",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#step-6-mint-tokens-to-your-wallet-address",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` -`,e.jsxs(n.p,{children:["Navigate to the ",e.jsx(n.code,{children:"mint"})," card in the ",e.jsx(n.code,{children:"Write Contract"})," section and input your wallet address and amount of tokens in 18 decimals. So for 100 tokens you would input: ",e.jsx(n.code,{children:"100000000000000000000"})," with 18 additional trailing zeros"]}),` +`,e.jsxs(n.p,{children:["Navigate to the ",e.jsx(n.code,{children:"mint"})," card in the ",e.jsx(n.code,{children:"Write Contract"})," section and input your wallet address and amount of tokens in 18 decimals. So for 100 tokens you would input: ",e.jsx(n.code,{children:"100000000000000000000"})]}),` `,e.jsx(n.p,{children:e.jsx(n.img,{src:"/img/collectibles/mint_currency.png",alt:"mint tokens"})}),` `,e.jsxs(n.h2,{id:"step-7-confirm-your-minted-currency",children:["Step 7: Confirm your minted currency",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#step-7-confirm-your-minted-currency",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(n.p,{children:"And you're done!"}),` diff --git a/assets/02-getting-started-6k5WNKDy.js b/assets/02-getting-started-DCEjiXfb.js similarity index 99% rename from assets/02-getting-started-6k5WNKDy.js rename to assets/02-getting-started-DCEjiXfb.js index 8b8ee6a7ae..a0c0723f29 100644 --- a/assets/02-getting-started-6k5WNKDy.js +++ b/assets/02-getting-started-DCEjiXfb.js @@ -1,4 +1,4 @@ -import{u as n,j as s}from"./index-BXOUdEEZ.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{u as n,j as s}from"./index-CchMGs7j.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/02-installation-ZfcWzbCM.js b/assets/02-installation-CLf2UaDN.js similarity index 99% rename from assets/02-installation-ZfcWzbCM.js rename to assets/02-installation-CLf2UaDN.js index b1f5341eb9..38ff9cf6a1 100644 --- a/assets/02-installation-ZfcWzbCM.js +++ b/assets/02-installation-CLf2UaDN.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.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{u as i,j as e}from"./index-CchMGs7j.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/02-installation-CmHFe_OD.js b/assets/02-installation-CObAK7UR.js similarity index 99% rename from assets/02-installation-CmHFe_OD.js rename to assets/02-installation-CObAK7UR.js index 971ab9fad5..60904b4330 100644 --- a/assets/02-installation-CmHFe_OD.js +++ b/assets/02-installation-CObAK7UR.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.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{u as r,j as e}from"./index-CchMGs7j.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":"info",children:[e.jsxs(s.p,{children:[e.jsx(s.a,{href:"https://sequence.build",children:"Introducing the Sequence Builder"}),` Our `,e.jsx(s.strong,{children:"Indexer"})," service is now 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 @@ -56,5 +56,5 @@ and Polygon is `,e.jsx(s.a,{href:"https://polygon-indexer.sequence.app",children `,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"_, tokenBalances, err "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":="}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" seqIndexer."}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"GetTokenBalances"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(context."}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Background"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(), "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"accountAddress, "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"includeMetadata, "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"metadataOptions, "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]})]})}),` `,e.jsx("br",{}),` `,e.jsxs(s.h3,{id:"unity-or-unreal-installation",children:["Unity or Unreal Installation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#unity-or-unreal-installation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` -`,e.jsxs(s.p,{children:["The Sequence Indexer is integrated directly inside of the respective ",e.jsx(s.a,{href:"/sdk/unity/06-read-from-blockchain",children:"Sequence Web3 Unity"})," and ",e.jsx(s.a,{href:"/sdk/unreal",children:"Sequence Web3 Unreal"})," SDKs."]}),` +`,e.jsxs(s.p,{children:["The Sequence Indexer is integrated directly inside of the respective ",e.jsx(s.a,{href:"/sdk/unity/06-read-from-blockchain",children:"Sequence Web3 Unity"})," and ",e.jsx(s.a,{href:"/sdk/unreal/01-overview",children:"Sequence Web3 Unreal"})," SDKs."]}),` `,e.jsx("br",{})]})}function d(n={}){const{wrapper:s}={...r(),...n.components};return s?e.jsx(s,{...n,children:e.jsx(i,{...n})}):i(n)}export{d as default,a as frontmatter}; diff --git a/assets/02-installation-BZrO8R1J.js b/assets/02-installation-D0o4nSPs.js similarity index 97% rename from assets/02-installation-BZrO8R1J.js rename to assets/02-installation-D0o4nSPs.js index 6b2202e329..36309a0297 100644 --- a/assets/02-installation-BZrO8R1J.js +++ b/assets/02-installation-D0o4nSPs.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.js";const a={sidebar_label:"Installation",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{u as r,j as e}from"./index-CchMGs7j.js";const a={sidebar_label:"Installation",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 @@ -21,7 +21,8 @@ and use the corresponding host for your dapp/game. For example, on Ethereum main `,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:"#6F42C1","--shiki-dark":"#F69D50"},children:"pnpm"}),e.jsx(s.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" install "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"0"}),e.jsx(s.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"xsequence ethers"})]})})}),` `,e.jsx(s.p,{children:"or"}),` `,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:"#6F42C1","--shiki-dark":"#F69D50"},children:"yarn"}),e.jsx(s.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" add "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"0"}),e.jsx(s.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"xsequence ethers"})]})})}),` -`,e.jsxs(s.p,{children:[e.jsxs("strong",{children:["This code requires an API Access Key from ",e.jsx("a",{href:"https://sequence.build",children:e.jsx("u",{children:e.jsx(s.strong,{children:"Sequence Builder"})})})," "]}),"then in your app (using your ",e.jsx(s.code,{children:"API_Access_Key"}),")"]}),` +`,e.jsxs("strong",{children:[e.jsxs(s.p,{children:["This code requires an API Access Key from"," "]}),e.jsx("a",{href:"https://sequence.build",children:e.jsx("u",{children:e.jsx(s.strong,{children:"Sequence Builder"})})})," "]}),` +`,e.jsxs(s.p,{children:["then in your app (using your ",e.jsx(s.code,{children:"API_Access_Key"}),")"]}),` `,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.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"import"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" { SequenceIndexer } "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),e.jsx(s.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" '@0xsequence/indexer'"})]}),` `,e.jsx(s.span,{className:"line","data-empty-line":!0,children:" "}),` `,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of"})}),` @@ -53,5 +54,5 @@ and use the corresponding host for your dapp/game. For example, on Ethereum main `,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"_, tokenBalances, err "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":="}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" seqIndexer."}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"GetTokenBalances"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(context."}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Background"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(), "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"accountAddress, "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"includeMetadata, "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"metadataOptions, "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]})]})}),` `,e.jsx("br",{}),` `,e.jsxs(s.h3,{id:"unity-or-unreal-installation",children:["Unity or Unreal Installation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#unity-or-unreal-installation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` -`,e.jsxs(s.p,{children:["The Sequence Indexer is integrated directly inside of the respective ",e.jsx(s.a,{href:"/sdk/unity/01-overview",children:"Sequence Web3 Unity"})," and ",e.jsx(s.a,{href:"/sdk/unreal",children:"Sequence Web3 Unreal"})," SDKs."]}),` +`,e.jsxs(s.p,{children:["The Sequence Indexer is integrated directly inside of the respective ",e.jsx(s.a,{href:"/sdk/unity/01-overview",children:"Sequence Web3 Unity"})," and ",e.jsx(s.a,{href:"/sdk/unreal/01-overview",children:"Sequence Web3 Unreal"})," SDKs."]}),` `,e.jsx("br",{})]})}function d(n={}){const{wrapper:s}={...r(),...n.components};return s?e.jsx(s,{...n,children:e.jsx(i,{...n})}):i(n)}export{d as default,a as frontmatter}; diff --git a/assets/02-installation-D1RIPokR.js b/assets/02-installation-D1RIPokR.js new file mode 100644 index 0000000000..4ab4872527 --- /dev/null +++ b/assets/02-installation-D1RIPokR.js @@ -0,0 +1,10 @@ +import{u as r,j as e}from"./index-CchMGs7j.js";const d={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:[` +`,e.jsxs(n.li,{children:[e.jsx(n.code,{children:"WaaSTenantKey"}),": This key will be given to you by the Sequence team during WaaS onboarding"]}),` +`,e.jsxs(n.li,{children:[e.jsx(n.code,{children:"ProjectAccessKey"}),": This key can be found in ",e.jsx(n.a,{href:"https://sequence.build/",children:"Sequence Builder"})," under ",e.jsx(n.code,{children:"Settings > API Access Keys"})]}),` +`]}),` +`,e.jsxs(n.p,{children:["You can then add these credentials in the ",e.jsx(n.code,{children:"[Config.h]"})," file under ",e.jsx(n.code,{children:"SequencePlugin/Source/SequencePlugin/Private/Config/Config.h"}),"."]}),` +`,e.jsxs(n.h2,{id:"security",children:["Security",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#security",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` +`,e.jsxs(n.p,{children:["You must provide an encryption key implementation at ",e.jsx(n.code,{children:"[SequenceEncryptor.cpp]"})," function ",e.jsx(n.code,{children:"[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."]})]})}function o(i={}){const{wrapper:n}={...r(),...i.components};return n?e.jsx(n,{...i,children:e.jsx(t,{...i})}):t(i)}export{o as default,d as frontmatter}; diff --git a/assets/02-quickstart-zdv7eQeo.js b/assets/02-quickstart-4ykaiCFW.js similarity index 99% rename from assets/02-quickstart-zdv7eQeo.js rename to assets/02-quickstart-4ykaiCFW.js index e6d182ec96..822d1ddb8b 100644 --- a/assets/02-quickstart-zdv7eQeo.js +++ b/assets/02-quickstart-4ykaiCFW.js @@ -1,4 +1,4 @@ -import{u as n,j as e}from"./index-BXOUdEEZ.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{u as n,j as e}from"./index-CchMGs7j.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 embedded 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/02-quickstart-DgD-oWhr.js b/assets/02-quickstart-CVOVMm3N.js similarity index 99% rename from assets/02-quickstart-DgD-oWhr.js rename to assets/02-quickstart-CVOVMm3N.js index 0d976299c2..0657e260f3 100644 --- a/assets/02-quickstart-DgD-oWhr.js +++ b/assets/02-quickstart-CVOVMm3N.js @@ -1,4 +1,4 @@ -import{u as r,j as s}from"./index-BXOUdEEZ.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",...r(),...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{u as r,j as s}from"./index-CchMGs7j.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",...r(),...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/02-quickstart-xxXaq7Pn.js b/assets/02-quickstart-Dm3tzuR_.js similarity index 98% rename from assets/02-quickstart-xxXaq7Pn.js rename to assets/02-quickstart-Dm3tzuR_.js index 3d1b2052e3..671df2ac48 100644 --- a/assets/02-quickstart-xxXaq7Pn.js +++ b/assets/02-quickstart-Dm3tzuR_.js @@ -1,4 +1,4 @@ -import{u as n,j as e}from"./index-BXOUdEEZ.js";const l={title:"Quickstart",description:"undefined"};function i(a){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...n(),...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{u as n,j as e}from"./index-CchMGs7j.js";const l={title:"Quickstart",description:"undefined"};function i(a){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...n(),...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/02-quickstart-BTnDCOWm.js b/assets/02-quickstart-jegcKRXn.js similarity index 99% rename from assets/02-quickstart-BTnDCOWm.js rename to assets/02-quickstart-jegcKRXn.js index fa8013a50f..e986b1f67f 100644 --- a/assets/02-quickstart-BTnDCOWm.js +++ b/assets/02-quickstart-jegcKRXn.js @@ -1,4 +1,4 @@ -import{u as a,j as s}from"./index-BXOUdEEZ.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{u as a,j as s}from"./index-CchMGs7j.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/04-sequence-kit-B3RjIvG6.js b/assets/02-sequence-kit-BMZSpUXz.js similarity index 97% rename from assets/04-sequence-kit-B3RjIvG6.js rename to assets/02-sequence-kit-BMZSpUXz.js index c06d3007e3..23627bf1c5 100644 --- a/assets/04-sequence-kit-B3RjIvG6.js +++ b/assets/02-sequence-kit-BMZSpUXz.js @@ -1,4 +1,4 @@ -import{u as s,j as e}from"./index-BXOUdEEZ.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{u as s,j as e}from"./index-CchMGs7j.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/02-universal-deployer-DEID6HbY.js b/assets/02-universal-deployer-V3lr9jJW.js similarity index 99% rename from assets/02-universal-deployer-DEID6HbY.js rename to assets/02-universal-deployer-V3lr9jJW.js index 0e3b76cdf3..66644ed38e 100644 --- a/assets/02-universal-deployer-DEID6HbY.js +++ b/assets/02-universal-deployer-V3lr9jJW.js @@ -1,4 +1,4 @@ -import{u as r,j as e,e as t}from"./index-BXOUdEEZ.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const o={title:"Universal Deployer",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",strong:"strong",...r(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"universal-deployer",children:["Universal Deployer",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#universal-deployer",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{u as r,j as e,e as t}from"./index-CchMGs7j.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const o={title:"Universal Deployer",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",strong:"strong",...r(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"universal-deployer",children:["Universal Deployer",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#universal-deployer",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["The Sequence contract wallets use ",e.jsx(n.a,{href:"https://weka.medium.com/how-to-send-ether-to-11-440-people-187e332566b7",children:"Nick's method"}),` to deploy the contracts that compose the smart contract wallet. This method has been chosen because it allows each wallet to take the same address on multiple chains, making it easier to use and less prone to mistakes.`]}),` `,e.jsx(t,{type:"danger",children:e.jsxs(n.p,{children:["Limitations ",e.jsx("br",{}),` diff --git a/assets/02-wallets-hufkdzO-.js b/assets/02-wallets-BAOFMlWK.js similarity index 99% rename from assets/02-wallets-hufkdzO-.js rename to assets/02-wallets-BAOFMlWK.js index 2caf094e26..c2ac565116 100644 --- a/assets/02-wallets-hufkdzO-.js +++ b/assets/02-wallets-BAOFMlWK.js @@ -1,4 +1,4 @@ -import{u as s,j as e}from"./index-BXOUdEEZ.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{u as s,j as e}from"./index-CchMGs7j.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/03-clients-BliPa7eW.js b/assets/03-clients-BfjUnR5d.js similarity index 99% rename from assets/03-clients-BliPa7eW.js rename to assets/03-clients-BfjUnR5d.js index 8a81492c71..c838898848 100644 --- a/assets/03-clients-BliPa7eW.js +++ b/assets/03-clients-BfjUnR5d.js @@ -1,4 +1,4 @@ -import{u as s,j as e}from"./index-BXOUdEEZ.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{u as s,j as e}from"./index-CchMGs7j.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/03-configuration-CeJRPMlZ.js b/assets/03-configuration-cZDC_IKQ.js similarity index 99% rename from assets/03-configuration-CeJRPMlZ.js rename to assets/03-configuration-cZDC_IKQ.js index fb1b9834c2..92766761d6 100644 --- a/assets/03-configuration-CeJRPMlZ.js +++ b/assets/03-configuration-cZDC_IKQ.js @@ -1,4 +1,4 @@ -import{u as t,j as e}from"./index-BXOUdEEZ.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{u as t,j as e}from"./index-CchMGs7j.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/03-fetch-tokens-D0WixhHL.js b/assets/03-fetch-tokens-DDkmBp8W.js similarity index 99% rename from assets/03-fetch-tokens-D0WixhHL.js rename to assets/03-fetch-tokens-DDkmBp8W.js index 80e02b66e7..35ab82821f 100644 --- a/assets/03-fetch-tokens-D0WixhHL.js +++ b/assets/03-fetch-tokens-DDkmBp8W.js @@ -1,4 +1,4 @@ -import{u as r,j as s}from"./index-BXOUdEEZ.js";import{T as a,a as l}from"./TabGroup-CR9eTTBb.js";const o={sidebar_label:"Tokens API",title:"Tokens API",description:"undefined"};function i(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",...r(),...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{u as r,j as s}from"./index-CchMGs7j.js";import{T as a,a as l}from"./TabGroup-4xq3SqP5.js";const o={sidebar_label:"Tokens API",title:"Tokens API",description:"undefined"};function i(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",...r(),...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.aside,{"data-callout":"warning",children:[s.jsx(e.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),s.jsxs(e.p,{children:["Our ",s.jsx(e.strong,{children:"Indexer"})," service is now managed through ",s.jsx(e.strong,{children:s.jsx(e.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),s.jsx(e.p,{children:s.jsxs(e.a,{href:"https://sequence.build",children:["Get started with the ",s.jsx(e.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` `,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:"]})}),` diff --git a/assets/03-get-top-orders-CuGlHPhA.js b/assets/03-get-top-orders-BE-_zj92.js similarity index 99% rename from assets/03-get-top-orders-CuGlHPhA.js rename to assets/03-get-top-orders-BE-_zj92.js index 9612ccc56b..5e8bc21987 100644 --- a/assets/03-get-top-orders-CuGlHPhA.js +++ b/assets/03-get-top-orders-BE-_zj92.js @@ -1,4 +1,4 @@ -import{u as c,j as s}from"./index-BXOUdEEZ.js";import{b as d,T as i,a as n}from"./TabGroup-CR9eTTBb.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const t=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",...c(),...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{u as c,j as s}from"./index-CchMGs7j.js";import{b as d,T as i,a as n}from"./TabGroup-4xq3SqP5.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const t=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",...c(),...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.jsx(e.p,{children:"Query the protocol for the top order based on various filters."}),` `,s.jsx(e.p,{children:"Fetch the top orders from the protocol, optionally excluding those created by a specific user."}),` diff --git a/assets/03-manage-sessions-Bed6WGXa.js b/assets/03-manage-sessions-BJA3--RF.js similarity index 99% rename from assets/03-manage-sessions-Bed6WGXa.js rename to assets/03-manage-sessions-BJA3--RF.js index 8df4acbc81..f71a9683a2 100644 --- a/assets/03-manage-sessions-Bed6WGXa.js +++ b/assets/03-manage-sessions-BJA3--RF.js @@ -1,4 +1,4 @@ -import{u as n,j as s}from"./index-BXOUdEEZ.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{u as n,j as s}from"./index-CchMGs7j.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/03-mint-collectibles-serverless-DpSz7LyU.js b/assets/03-mint-collectibles-serverless-DFmuqk8W.js similarity index 99% rename from assets/03-mint-collectibles-serverless-DpSz7LyU.js rename to assets/03-mint-collectibles-serverless-DFmuqk8W.js index af762eb7bb..36d79aed15 100644 --- a/assets/03-mint-collectibles-serverless-DpSz7LyU.js +++ b/assets/03-mint-collectibles-serverless-DFmuqk8W.js @@ -1,4 +1,4 @@ -import{u as r,j as s}from"./index-BXOUdEEZ.js";const a={title:"Mint Collectibles Using a Gasless Serverless Relayer",description:"undefined"};function i(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",...r(),...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{u as r,j as s}from"./index-CchMGs7j.js";const a={title:"Mint Collectibles Using a Gasless Serverless Relayer",description:"undefined"};function i(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",...r(),...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/03-setup-B2DzkyEa.js b/assets/03-setup-B2DzkyEa.js new file mode 100644 index 0000000000..e75e950454 --- /dev/null +++ b/assets/03-setup-B2DzkyEa.js @@ -0,0 +1,20 @@ +import{u as o,j as e}from"./index-CchMGs7j.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."]}),` +`]}),` +`,e.jsxs(n.li,{children:[` +`,e.jsx(n.p,{children:"Launch your project, then allow it to update the UProject Settings."}),` +`]}),` +`,e.jsxs(n.li,{children:[` +`,e.jsxs(n.p,{children:["To find the ",e.jsx(n.code,{children:"SequencePlugin"})," content folder in your content drawer enable view plugin content"]}),` +`]}),` +`,e.jsxs(n.li,{children:[` +`,e.jsxs(n.p,{children:[`If you wish to use the in built sequence UI for login +a) Create an `,e.jsx(n.code,{children:"[Actor]"})," you wish to be responsible for the SequenceUI then attach the ",e.jsx(n.code,{children:"[Sequence_Pawn_Component_BP]"}),` to it +b) Setup your `,e.jsx(n.code,{children:"[Actor]"})," Blueprint similar to how it's setup in ",e.jsx(n.code,{children:"[Custom_Spectator_Pawn]"})," being sure to bind to the delegate that gives you Credentials ",e.jsx(n.code,{children:"[Auth_Success_Forwarder]"})]}),` +`]}),` +`,e.jsxs(n.li,{children:[` +`,e.jsxs(n.p,{children:["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 ",e.jsx(n.code,{children:"[Custom_Spectator_Pawn]"}),". This Pawn inherits from a C++ class ",e.jsx(n.code,{children:"[Sqnc_Spec_Pawn]"}),", which implements a blueprint Callable function ",e.jsx(n.code,{children:"[SetupCredentials(FCredentials_BE CredentialsIn)]"}),". This is callable within the child class ",e.jsx(n.code,{children:"[Custom_Spectator_Pawn]"}),". Calling this function will forward the credentials to a C++ backend."]}),` +`]}),` +`]})]})}function s(t={}){const{wrapper:n}={...o(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(i,{...t})}):i(t)}export{s as default,r as frontmatter}; diff --git a/assets/03-setup-CAEHu-rE.js b/assets/03-setup-DVqc6pPn.js similarity index 97% rename from assets/03-setup-CAEHu-rE.js rename to assets/03-setup-DVqc6pPn.js index 8919c0f242..969cb96ea0 100644 --- a/assets/03-setup-CAEHu-rE.js +++ b/assets/03-setup-DVqc6pPn.js @@ -1,4 +1,4 @@ -import{u as s,j as e}from"./index-BXOUdEEZ.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{u as s,j as e}from"./index-CchMGs7j.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/03-sign-message-Cn5G7lSc.js b/assets/03-sign-message-Br_SQVC8.js similarity index 90% rename from assets/03-sign-message-Cn5G7lSc.js rename to assets/03-sign-message-Br_SQVC8.js index 1fb137629c..db09b3c329 100644 --- a/assets/03-sign-message-Cn5G7lSc.js +++ b/assets/03-sign-message-Br_SQVC8.js @@ -1 +1 @@ -import{u as r,j as t}from"./index-BXOUdEEZ.js";const s={title:"TODO - Replace with Code Groups from Vocs",description:"undefined"};function n(o){const e={a:"a",div:"div",h1:"h1",header:"header",...r(),...o.components};return t.jsx(e.header,{children:t.jsxs(e.h1,{id:"todo---replace-with-code-groups-from-vocs",children:["TODO - Replace with Code Groups from Vocs",t.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#todo---replace-with-code-groups-from-vocs",children:t.jsx(e.div,{"data-autolink-icon":!0})})]})})}function c(o={}){const{wrapper:e}={...r(),...o.components};return e?t.jsx(e,{...o,children:t.jsx(n,{...o})}):n(o)}export{c as default,s as frontmatter}; +import{u as r,j as t}from"./index-CchMGs7j.js";const s={title:"TODO - Replace with Code Groups from Vocs",description:"undefined"};function n(o){const e={a:"a",div:"div",h1:"h1",header:"header",...r(),...o.components};return t.jsx(e.header,{children:t.jsxs(e.h1,{id:"todo---replace-with-code-groups-from-vocs",children:["TODO - Replace with Code Groups from Vocs",t.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#todo---replace-with-code-groups-from-vocs",children:t.jsx(e.div,{"data-autolink-icon":!0})})]})})}function c(o={}){const{wrapper:e}={...r(),...o.components};return e?t.jsx(e,{...o,children:t.jsx(n,{...o})}):n(o)}export{c as default,s as frontmatter}; diff --git a/assets/03-sign-message-67OGb3o1.js b/assets/03-sign-message-C06zBfE6.js similarity index 98% rename from assets/03-sign-message-67OGb3o1.js rename to assets/03-sign-message-C06zBfE6.js index e715444508..d0368eb580 100644 --- a/assets/03-sign-message-67OGb3o1.js +++ b/assets/03-sign-message-C06zBfE6.js @@ -1,4 +1,4 @@ -import{u as d,j as s,e as a}from"./index-BXOUdEEZ.js";import{b as r,T as i,a as n}from"./TabGroup-CR9eTTBb.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const k={title:"Signing & Verifying Messages",description:"undefined"};function c(l){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",...d(),...l.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{u as d,j as s,e as a}from"./index-CchMGs7j.js";import{b as r,T as i,a as n}from"./TabGroup-4xq3SqP5.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const k={title:"Signing & Verifying Messages",description:"undefined"};function c(l){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",...d(),...l.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:"}),` @@ -59,11 +59,8 @@ from either your frontend or backend.`}),` `,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})}),` `,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` `,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"console."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"log"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(isValid);"})]})]})}),` -`,s.jsxs(e.p,{children:[`:::info Sequence is a Smart Contract based account -These signatures are by default encoded using EIP-6492, see `,s.jsx(e.a,{href:"https://eips.ethereum.org/EIPS/eip-6492",children:"https://eips.ethereum.org/EIPS/eip-6492"}),"."]}),` -`,s.jsxs(e.p,{children:["This means that the signatures can be verified using the standard process defined in the ",s.jsx(e.code,{children:"UniversalVerified"})," contract on EIP-6492."]}),` -`,s.jsxs(e.p,{children:["The ",s.jsx(e.code,{children:"wallet.utils.isValidMessageSignature"}),` implements EIP-6492 verification, it can be used to verify signatures from any kind of wallet. -:::`]}),` +`,s.jsxs(a,{type:"info",children:[s.jsxs(e.p,{children:[`Sequence is a Smart Contract based account +These signatures are by default encoded using EIP-6492, see `,s.jsx(e.a,{href:"https://eips.ethereum.org/EIPS/eip-6492",children:"https://eips.ethereum.org/EIPS/eip-6492"}),"."]}),s.jsxs(e.p,{children:["This means that the signatures can be verified using the standard process defined in the ",s.jsx(e.code,{children:"UniversalVerified"})," contract on EIP-6492."]}),s.jsxs(e.p,{children:["The ",s.jsx(e.code,{children:"wallet.utils.isValidMessageSignature"})," implements EIP-6492 verification, it can be used to verify signatures from any kind of wallet."]})]}),` `,s.jsx("br",{}),` `,s.jsxs(e.h2,{id:"verifying-message-signatures-via-sequence-api",children:["Verifying Message Signatures (via Sequence API)",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#verifying-message-signatures-via-sequence-api",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(a,{type:"warning",children:s.jsx(e.p,{children:`Notice that signing non-EIP6492 signatures requires the wallet to be deployed diff --git a/assets/03-tokens-api-BvCSK8V2.js b/assets/03-tokens-api-Wt-yZ8iO.js similarity index 75% rename from assets/03-tokens-api-BvCSK8V2.js rename to assets/03-tokens-api-Wt-yZ8iO.js index 925cada3b6..dadfca3443 100644 --- a/assets/03-tokens-api-BvCSK8V2.js +++ b/assets/03-tokens-api-Wt-yZ8iO.js @@ -1 +1 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/03-wagmi-BsRrkGCX.js b/assets/03-wagmi-v91jUr-a.js similarity index 99% rename from assets/03-wagmi-BsRrkGCX.js rename to assets/03-wagmi-v91jUr-a.js index 52f135f325..54afa7fa86 100644 --- a/assets/03-wagmi-BsRrkGCX.js +++ b/assets/03-wagmi-v91jUr-a.js @@ -1,4 +1,4 @@ -import{u as a,j as e}from"./index-BXOUdEEZ.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{u as a,j as e}from"./index-CchMGs7j.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/03-wallet-factory-QCZEaeZR.js b/assets/03-wallet-factory-BQXRuWg_.js similarity index 99% rename from assets/03-wallet-factory-QCZEaeZR.js rename to assets/03-wallet-factory-BQXRuWg_.js index fe2dc8e623..5938b494f4 100644 --- a/assets/03-wallet-factory-QCZEaeZR.js +++ b/assets/03-wallet-factory-BQXRuWg_.js @@ -1,4 +1,4 @@ -import{u as a,j as e,e as n}from"./index-BXOUdEEZ.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Wallet Factory",description:"undefined"};function r(t){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(),...t.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{u as a,j as e,e as n}from"./index-CchMGs7j.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Wallet Factory",description:"undefined"};function r(t){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(),...t.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/04-authentication-BECPZ5yD.js b/assets/04-authentication-BECPZ5yD.js new file mode 100644 index 0000000000..6e0aeb456b --- /dev/null +++ b/assets/04-authentication-BECPZ5yD.js @@ -0,0 +1,65 @@ +import{u as l,j as s}from"./index-CchMGs7j.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"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"UFUNCTION"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(BlueprintCallable, CATEGORY "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "Login"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"FString"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" GetLoginURL"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:" ESocialSigninType"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:" Type"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"); "})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"//This Call is made after you've collected the ID_Token (Mac & Windows only) WIP"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"UFUNCTION"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(BlueprintCallable, CATEGORY "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "Login"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"void"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" SocialLogin"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:" FString"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:" IDTokenIn"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"//This Call is made after you've collected the email address from the Users in the UI"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"UFUNCTION"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(BlueprintCallable, CATEGORY "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "Login"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"void"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" EmailLogin"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:" FString"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:" EmailIn"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"//This is call is made after the Delegate `[AuthRequiresCode]` is fired"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"UFUNCTION"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(BlueprintCallable, CATEGORY "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "Login"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"void"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" EmailCode"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:" FString"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:" CodeIn"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"//Optional call used to check if the credentials on disk are valid or not//"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"UFUNCTION"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(BlueprintCallable, Category "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "Login"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"bool"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" StoredCredentialsValid"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"();"})]})]})}),` +`,s.jsxs(e.p,{children:["To start you'll want to create a ",s.jsx(e.code,{children:"[UAuthenticator]"})," UObject like so ",s.jsx(e.code,{children:"[UAuthenticator + Auth = NewObject()]"}),", this UObject manages the authentication side of Sequence."]}),` +`,s.jsxs(e.p,{children:["Be sure to bind to the Delegates for ",s.jsx(e.code,{children:"[AuthSuccess]"}),", ",s.jsx(e.code,{children:"[AuthFailure]"}),", ",s.jsx(e.code,{children:"[AuthRequiresCode]"})," prior to making any signin calls You can bind to these delegates like so:"]}),` +`,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:"#005CC5","--shiki-dark":"#6CB6FF"},children:"this"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"->authenticator->AuthRequiresCode."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"AddDynamic"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"this"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"AYourClass"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"::YourCallReadyToReceiveCode);"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"this"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"->authenticator->AuthFailure."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"AddDynamic"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"this"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"AYourClass"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"::YourCallShowAuthFailureScreen);"})]})]})}),` +`,s.jsxs(e.p,{children:["In the case of ",s.jsx(e.code,{children:"[AuthSuccess]"})," since a parameter is also passed we bind to it like this"]}),` +`,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:"#24292E","--shiki-dark":"#ADBAC7"},children:"FScriptDelegate del;"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"del."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"BindUFunction"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"this"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"CallShowAuthSuccessScreen"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"this"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"->authenticator->AuthSuccess."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Add"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(del);"})]})]})}),` +`,s.jsxs(e.p,{children:["Where ",s.jsx(e.code,{children:"[CallShowAuthSuccessScreen]"})," is defined in ",s.jsx(e.code,{children:"SequenceBackendManager.h"})," like so:"]}),` +`,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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"UFUNCTION"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"()"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"void"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" CallShowAuthSuccessScreen"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:" FCredentials_BE"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:" CredentialsIn"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]})]})}),` +`,s.jsxs(e.p,{children:["And in ",s.jsx(e.code,{children:"SequenceBackendManager.cpp"})," like so:"]}),` +`,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:"void"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:" ASequenceBackendManager"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"::"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"CallShowAuthSuccessScreen"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:" FCredentials_BE"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:" CredentialsIn"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:") "})]}),` +`,s.jsx(e.span,{className:"line",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:"#005CC5","--shiki-dark":"#6CB6FF"},children:"this"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"->Credentials "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" CredentialsIn;"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"this"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"->ShowAuthSuccessDelegate."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"IsBound"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"())"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" this"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"->ShowAuthSuccessDelegate."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Broadcast"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(Credentials);"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"else"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" UE_LOG"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(LogTemp, Error, "}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"TEXT"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"`[Nothing bound to: ShowAuthSuccessDelegate]`"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"));"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"}"})})]})}),` +`,s.jsxs(e.h3,{id:"email-based-authentication",children:["Email based Authentication",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#email-based-authentication",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +`,s.jsxs(e.ol,{children:[` +`,s.jsxs(e.li,{children:[` +`,s.jsxs(e.p,{children:["To start email based authentication you'll start it with this call ",s.jsx(e.code,{children:"[EmailLogin(const FString& EmailIn)]"}),", supplying an email you've collected from the User in your GUI."]}),` +`]}),` +`,s.jsxs(e.li,{children:[` +`,s.jsxs(e.p,{children:["Next ",s.jsx(e.code,{children:"[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 ",s.jsx(e.code,{children:"[EmailCode(CodeIn)]"}),"."]}),` +`]}),` +`,s.jsxs(e.li,{children:[` +`,s.jsxs(e.p,{children:["Finally ",s.jsx(e.code,{children:"[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."]}),` +`]}),` +`]}),` +`,s.jsxs(e.h3,{id:"social-signin-based-authentication-on-desktop",children:["Social Signin based Authentication on Desktop",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#social-signin-based-authentication-on-desktop",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +`,s.jsxs(e.ol,{children:[` +`,s.jsxs(e.li,{children:[` +`,s.jsx(e.p,{children:"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."}),` +`]}),` +`,s.jsxs(e.li,{children:[` +`,s.jsxs(e.p,{children:["With whatever implementation you chose you can forward the colleted id_token to the UAuthenticator object with ",s.jsx(e.code,{children:"[SocialLogin(const FString& IDTokenIn)]"}),", after which ",s.jsx(e.code,{children:"[AuthSuccess]"})," will fire and you're done desktop based SSO."]}),` +`]}),` +`]}),` +`,s.jsxs(e.h3,{id:"social-signin-based-authentication-on-mobile",children:["Social Signin based Authentication on Mobile",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#social-signin-based-authentication-on-mobile",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +`,s.jsx(e.p,{children:"WIP"})]})}function c(i={}){const{wrapper:e}={...l(),...i.components};return e?s.jsx(e,{...i,children:s.jsx(n,{...i})}):n(i)}export{c as default,a as frontmatter}; diff --git a/assets/04-authentication-Ca9mV0ES.js b/assets/04-authentication-Y1sSErYo.js similarity index 99% rename from assets/04-authentication-Ca9mV0ES.js rename to assets/04-authentication-Y1sSErYo.js index b93c86c1c5..d02e4e400f 100644 --- a/assets/04-authentication-Ca9mV0ES.js +++ b/assets/04-authentication-Y1sSErYo.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-BXOUdEEZ.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{u as l,j as s}from"./index-CchMGs7j.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/01-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/04-checkout-DpZFyP0s.js b/assets/04-checkout-BNYQ2nrw.js similarity index 99% rename from assets/04-checkout-DpZFyP0s.js rename to assets/04-checkout-BNYQ2nrw.js index bf4d52a28f..18892bebab 100644 --- a/assets/04-checkout-DpZFyP0s.js +++ b/assets/04-checkout-BNYQ2nrw.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-BXOUdEEZ.js";const a={sidebar_label:"Checkout",title:"Overview",description:"undefined"};function n(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",...l(),...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{u as l,j as s}from"./index-CchMGs7j.js";const a={sidebar_label:"Checkout",title:"Overview",description:"undefined"};function n(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",...l(),...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/04-get-orderbook-BX14J_v-.js b/assets/04-get-orderbook-Dy7YyvsP.js similarity index 99% rename from assets/04-get-orderbook-BX14J_v-.js rename to assets/04-get-orderbook-Dy7YyvsP.js index 93c31c7abb..4f1b732813 100644 --- a/assets/04-get-orderbook-BX14J_v-.js +++ b/assets/04-get-orderbook-Dy7YyvsP.js @@ -1,4 +1,4 @@ -import{u as c,j as s,e as d}from"./index-BXOUdEEZ.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";import{b as a,T as n,a as i}from"./TabGroup-CR9eTTBb.js";const x=void 0;function l(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",strong:"strong",ul:"ul",...c(),...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{u as c,j as s,e as d}from"./index-CchMGs7j.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";import{b as a,T as n,a as i}from"./TabGroup-4xq3SqP5.js";const x=void 0;function l(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",strong:"strong",ul:"ul",...c(),...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.jsx(e.p,{children:"Query the protocol for orders based on various filters."}),` `,s.jsx(e.p,{children:s.jsxs(e.em,{children:["Sequence Orderbook ",s.jsx(e.code,{children:"GetOrderbookOrders"})," Method:"]})}),` `,s.jsxs(e.ul,{children:[` diff --git a/assets/05-platforms-489X8Wat.js b/assets/04-platforms-glPWmaN4.js similarity index 97% rename from assets/05-platforms-489X8Wat.js rename to assets/04-platforms-glPWmaN4.js index 8619b38045..10739dc8e5 100644 --- a/assets/05-platforms-489X8Wat.js +++ b/assets/04-platforms-glPWmaN4.js @@ -1,4 +1,4 @@ -import{u as l,j as e}from"./index-BXOUdEEZ.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{u as l,j as e}from"./index-CchMGs7j.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/02-quickstart",children:"Build With Sequence"})," to get started."]}),` diff --git a/assets/04-rainbow-kit-CjV-OizB.js b/assets/04-rainbow-kit-v4LsgczZ.js similarity index 99% rename from assets/04-rainbow-kit-CjV-OizB.js rename to assets/04-rainbow-kit-v4LsgczZ.js index e6d44d1e6b..c7125f3ee6 100644 --- a/assets/04-rainbow-kit-CjV-OizB.js +++ b/assets/04-rainbow-kit-v4LsgczZ.js @@ -1,4 +1,4 @@ -import{u as a,j as e}from"./index-BXOUdEEZ.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{u as a,j as e}from"./index-CchMGs7j.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/02-sequence-kit-DYfKAfv7.js b/assets/04-sequence-kit-Dm2NVQTH.js similarity index 97% rename from assets/02-sequence-kit-DYfKAfv7.js rename to assets/04-sequence-kit-Dm2NVQTH.js index c06d3007e3..23627bf1c5 100644 --- a/assets/02-sequence-kit-DYfKAfv7.js +++ b/assets/04-sequence-kit-Dm2NVQTH.js @@ -1,4 +1,4 @@ -import{u as s,j as e}from"./index-BXOUdEEZ.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{u as s,j as e}from"./index-CchMGs7j.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/04-session-keys-CqvnoKIS.js b/assets/04-session-keys-BH_jcGg9.js similarity index 99% rename from assets/04-session-keys-CqvnoKIS.js rename to assets/04-session-keys-BH_jcGg9.js index 6b9429117a..996b5a85c5 100644 --- a/assets/04-session-keys-CqvnoKIS.js +++ b/assets/04-session-keys-BH_jcGg9.js @@ -1,4 +1,4 @@ -import{u as r,j as s}from"./index-BXOUdEEZ.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{u as r,j as s}from"./index-CchMGs7j.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/04-session-keys-1izP5hvN.js b/assets/04-session-keys-DwD4iACN.js similarity index 99% rename from assets/04-session-keys-1izP5hvN.js rename to assets/04-session-keys-DwD4iACN.js index 6b9429117a..996b5a85c5 100644 --- a/assets/04-session-keys-1izP5hvN.js +++ b/assets/04-session-keys-DwD4iACN.js @@ -1,4 +1,4 @@ -import{u as r,j as s}from"./index-BXOUdEEZ.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{u as r,j as s}from"./index-CchMGs7j.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/04-transaction-history-BmURpOpl.js b/assets/04-transaction-history-wUrcEF9g.js similarity index 99% rename from assets/04-transaction-history-BmURpOpl.js rename to assets/04-transaction-history-wUrcEF9g.js index 8eabac1df1..04286d3676 100644 --- a/assets/04-transaction-history-BmURpOpl.js +++ b/assets/04-transaction-history-wUrcEF9g.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-BXOUdEEZ.js";const a={sidebar_label:"Wallet transaction history",title:"Wallet transaction history",description:"undefined"};function i(n){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",...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{u as l,j as s}from"./index-CchMGs7j.js";const a={sidebar_label:"Wallet transaction history",title:"Wallet transaction history",description:"undefined"};function i(n){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",...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.aside,{"data-callout":"warning",children:[s.jsx(e.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),s.jsxs(e.p,{children:["Our ",s.jsx(e.strong,{children:"Indexer"})," service is now managed through ",s.jsx(e.strong,{children:s.jsx(e.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),s.jsx(e.p,{children:s.jsxs(e.a,{href:"https://sequence.build",children:["Get started with the ",s.jsx(e.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` `,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. diff --git a/assets/04-transfers-DTgmCvbU.js b/assets/04-transfers-5gM1Zbvb.js similarity index 96% rename from assets/04-transfers-DTgmCvbU.js rename to assets/04-transfers-5gM1Zbvb.js index 2f0359b7d2..40453d137d 100644 --- a/assets/04-transfers-DTgmCvbU.js +++ b/assets/04-transfers-5gM1Zbvb.js @@ -1,4 +1,4 @@ -import{u as a,j as e}from"./index-BXOUdEEZ.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{u as a,j as e}from"./index-CchMGs7j.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/04-use-wallets-CpqAdL-1.js b/assets/04-use-wallets-Bbt6hEyu.js similarity index 99% rename from assets/04-use-wallets-CpqAdL-1.js rename to assets/04-use-wallets-Bbt6hEyu.js index 146816ef8f..148b3ad20a 100644 --- a/assets/04-use-wallets-CpqAdL-1.js +++ b/assets/04-use-wallets-Bbt6hEyu.js @@ -1,4 +1,4 @@ -import{u as n,j as s,e as a}from"./index-BXOUdEEZ.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{u as n,j as s,e as a}from"./index-CchMGs7j.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/04-wallet-configuration-DjII-_lO.js b/assets/04-wallet-configuration-Bs_jtNnf.js similarity index 99% rename from assets/04-wallet-configuration-DjII-_lO.js rename to assets/04-wallet-configuration-Bs_jtNnf.js index 4a568116ea..c100758da8 100644 --- a/assets/04-wallet-configuration-DjII-_lO.js +++ b/assets/04-wallet-configuration-Bs_jtNnf.js @@ -1,4 +1,4 @@ -import{u as r,j as s}from"./index-BXOUdEEZ.js";import{b as d,T as n,a}from"./TabGroup-CR9eTTBb.js";const t={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",...r(),...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{u as r,j as s}from"./index-CchMGs7j.js";import{b as d,T as n,a}from"./TabGroup-4xq3SqP5.js";const t={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",...r(),...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/04-wallet-transaction-history-BvCSK8V2.js b/assets/04-wallet-transaction-history-Wt-yZ8iO.js similarity index 75% rename from assets/04-wallet-transaction-history-BvCSK8V2.js rename to assets/04-wallet-transaction-history-Wt-yZ8iO.js index 925cada3b6..dadfca3443 100644 --- a/assets/04-wallet-transaction-history-BvCSK8V2.js +++ b/assets/04-wallet-transaction-history-Wt-yZ8iO.js @@ -1 +1 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/05-api-integration-t2lA4Nv8.js b/assets/05-api-integration-t2lA4Nv8.js new file mode 100644 index 0000000000..b25f9d16e9 --- /dev/null +++ b/assets/05-api-integration-t2lA4Nv8.js @@ -0,0 +1,49 @@ +import{u as r,j as e}from"./index-CchMGs7j.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:")]`"})]})})}),` +`,e.jsxs(s.p,{children:["Once you have your ",e.jsx(s.code,{children:"[USequenceWallet]"})," UObject call ",e.jsx(s.code,{children:"[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."]}),` +`,e.jsx(s.p,{children:"`*"}),` +`,e.jsxs(s.p,{children:["Assuming you've setup your controlling Actor with the ",e.jsx(s.code,{children:"[Sequence_Pawn_Component_BP]"}),` +The sequence pawn component has functions to do the following:`]}),` +`,e.jsx(s.p,{children:"Setup Sequence (sets up the sequence based systems), requires playerController input"}),` +`,e.jsx(s.p,{children:"Show GUI Shows the UI"}),` +`,e.jsx(s.p,{children:"Hide GUI Hides the UI"}),` +`,e.jsx(s.p,{children:"GUI Visible Simple Visibility test for the UI"}),` +`,e.jsx(s.p,{children:"Switch Platform (Switches which mode the UI will be in and how it will be displayed)"}),` +`,e.jsx(s.p,{children:"Note: this doesn't rotate the application into any one view it just make the UI responsive to that type of view."}),` +`,e.jsx(s.p,{children:"Modes:"}),` +`,e.jsxs(s.ul,{children:[` +`,e.jsx(s.li,{children:"Desktop (default)"}),` +`,e.jsx(s.li,{children:"Mobile Portrait (Custom built for portrait mode reducing the X width where ever possible)"}),` +`,e.jsx(s.li,{children:"Mobile Landscape"}),` +`]}),` +`,e.jsx(s.p,{children:"`*"}),` +`,e.jsxs(s.h3,{id:"sequence-unreal-api",children:["Sequence Unreal API",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-unreal-api",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` +`,e.jsx(s.p,{children:"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"}),` +`,e.jsx(s.p,{children:"The SDK automatically stores credentials on disk in the following cases:"}),` +`,e.jsxs(s.ol,{children:[` +`,e.jsx(s.li,{children:"On Successful Auth"}),` +`,e.jsx(s.li,{children:"On Successful Registering of a session"}),` +`,e.jsx(s.li,{children:"On Successful Closing of a session"}),` +`]}),` +`,e.jsxs(s.h3,{id:"usequencewallet",children:["USequenceWallet",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#usequencewallet",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` +`,e.jsxs(s.p,{children:["To get a ",e.jsx(s.code,{children:"USequenceWallet"})," call either:"]}),` +`,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:"USequenceWallet::Make(FCredentials_BE CredentialsIn)"})}),` +`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"USequenceWallet::Make(FCredentials_BE CredentialsIn, FString ProviderURL)"})})]})}),` +`,e.jsxs(s.p,{children:["Where the Credentials you give are the credentials you received from the UAuthenticator when ",e.jsx(s.code,{children:"[AuthSuccess]"})," fires, or you can use the call Auth->",e.jsx(s.code,{children:"[GetStoredCredentials]"}),"(), where Auth is of the type ",e.jsx(s.code,{children:"[UAuthenticator]"}),". If you are using StoredCredentials please ensure they are valid by checking the wrapping Structs FStoredCredentials_BE.GetValid() flag returned from ",e.jsx(s.code,{children:"[GetStoredCredentials]"}),", the providerURL is the url of the provider you wish to use."]}),` +`,e.jsxs(s.p,{children:["Once you have your ",e.jsx(s.code,{children:"[USequenceWallet]"})," UObject please ensure that you've registered the session using ",e.jsx(s.code,{children:"[RegisterSession]"})," before attempting to make other calls to the API."]}),` +`,e.jsxs(s.h3,{id:"sequence-api-methods",children:["Sequence API Methods",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-api-methods",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` +`,e.jsx(s.p,{children:"We make use of TFunctions with some callbacks:"}),` +`,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,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"TSuccessCallback"})}),` +`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" TFunction"}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:""}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" OnResponse "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" `[Capturable "}),e.jsx(s.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"variables"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"]`("}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:" FString"}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:" Response"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` +`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"{"})}),` +`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"//callback body where we can process Response"})}),` +`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"};"})}),` +`,e.jsx(s.span,{className:"line","data-empty-line":!0,children:" "}),` +`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"FFailureCallback"})}),` +`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" TFunction"}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:""}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" OnFailureTest "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" `[Capturable "}),e.jsx(s.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"variables"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"]`("}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:" FSequenceError"}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:" Error"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` +`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"{"})}),` +`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"//callback body where we can process Error"})}),` +`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"};"})})]})}),` +`,e.jsxs(s.p,{children:["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 ",e.jsx(s.code,{children:"[UAuthenticator.h/cpp]"})]})]})}function t(i={}){const{wrapper:s}={...r(),...i.components};return s?e.jsx(s,{...i,children:e.jsx(n,{...i})}):n(i)}export{t as default,a as frontmatter}; diff --git a/assets/05-contracts-Dj4y6dqe.js b/assets/05-contracts-DVDi4fXD.js similarity index 99% rename from assets/05-contracts-Dj4y6dqe.js rename to assets/05-contracts-DVDi4fXD.js index e474b9cfb1..4d60e88006 100644 --- a/assets/05-contracts-Dj4y6dqe.js +++ b/assets/05-contracts-DVDi4fXD.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.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{u as r,j as e}from"./index-CchMGs7j.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/05-custom-connectors-D8GReivT.js b/assets/05-custom-connectors-Bd4W47Wz.js similarity index 99% rename from assets/05-custom-connectors-D8GReivT.js rename to assets/05-custom-connectors-Bd4W47Wz.js index 9cc0b8510a..5dafd5f0c1 100644 --- a/assets/05-custom-connectors-D8GReivT.js +++ b/assets/05-custom-connectors-Bd4W47Wz.js @@ -1,4 +1,4 @@ -import{u as r,j as s}from"./index-BXOUdEEZ.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{u as r,j as s}from"./index-CchMGs7j.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/05-fiat-on-ramps-DuzzmOgZ.js b/assets/05-fiat-on-ramps-CbgCC_Wz.js similarity index 96% rename from assets/05-fiat-on-ramps-DuzzmOgZ.js rename to assets/05-fiat-on-ramps-CbgCC_Wz.js index 2868e3e714..d9b1145566 100644 --- a/assets/05-fiat-on-ramps-DuzzmOgZ.js +++ b/assets/05-fiat-on-ramps-CbgCC_Wz.js @@ -1,4 +1,4 @@ -import{u as t,j as e}from"./index-BXOUdEEZ.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{u as t,j as e}from"./index-CchMGs7j.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/05-get-user-activities-BjO2VX3q.js b/assets/05-get-user-activities-DkfpsBW4.js similarity index 99% rename from assets/05-get-user-activities-BjO2VX3q.js rename to assets/05-get-user-activities-DkfpsBW4.js index 2f597c6597..01086f3f06 100644 --- a/assets/05-get-user-activities-BjO2VX3q.js +++ b/assets/05-get-user-activities-DkfpsBW4.js @@ -1,4 +1,4 @@ -import{u as c,j as s}from"./index-BXOUdEEZ.js";import{b as a,T as r,a as n}from"./TabGroup-CR9eTTBb.js";const h=void 0;function l(i){const e={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...c(),...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{u as c,j as s}from"./index-CchMGs7j.js";import{b as a,T as r,a as n}from"./TabGroup-4xq3SqP5.js";const h=void 0;function l(i){const e={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...c(),...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.jsx(e.p,{children:"Retrieve activity data for a specific user, including orders and trades."}),` `,s.jsxs(e.ul,{children:[` `,s.jsx(e.li,{children:"Request: POST /api/Marketplace/GetUserActivities"}),` diff --git a/assets/05-modules-and-updates-9zZOEDsr.js b/assets/05-modules-and-updates-BZ-acVOs.js similarity index 99% rename from assets/05-modules-and-updates-9zZOEDsr.js rename to assets/05-modules-and-updates-BZ-acVOs.js index d1d9e17bc1..baf6da75eb 100644 --- a/assets/05-modules-and-updates-9zZOEDsr.js +++ b/assets/05-modules-and-updates-BZ-acVOs.js @@ -1,4 +1,4 @@ -import{u as a,j as e}from"./index-BXOUdEEZ.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{u as a,j as e}from"./index-CchMGs7j.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/04-platforms-L-ay0RTN.js b/assets/05-platforms-BswQsHZ_.js similarity index 97% rename from assets/04-platforms-L-ay0RTN.js rename to assets/05-platforms-BswQsHZ_.js index 8619b38045..10739dc8e5 100644 --- a/assets/04-platforms-L-ay0RTN.js +++ b/assets/05-platforms-BswQsHZ_.js @@ -1,4 +1,4 @@ -import{u as l,j as e}from"./index-BXOUdEEZ.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{u as l,j as e}from"./index-CchMGs7j.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/02-quickstart",children:"Build With Sequence"})," to get started."]}),` diff --git a/assets/05-send-transaction-B0MAcXDd.js b/assets/05-send-transaction-B-8IwTpV.js similarity index 98% rename from assets/05-send-transaction-B0MAcXDd.js rename to assets/05-send-transaction-B-8IwTpV.js index ca7c9c591c..17bcbad926 100644 --- a/assets/05-send-transaction-B0MAcXDd.js +++ b/assets/05-send-transaction-B-8IwTpV.js @@ -1,4 +1,4 @@ -import{u as a,j as s}from"./index-BXOUdEEZ.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{u as a,j as s}from"./index-CchMGs7j.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/05-send-transaction-ZzzFqw8C.js b/assets/05-send-transaction-BLPMy39e.js similarity index 98% rename from assets/05-send-transaction-ZzzFqw8C.js rename to assets/05-send-transaction-BLPMy39e.js index ca7c9c591c..17bcbad926 100644 --- a/assets/05-send-transaction-ZzzFqw8C.js +++ b/assets/05-send-transaction-BLPMy39e.js @@ -1,4 +1,4 @@ -import{u as a,j as s}from"./index-BXOUdEEZ.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{u as a,j as s}from"./index-CchMGs7j.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/05-unique-tokens-B6aws6XW.js b/assets/05-unique-tokens-BBoAQBrC.js similarity index 99% rename from assets/05-unique-tokens-B6aws6XW.js rename to assets/05-unique-tokens-BBoAQBrC.js index a3a05b0000..e904cfcadf 100644 --- a/assets/05-unique-tokens-B6aws6XW.js +++ b/assets/05-unique-tokens-BBoAQBrC.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-BXOUdEEZ.js";const a={sidebar_label:"All unique tokens in a contract",title:"Tokens in a contract",description:"undefined"};function i(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",...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{u as l,j as s}from"./index-CchMGs7j.js";const a={sidebar_label:"All unique tokens in a contract",title:"Tokens in a contract",description:"undefined"};function i(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",...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.aside,{"data-callout":"warning",children:[s.jsx(e.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),s.jsxs(e.p,{children:["Our ",s.jsx(e.strong,{children:"Indexer"})," service is now managed through ",s.jsx(e.strong,{children:s.jsx(e.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),s.jsx(e.p,{children:s.jsxs(e.a,{href:"https://sequence.build",children:["Get started with the ",s.jsx(e.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` `,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."}),` diff --git a/assets/05-unique-tokens-BvCSK8V2.js b/assets/05-unique-tokens-Wt-yZ8iO.js similarity index 75% rename from assets/05-unique-tokens-BvCSK8V2.js rename to assets/05-unique-tokens-Wt-yZ8iO.js index 925cada3b6..dadfca3443 100644 --- a/assets/05-unique-tokens-BvCSK8V2.js +++ b/assets/05-unique-tokens-Wt-yZ8iO.js @@ -1 +1 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/05-validation-DVqBruW7.js b/assets/05-validation-D6nAm2G3.js similarity index 99% rename from assets/05-validation-DVqBruW7.js rename to assets/05-validation-D6nAm2G3.js index afc4974154..5f15e8a7b7 100644 --- a/assets/05-validation-DVqBruW7.js +++ b/assets/05-validation-D6nAm2G3.js @@ -1,4 +1,4 @@ -import{u as n,j as s}from"./index-BXOUdEEZ.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{u as n,j as s}from"./index-CchMGs7j.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/05-web3-onboard-CVawCyHG.js b/assets/05-web3-onboard-B4-r8qZO.js similarity index 99% rename from assets/05-web3-onboard-CVawCyHG.js rename to assets/05-web3-onboard-B4-r8qZO.js index f0405bcf49..e1a57d7f51 100644 --- a/assets/05-web3-onboard-CVawCyHG.js +++ b/assets/05-web3-onboard-B4-r8qZO.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.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{u as i,j as e}from"./index-CchMGs7j.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/05-write-to-blockchain-VezosJxu.js b/assets/05-write-to-blockchain-DCBcfOKI.js similarity index 99% rename from assets/05-write-to-blockchain-VezosJxu.js rename to assets/05-write-to-blockchain-DCBcfOKI.js index 45f871d01c..83fb3daea3 100644 --- a/assets/05-write-to-blockchain-VezosJxu.js +++ b/assets/05-write-to-blockchain-DCBcfOKI.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.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{u as i,j as e}from"./index-CchMGs7j.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/assets/06-fiat-on-ramps-CSS08Lfl.js b/assets/06-fiat-on-ramps-l3lSSIK6.js similarity index 96% rename from assets/06-fiat-on-ramps-CSS08Lfl.js rename to assets/06-fiat-on-ramps-l3lSSIK6.js index 2868e3e714..d9b1145566 100644 --- a/assets/06-fiat-on-ramps-CSS08Lfl.js +++ b/assets/06-fiat-on-ramps-l3lSSIK6.js @@ -1,4 +1,4 @@ -import{u as t,j as e}from"./index-BXOUdEEZ.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{u as t,j as e}from"./index-CchMGs7j.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/07-key-management-DUbSlzfo.js b/assets/06-key-management-BRNfS8bX.js similarity index 98% rename from assets/07-key-management-DUbSlzfo.js rename to assets/06-key-management-BRNfS8bX.js index 39a882e1f8..c6ee742704 100644 --- a/assets/07-key-management-DUbSlzfo.js +++ b/assets/06-key-management-BRNfS8bX.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.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{u as i,j as e}from"./index-CchMGs7j.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/06-main-module-upgradeable-DY1GyouI.js b/assets/06-main-module-upgradeable-CwFDq2xw.js similarity index 90% rename from assets/06-main-module-upgradeable-DY1GyouI.js rename to assets/06-main-module-upgradeable-CwFDq2xw.js index 6734eac358..7e718d576e 100644 --- a/assets/06-main-module-upgradeable-DY1GyouI.js +++ b/assets/06-main-module-upgradeable-CwFDq2xw.js @@ -1 +1 @@ -import{u as i,j as t}from"./index-BXOUdEEZ.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{u as i,j as t}from"./index-CchMGs7j.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/06-orderbook-transactions-zkP6j4hb.js b/assets/06-orderbook-transactions-BeUtSFOp.js similarity index 99% rename from assets/06-orderbook-transactions-zkP6j4hb.js rename to assets/06-orderbook-transactions-BeUtSFOp.js index c8d30a1456..c49dd054c6 100644 --- a/assets/06-orderbook-transactions-zkP6j4hb.js +++ b/assets/06-orderbook-transactions-BeUtSFOp.js @@ -1,4 +1,4 @@ -import{u as i,j as s,e as l}from"./index-BXOUdEEZ.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{u as i,j as s,e as l}from"./index-CchMGs7j.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"}),` @@ -36,7 +36,7 @@ to accomplish this `,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:" signer"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" wallet."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"getSigner"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"421614"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"); "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// on arbitrum-sepolia"})]}),` `,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" sequenceMarketInterface"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("})]}),` -`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "function createRequest(RequestParams calldata request) external nonReentrant returns (uint256 requestId)"'})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "function createRequest(tuple(bool isListing, bool isERC1155, address tokenContract, uint256 tokenId, uint256 quantity, uint96 expiry, address currency, uint256 pricePerToken)) external nonReentrant returns (uint256 requestId)"'})}),` `,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})}),` `,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" erc1155Interface"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` diff --git a/assets/06-packaging-DAGyVEwf.js b/assets/06-packaging-DAGyVEwf.js new file mode 100644 index 0000000000..fc000ccedc --- /dev/null +++ b/assets/06-packaging-DAGyVEwf.js @@ -0,0 +1,32 @@ +import{u as o,j as e}from"./index-CchMGs7j.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"})}),` +`,e.jsx(n.li,{children:e.jsx(n.a,{href:"https://docs.unrealengine.com/4.27/en-US/SharingAndReleasing/Mobile/Android/PackagingAndroidProject/",children:"Android"})}),` +`,e.jsx(n.li,{children:e.jsx(n.a,{href:"https://docs.unrealengine.com/5.0/en-US/packaging-ios-projects-in-unreal-engine/",children:"iOS"})}),` +`]}),` +`,e.jsxs(n.h3,{id:"google-sso-setup",children:["Google SSO Setup",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#google-sso-setup",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` +`,e.jsxs(n.p,{children:["In order to be able to properly use Google Auth, create and place the Keystore file by following ",e.jsx(n.a,{href:"https://docs.unrealengine.com/5.1/en-US/signing-android-projects-for-release-on-the-google-play-store-with-unreal-engine/",children:"these instructions"}),"."]}),` +`,e.jsxs(n.p,{children:["You will also need to generate an ",e.jsx(n.code,{children:"[Android client ID]"})," and a ",e.jsx(n.code,{children:"[Web Application client ID]"})," for your application, as well as place the ",e.jsx(n.code,{children:"[Web Application client ID]"})," in the ",e.jsx(n.code,{children:"Config/Config.h"})," ",e.jsx(n.code,{children:"FAuthenticatorConfig.GoogleClientID"})," field."]}),` +`,e.jsxs(n.p,{children:["Refer to ",e.jsx(n.a,{href:"https://developers.google.com/identity/one-tap/android/get-started#api-console",children:"these docs"})," to generate ",e.jsx(n.code,{children:"[Android client ID]"})," and ",e.jsx(n.code,{children:"[Web Application client ID]"}),"."]}),` +`,e.jsxs(n.p,{children:[e.jsx(n.a,{href:"https://developers.google.com/android/guides/client-auth",children:"This guide"})," helps explain how to collect SHA-1 key fingerprints for the ",e.jsx(n.code,{children:"[Android client ID]"}),"."]}),` +`,e.jsxs(n.h3,{id:"ios",children:["iOS",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#ios",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` +`,e.jsxs(n.p,{children:["For iOS apps you also need to setup provisioning, ",e.jsx(n.a,{href:"https://docs.unrealengine.com/5.1/en-US/setting-up-ios-tvos-and-ipados-provisioning-profiles-and-signing-certificates-for-unreal-engine-projects/",children:"following these docs"}),"."]}),` +`,e.jsxs(n.h3,{id:"unreal-and-xcode-specifics",children:["Unreal and Xcode Specifics",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#unreal-and-xcode-specifics",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` +`,e.jsx(n.p,{children:"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"}),` +`,e.jsxs(n.ol,{children:[` +`,e.jsx(n.li,{children:"After packaging the project in Unreal, open the Xcode project (Sequence-unreal folder -> Intermediate -> ProjectFilesIOS -> SequenceUnreal.xcodeproj)"}),` +`,e.jsx(n.li,{children:"Click on the project name on the left hand side to open up project settings"}),` +`,e.jsx(n.li,{children:"Click the Build Phase Tab"}),` +`,e.jsx(n.li,{children:'Click on the "+" icon at the top left'}),` +`,e.jsx(n.li,{children:"Select Run Script"}),` +`,e.jsx(n.li,{children:"Drag the new run script to one below from the last item in the phase list"}),` +`,e.jsx(n.li,{children:"Expand the run script"}),` +`,e.jsxs(n.li,{children:["In the script box, add the following command: ",e.jsx(n.code,{children:"xattr -cr /path-to-your-project/sequence-unreal/Binaries/IOS/Payload/SequenceUnreal.app"})]}),` +`,e.jsx(n.li,{children:"Click on the Build Settings tab"}),` +`,e.jsx(n.li,{children:"Click on each item under the Architectures header that contains macOS and hit the delete key"}),` +`,e.jsx(n.li,{children:"Click on the General tab"}),` +`,e.jsx(n.li,{children:"Click on Mac and Applevision Pro under supported destinations and hit the delete key"}),` +`,e.jsx(n.li,{children:"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)"}),` +`,e.jsx(n.li,{children:"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."}),` +`]})]})}function s(i={}){const{wrapper:n}={...o(),...i.components};return n?e.jsx(n,{...i,children:e.jsx(t,{...i})}):t(i)}export{s as default,a as frontmatter}; diff --git a/assets/06-read-from-blockchain-73BXkFTH.js b/assets/06-read-from-blockchain-DEKqDbrP.js similarity index 97% rename from assets/06-read-from-blockchain-73BXkFTH.js rename to assets/06-read-from-blockchain-DEKqDbrP.js index 24199609d3..162002ef2d 100644 --- a/assets/06-read-from-blockchain-73BXkFTH.js +++ b/assets/06-read-from-blockchain-DEKqDbrP.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.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.p,{children:"#TODO Add code tabs"}),` +import{u as r,j as e}from"./index-CchMGs7j.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.p,{children:"#TODO Add code tabs"}),` `,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/01-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"]}),"."]}),` diff --git a/assets/06-send-erc20-C1l4rkxy.js b/assets/06-send-erc20-BNf9h1bS.js similarity index 99% rename from assets/06-send-erc20-C1l4rkxy.js rename to assets/06-send-erc20-BNf9h1bS.js index 7b7729969e..95e664fbe1 100644 --- a/assets/06-send-erc20-C1l4rkxy.js +++ b/assets/06-send-erc20-BNf9h1bS.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-BXOUdEEZ.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{u as l,j as s}from"./index-CchMGs7j.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/06-send-erc20-XQSQj5Q8.js b/assets/06-send-erc20-C1S52TMX.js similarity index 99% rename from assets/06-send-erc20-XQSQj5Q8.js rename to assets/06-send-erc20-C1S52TMX.js index 7b7729969e..95e664fbe1 100644 --- a/assets/06-send-erc20-XQSQj5Q8.js +++ b/assets/06-send-erc20-C1S52TMX.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-BXOUdEEZ.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{u as l,j as s}from"./index-CchMGs7j.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/06-token-contract-history-BvCSK8V2.js b/assets/06-token-contract-history-Wt-yZ8iO.js similarity index 75% rename from assets/06-token-contract-history-BvCSK8V2.js rename to assets/06-token-contract-history-Wt-yZ8iO.js index 925cada3b6..dadfca3443 100644 --- a/assets/06-token-contract-history-BvCSK8V2.js +++ b/assets/06-token-contract-history-Wt-yZ8iO.js @@ -1 +1 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/06-tokens-DFX9gYW5.js b/assets/06-tokens-DONJK441.js similarity index 98% rename from assets/06-tokens-DFX9gYW5.js rename to assets/06-tokens-DONJK441.js index 4c6138f137..aede12f516 100644 --- a/assets/06-tokens-DFX9gYW5.js +++ b/assets/06-tokens-DONJK441.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.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{u as r,j as e}from"./index-CchMGs7j.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/06-transaction-receipts-xKZlIoFb.js b/assets/06-transaction-receipts-CFVZYVqh.js similarity index 99% rename from assets/06-transaction-receipts-xKZlIoFb.js rename to assets/06-transaction-receipts-CFVZYVqh.js index 9adbc6eb70..1ea41dad38 100644 --- a/assets/06-transaction-receipts-xKZlIoFb.js +++ b/assets/06-transaction-receipts-CFVZYVqh.js @@ -1,4 +1,4 @@ -import{u as n,j as s}from"./index-BXOUdEEZ.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{u as n,j as s}from"./index-CchMGs7j.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/06-transation-history-token-contract-CwEE_wwj.js b/assets/06-transation-history-token-contract-Dkspf4AH.js similarity index 99% rename from assets/06-transation-history-token-contract-CwEE_wwj.js rename to assets/06-transation-history-token-contract-Dkspf4AH.js index 10bbed39ae..786e9ef9a1 100644 --- a/assets/06-transation-history-token-contract-CwEE_wwj.js +++ b/assets/06-transation-history-token-contract-Dkspf4AH.js @@ -1,4 +1,4 @@ -import{u as i,j as s}from"./index-BXOUdEEZ.js";const a={sidebar_label:"Token contract transaction history",title:"Contract token history",description:"undefined"};function r(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:"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{u as i,j as s}from"./index-CchMGs7j.js";const a={sidebar_label:"Token contract transaction history",title:"Contract token history",description:"undefined"};function r(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:"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.aside,{"data-callout":"warning",children:[s.jsx(e.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),s.jsxs(e.p,{children:["Our ",s.jsx(e.strong,{children:"Indexer"})," service is now managed through ",s.jsx(e.strong,{children:s.jsx(e.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),s.jsx(e.p,{children:s.jsxs(e.a,{href:"https://sequence.build",children:["Get started with the ",s.jsx(e.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` `,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. diff --git a/assets/06-web3-react-v6-CaY2pWoi.js b/assets/06-web3-react-v6-i-_P8qDI.js similarity index 99% rename from assets/06-web3-react-v6-CaY2pWoi.js rename to assets/06-web3-react-v6-i-_P8qDI.js index 368bb38584..cdfcd9244d 100644 --- a/assets/06-web3-react-v6-CaY2pWoi.js +++ b/assets/06-web3-react-v6-i-_P8qDI.js @@ -1,4 +1,4 @@ -import{u as a,j as e}from"./index-BXOUdEEZ.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{u as a,j as e}from"./index-CchMGs7j.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/06-key-management-CAyKVybh.js b/assets/07-key-management-DHKyIl2b.js similarity index 98% rename from assets/06-key-management-CAyKVybh.js rename to assets/07-key-management-DHKyIl2b.js index 39a882e1f8..c6ee742704 100644 --- a/assets/06-key-management-CAyKVybh.js +++ b/assets/07-key-management-DHKyIl2b.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.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{u as i,j as e}from"./index-CchMGs7j.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/07-native-network-balance-CvWur8gO.js b/assets/07-native-network-balance-BS__wyoA.js similarity index 99% rename from assets/07-native-network-balance-CvWur8gO.js rename to assets/07-native-network-balance-BS__wyoA.js index c7da823ec5..5a00c34bd3 100644 --- a/assets/07-native-network-balance-CvWur8gO.js +++ b/assets/07-native-network-balance-BS__wyoA.js @@ -1,4 +1,4 @@ -import{u as a,j as s}from"./index-BXOUdEEZ.js";import{b as c,T as i,a as l}from"./TabGroup-CR9eTTBb.js";const o={title:"Native network balances (ie. ETH, MATIC, etc.)",description:"undefined"};function r(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",...a(),...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{u as a,j as s}from"./index-CchMGs7j.js";import{b as c,T as i,a as l}from"./TabGroup-4xq3SqP5.js";const o={title:"Native network balances (ie. ETH, MATIC, etc.)",description:"undefined"};function r(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",...a(),...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.aside,{"data-callout":"info",children:[s.jsx(e.p,{children:s.jsx(e.a,{href:"https://sequence.build",children:"Introducing the Sequence Builder"})}),s.jsxs(e.p,{children:["Our ",s.jsx(e.strong,{children:"Indexer"})," service is now managed through ",s.jsx(e.strong,{children:s.jsx(e.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),s.jsx(e.p,{children:s.jsxs(e.a,{href:"https://sequence.build",children:["Get started with the ",s.jsx(e.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` `,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:"]})}),` diff --git a/assets/07-native-network-balance-Dnqc7LbR.js b/assets/07-native-network-balance-Cdn-RXjO.js similarity index 99% rename from assets/07-native-network-balance-Dnqc7LbR.js rename to assets/07-native-network-balance-Cdn-RXjO.js index 2b4a32e1f6..32ec528a5c 100644 --- a/assets/07-native-network-balance-Dnqc7LbR.js +++ b/assets/07-native-network-balance-Cdn-RXjO.js @@ -1,4 +1,4 @@ -import{u as i,j as s}from"./index-BXOUdEEZ.js";const r={sidebar_label:"Native network balance",title:"Native network balances (ie. ETH, MATIC, etc.)",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:"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{u as i,j as s}from"./index-CchMGs7j.js";const r={sidebar_label:"Native network balance",title:"Native network balances (ie. ETH, MATIC, etc.)",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:"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.aside,{"data-callout":"warning",children:[s.jsx(e.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),s.jsxs(e.p,{children:["Our ",s.jsx(e.strong,{children:"Indexer"})," service is now managed through ",s.jsx(e.strong,{children:s.jsx(e.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),s.jsx(e.p,{children:s.jsxs(e.a,{href:"https://sequence.build",children:["Get started with the ",s.jsx(e.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` `,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:"]})}),` diff --git a/assets/07-send-erc721-98x3-w4n.js b/assets/07-send-erc721-CsiV7Skt.js similarity index 99% rename from assets/07-send-erc721-98x3-w4n.js rename to assets/07-send-erc721-CsiV7Skt.js index 904be8148c..163f160727 100644 --- a/assets/07-send-erc721-98x3-w4n.js +++ b/assets/07-send-erc721-CsiV7Skt.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-BXOUdEEZ.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{u as l,j as s}from"./index-CchMGs7j.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/07-send-erc721-YLiMwPp8.js b/assets/07-send-erc721-DoTiPEJu.js similarity index 99% rename from assets/07-send-erc721-YLiMwPp8.js rename to assets/07-send-erc721-DoTiPEJu.js index 904be8148c..163f160727 100644 --- a/assets/07-send-erc721-YLiMwPp8.js +++ b/assets/07-send-erc721-DoTiPEJu.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-BXOUdEEZ.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{u as l,j as s}from"./index-CchMGs7j.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/07-sign-messages-Cv6lHzv8.js b/assets/07-sign-messages-D8skSErh.js similarity index 97% rename from assets/07-sign-messages-Cv6lHzv8.js rename to assets/07-sign-messages-D8skSErh.js index 482957d50c..c2de376fff 100644 --- a/assets/07-sign-messages-Cv6lHzv8.js +++ b/assets/07-sign-messages-D8skSErh.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.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{u as i,j as e}from"./index-CchMGs7j.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/07-transaction-encoding-E5kTMKdL.js b/assets/07-transaction-encoding-NtDrHizW.js similarity index 89% rename from assets/07-transaction-encoding-E5kTMKdL.js rename to assets/07-transaction-encoding-NtDrHizW.js index 5e6c56251c..7ed0dfca37 100644 --- a/assets/07-transaction-encoding-E5kTMKdL.js +++ b/assets/07-transaction-encoding-NtDrHizW.js @@ -1 +1 @@ -import{u as a,j as t}from"./index-BXOUdEEZ.js";const r={title:"Transaction encoding",description:"undefined"};function o(e){const n={a:"a",div:"div",h1:"h1",header:"header",...a(),...e.components};return t.jsx(n.header,{children:t.jsxs(n.h1,{id:"transaction-encoding",children:["Transaction encoding",t.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#transaction-encoding",children:t.jsx(n.div,{"data-autolink-icon":!0})})]})})}function d(e={}){const{wrapper:n}={...a(),...e.components};return n?t.jsx(n,{...e,children:t.jsx(o,{...e})}):o(e)}export{d as default,r as frontmatter}; +import{u as a,j as t}from"./index-CchMGs7j.js";const r={title:"Transaction encoding",description:"undefined"};function o(e){const n={a:"a",div:"div",h1:"h1",header:"header",...a(),...e.components};return t.jsx(n.header,{children:t.jsxs(n.h1,{id:"transaction-encoding",children:["Transaction encoding",t.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#transaction-encoding",children:t.jsx(n.div,{"data-autolink-icon":!0})})]})})}function d(e={}){const{wrapper:n}={...a(),...e.components};return n?t.jsx(n,{...e,children:t.jsx(o,{...e})}):o(e)}export{d as default,r as frontmatter}; diff --git a/assets/07-web3modal-B_MxMDHV.js b/assets/07-web3modal-D_QEo_Cm.js similarity index 96% rename from assets/07-web3modal-B_MxMDHV.js rename to assets/07-web3modal-D_QEo_Cm.js index dcd877d527..a3552e60be 100644 --- a/assets/07-web3modal-B_MxMDHV.js +++ b/assets/07-web3modal-D_QEo_Cm.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.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{u as i,j as e}from"./index-CchMGs7j.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/08-FAQ-DepmDNn0.js b/assets/08-FAQ-BHeUJunZ.js similarity index 99% rename from assets/08-FAQ-DepmDNn0.js rename to assets/08-FAQ-BHeUJunZ.js index 71473b37b0..9329730652 100644 --- a/assets/08-FAQ-DepmDNn0.js +++ b/assets/08-FAQ-BHeUJunZ.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.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{u as r,j as e}from"./index-CchMGs7j.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/08-deploy-contracts-DAG8jP33.js b/assets/08-deploy-contracts-LwLe-vTP.js similarity index 98% rename from assets/08-deploy-contracts-DAG8jP33.js rename to assets/08-deploy-contracts-LwLe-vTP.js index 4f9081d6a2..adfdc71d63 100644 --- a/assets/08-deploy-contracts-DAG8jP33.js +++ b/assets/08-deploy-contracts-LwLe-vTP.js @@ -1,4 +1,4 @@ -import{u as t,j as e}from"./index-BXOUdEEZ.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{u as t,j as e}from"./index-CchMGs7j.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/08-metadata-spam-help-DNjsN4I2.js b/assets/08-metadata-spam-help-DNjsN4I2.js new file mode 100644 index 0000000000..dadfca3443 --- /dev/null +++ b/assets/08-metadata-spam-help-DNjsN4I2.js @@ -0,0 +1 @@ +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/08-metadata-spam-help-K-jqvWgl.js b/assets/08-metadata-spam-help-K-jqvWgl.js deleted file mode 100644 index 925cada3b6..0000000000 --- a/assets/08-metadata-spam-help-K-jqvWgl.js +++ /dev/null @@ -1 +0,0 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/08-metadata-tips-BIzSqYlx.js b/assets/08-metadata-tips-BWKhXYEP.js similarity index 97% rename from assets/08-metadata-tips-BIzSqYlx.js rename to assets/08-metadata-tips-BWKhXYEP.js index 87746e258c..e8e35f6a93 100644 --- a/assets/08-metadata-tips-BIzSqYlx.js +++ b/assets/08-metadata-tips-BWKhXYEP.js @@ -1,4 +1,4 @@ -import{u as s,j as e}from"./index-BXOUdEEZ.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{u as s,j as e}from"./index-CchMGs7j.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/08-send-erc1155-BPo2Lx2i.js b/assets/08-send-erc1155-CEo8sbIR.js similarity index 99% rename from assets/08-send-erc1155-BPo2Lx2i.js rename to assets/08-send-erc1155-CEo8sbIR.js index 81711c07b9..0b48918e51 100644 --- a/assets/08-send-erc1155-BPo2Lx2i.js +++ b/assets/08-send-erc1155-CEo8sbIR.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-BXOUdEEZ.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{u as l,j as s}from"./index-CchMGs7j.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/08-send-erc1155-CBTp7FaY.js b/assets/08-send-erc1155-D40DRcgC.js similarity index 99% rename from assets/08-send-erc1155-CBTp7FaY.js rename to assets/08-send-erc1155-D40DRcgC.js index 81711c07b9..0b48918e51 100644 --- a/assets/08-send-erc1155-CBTp7FaY.js +++ b/assets/08-send-erc1155-D40DRcgC.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-BXOUdEEZ.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{u as l,j as s}from"./index-CchMGs7j.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/08-signature-encoding-BpIeLhrD.js b/assets/08-signature-encoding-BKrZASNJ.js similarity index 99% rename from assets/08-signature-encoding-BpIeLhrD.js rename to assets/08-signature-encoding-BKrZASNJ.js index a5360cd65e..98e77d1f7a 100644 --- a/assets/08-signature-encoding-BpIeLhrD.js +++ b/assets/08-signature-encoding-BKrZASNJ.js @@ -1,4 +1,4 @@ -import{u as a,j as s}from"./index-BXOUdEEZ.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{u as a,j as s}from"./index-CchMGs7j.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/09-nested-transaction-batching-u-DqvEw7.js b/assets/09-nested-transaction-batching-DTwnnEId.js similarity index 89% rename from assets/09-nested-transaction-batching-u-DqvEw7.js rename to assets/09-nested-transaction-batching-DTwnnEId.js index a2d9aa1f00..b773b12fc2 100644 --- a/assets/09-nested-transaction-batching-u-DqvEw7.js +++ b/assets/09-nested-transaction-batching-DTwnnEId.js @@ -1 +1 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.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 o(t={}){const{wrapper:n}={...i(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(a,{...t})}):a(t)}export{o as default,s as frontmatter}; +import{u as i,j as e}from"./index-CchMGs7j.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 o(t={}){const{wrapper:n}={...i(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(a,{...t})}):a(t)}export{o as default,s as frontmatter}; diff --git a/assets/09-send-batch-transactions-Do5fZWQa.js b/assets/09-send-batch-transactions-BVNHKRSw.js similarity index 99% rename from assets/09-send-batch-transactions-Do5fZWQa.js rename to assets/09-send-batch-transactions-BVNHKRSw.js index 4b8999c363..d8b6d93f55 100644 --- a/assets/09-send-batch-transactions-Do5fZWQa.js +++ b/assets/09-send-batch-transactions-BVNHKRSw.js @@ -1,4 +1,4 @@ -import{u as r,j as s}from"./index-BXOUdEEZ.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{u as r,j as s}from"./index-CchMGs7j.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/09-send-batch-transactions-YOyMzkjj.js b/assets/09-send-batch-transactions-HYpwCDES.js similarity index 99% rename from assets/09-send-batch-transactions-YOyMzkjj.js rename to assets/09-send-batch-transactions-HYpwCDES.js index 4b8999c363..d8b6d93f55 100644 --- a/assets/09-send-batch-transactions-YOyMzkjj.js +++ b/assets/09-send-batch-transactions-HYpwCDES.js @@ -1,4 +1,4 @@ -import{u as r,j as s}from"./index-BXOUdEEZ.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{u as r,j as s}from"./index-CchMGs7j.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/09-wallet-ui-1Oq8sjqr.js b/assets/09-wallet-ui-CGHbjSvR.js similarity index 99% rename from assets/09-wallet-ui-1Oq8sjqr.js rename to assets/09-wallet-ui-CGHbjSvR.js index 2a315fbccf..38245da99d 100644 --- a/assets/09-wallet-ui-1Oq8sjqr.js +++ b/assets/09-wallet-ui-CGHbjSvR.js @@ -1,4 +1,4 @@ -import{u as s,j as e}from"./index-BXOUdEEZ.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{u as s,j as e}from"./index-CchMGs7j.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/10-building-backends-Co9Q_2YW.js b/assets/10-building-backends-D00hi_S2.js similarity index 98% rename from assets/10-building-backends-Co9Q_2YW.js rename to assets/10-building-backends-D00hi_S2.js index 43f9c3dc81..86f0e00d0c 100644 --- a/assets/10-building-backends-Co9Q_2YW.js +++ b/assets/10-building-backends-D00hi_S2.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.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{u as i,j as e}from"./index-CchMGs7j.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/10-building-backends-3_wpH69z.js b/assets/10-building-backends-DQ9yfDdo.js similarity index 98% rename from assets/10-building-backends-3_wpH69z.js rename to assets/10-building-backends-DQ9yfDdo.js index 43f9c3dc81..86f0e00d0c 100644 --- a/assets/10-building-backends-3_wpH69z.js +++ b/assets/10-building-backends-DQ9yfDdo.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.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{u as i,j as e}from"./index-CchMGs7j.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/10-guest-module-1V98_VsT.js b/assets/10-guest-module-D-VbStHJ.js similarity index 90% rename from assets/10-guest-module-1V98_VsT.js rename to assets/10-guest-module-D-VbStHJ.js index 411bbf2158..96898d3409 100644 --- a/assets/10-guest-module-1V98_VsT.js +++ b/assets/10-guest-module-D-VbStHJ.js @@ -1 +1 @@ -import{u as o,j as t}from"./index-BXOUdEEZ.js";const r={title:"GuestModule and on-demand deployment",description:"undefined"};function d(n){const e={a:"a",div:"div",h1:"h1",header:"header",...o(),...n.components};return t.jsx(e.header,{children:t.jsxs(e.h1,{id:"guestmodule-and-on-demand-deployment",children:["GuestModule and on-demand deployment",t.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#guestmodule-and-on-demand-deployment",children:t.jsx(e.div,{"data-autolink-icon":!0})})]})})}function s(n={}){const{wrapper:e}={...o(),...n.components};return e?t.jsx(e,{...n,children:t.jsx(d,{...n})}):d(n)}export{s as default,r as frontmatter}; +import{u as o,j as t}from"./index-CchMGs7j.js";const r={title:"GuestModule and on-demand deployment",description:"undefined"};function d(n){const e={a:"a",div:"div",h1:"h1",header:"header",...o(),...n.components};return t.jsx(e.header,{children:t.jsxs(e.h1,{id:"guestmodule-and-on-demand-deployment",children:["GuestModule and on-demand deployment",t.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#guestmodule-and-on-demand-deployment",children:t.jsx(e.div,{"data-autolink-icon":!0})})]})})}function s(n={}){const{wrapper:e}={...o(),...n.components};return e?t.jsx(e,{...n,children:t.jsx(d,{...n})}):d(n)}export{s as default,r as frontmatter}; diff --git a/assets/11-wallet-context-CqBkBWSb.js b/assets/11-wallet-context-Db3u6bux.js similarity index 98% rename from assets/11-wallet-context-CqBkBWSb.js rename to assets/11-wallet-context-Db3u6bux.js index ce1bc51631..4a3bbb5ae8 100644 --- a/assets/11-wallet-context-CqBkBWSb.js +++ b/assets/11-wallet-context-Db3u6bux.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-BXOUdEEZ.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{u as l,j as s}from"./index-CchMGs7j.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/12-contract-audits-kUOBRZoK.js b/assets/12-contract-audits-CcNg0PwU.js similarity index 97% rename from assets/12-contract-audits-kUOBRZoK.js rename to assets/12-contract-audits-CcNg0PwU.js index 3b4317c804..10bdddb67e 100644 --- a/assets/12-contract-audits-kUOBRZoK.js +++ b/assets/12-contract-audits-CcNg0PwU.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.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{u as i,j as e}from"./index-CchMGs7j.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/800-manage-metadata-builder-Dm6XG6DA.js b/assets/800-manage-metadata-builder-Ciwcw9Ff.js similarity index 99% rename from assets/800-manage-metadata-builder-Dm6XG6DA.js rename to assets/800-manage-metadata-builder-Ciwcw9Ff.js index 32a2232a8b..066fc2adc1 100644 --- a/assets/800-manage-metadata-builder-Dm6XG6DA.js +++ b/assets/800-manage-metadata-builder-Ciwcw9Ff.js @@ -1,4 +1,4 @@ -import{u as n,j as e}from"./index-BXOUdEEZ.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{u as n,j as e}from"./index-CchMGs7j.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/CardGrid-DjVwb6Sh.js b/assets/CardGrid-BJuHU1g_.js similarity index 87% rename from assets/CardGrid-DjVwb6Sh.js rename to assets/CardGrid-BJuHU1g_.js index ce58e8abe8..9c7907bec5 100644 --- a/assets/CardGrid-DjVwb6Sh.js +++ b/assets/CardGrid-BJuHU1g_.js @@ -1 +1 @@ -import{j as s}from"./index-BXOUdEEZ.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-CchMGs7j.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/TabGroup-CR9eTTBb.js b/assets/TabGroup-4xq3SqP5.js similarity index 89% rename from assets/TabGroup-CR9eTTBb.js rename to assets/TabGroup-4xq3SqP5.js index 02705f7b00..e6737bbeba 100644 --- a/assets/TabGroup-CR9eTTBb.js +++ b/assets/TabGroup-4xq3SqP5.js @@ -1 +1 @@ -import{j as n,r as b,f as l}from"./index-BXOUdEEZ.js";const m=({children:a,onClick:s,isActive:c})=>n.jsx("button",{className:c?"active":"",onClick:s,children:a}),p=({children:a,isActive:s})=>s?n.jsx("div",{children:a}):null,u=({children:a})=>{const[s,c]=b.useState(0),r=l.Children.toArray(a),o=r.filter(e=>e.type===m),i=r.filter(e=>e.type===p);return n.jsxs("div",{children:[n.jsx("div",{className:"tabs",children:o.map((e,t)=>l.cloneElement(e,{key:t,onClick:()=>c(t),isActive:s===t}))}),n.jsx("div",{className:"tab-panels",children:i.map((e,t)=>l.cloneElement(e,{key:t,isActive:s===t}))})]})};export{m as T,p as a,u as b}; +import{j as n,r as b,f as l}from"./index-CchMGs7j.js";const m=({children:a,onClick:s,isActive:c})=>n.jsx("button",{className:c?"active":"",onClick:s,children:a}),p=({children:a,isActive:s})=>s?n.jsx("div",{children:a}):null,u=({children:a})=>{const[s,c]=b.useState(0),r=l.Children.toArray(a),o=r.filter(e=>e.type===m),i=r.filter(e=>e.type===p);return n.jsxs("div",{children:[n.jsx("div",{className:"tabs",children:o.map((e,t)=>l.cloneElement(e,{key:t,onClick:()=>c(t),isActive:s===t}))}),n.jsx("div",{className:"tab-panels",children:i.map((e,t)=>l.cloneElement(e,{key:t,isActive:s===t}))})]})};export{m as T,p as a,u as b}; diff --git a/assets/Video-DFRdAWy3.js b/assets/Video-D4tib21T.js similarity index 90% rename from assets/Video-DFRdAWy3.js rename to assets/Video-D4tib21T.js index 35cd7b3359..21e4b35fe9 100644 --- a/assets/Video-DFRdAWy3.js +++ b/assets/Video-D4tib21T.js @@ -1 +1 @@ -import{r as t,j as s}from"./index-BXOUdEEZ.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-CchMGs7j.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/android-B2fnIbxK.js b/assets/android-B2fnIbxK.js deleted file mode 100644 index 925cada3b6..0000000000 --- a/assets/android-B2fnIbxK.js +++ /dev/null @@ -1 +0,0 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/android-DDSjtPZP.js b/assets/android-DDSjtPZP.js new file mode 100644 index 0000000000..dadfca3443 --- /dev/null +++ b/assets/android-DDSjtPZP.js @@ -0,0 +1 @@ +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/api-CZx4snhI.js b/assets/api-CwTDnCMS.js similarity index 85% rename from assets/api-CZx4snhI.js rename to assets/api-CwTDnCMS.js index 969a54de91..ba9c874ff1 100644 --- a/assets/api-CZx4snhI.js +++ b/assets/api-CwTDnCMS.js @@ -1 +1 @@ -import{u as r,j as t}from"./index-BXOUdEEZ.js";const a=void 0;function o(e){const n={a:"a",div:"div",h2:"h2",...r(),...e.components};return t.jsxs(n.h2,{id:"overview",children:["Overview",t.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:t.jsx(n.div,{"data-autolink-icon":!0})})]})}function s(e={}){const{wrapper:n}={...r(),...e.components};return n?t.jsx(n,{...e,children:t.jsx(o,{...e})}):o(e)}export{s as default,a as frontmatter}; +import{u as r,j as t}from"./index-CchMGs7j.js";const a=void 0;function o(e){const n={a:"a",div:"div",h2:"h2",...r(),...e.components};return t.jsxs(n.h2,{id:"overview",children:["Overview",t.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:t.jsx(n.div,{"data-autolink-icon":!0})})]})}function s(e={}){const{wrapper:n}={...r(),...e.components};return n?t.jsx(n,{...e,children:t.jsx(o,{...e})}):o(e)}export{s as default,a as frontmatter}; diff --git a/assets/builder-QULSxq77.js b/assets/builder-CWYB5K28.js similarity index 88% rename from assets/builder-QULSxq77.js rename to assets/builder-CWYB5K28.js index 5dc021ebf7..a4bbe08a2c 100644 --- a/assets/builder-QULSxq77.js +++ b/assets/builder-CWYB5K28.js @@ -1 +1 @@ -import{u as i,j as t}from"./index-BXOUdEEZ.js";const d={title:"builder intro",description:"undefined"};function r(n){const e={a:"a",div:"div",h1:"h1",header:"header",...i(),...n.components};return t.jsx(e.header,{children:t.jsxs(e.h1,{id:"builder-intro",children:["builder intro",t.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#builder-intro",children:t.jsx(e.div,{"data-autolink-icon":!0})})]})})}function a(n={}){const{wrapper:e}={...i(),...n.components};return e?t.jsx(e,{...n,children:t.jsx(r,{...n})}):r(n)}export{a as default,d as frontmatter}; +import{u as i,j as t}from"./index-CchMGs7j.js";const d={title:"builder intro",description:"undefined"};function r(n){const e={a:"a",div:"div",h1:"h1",header:"header",...i(),...n.components};return t.jsx(e.header,{children:t.jsxs(e.h1,{id:"builder-intro",children:["builder intro",t.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#builder-intro",children:t.jsx(e.div,{"data-autolink-icon":!0})})]})})}function a(n={}){const{wrapper:e}={...i(),...n.components};return e?t.jsx(e,{...n,children:t.jsx(r,{...n})}):r(n)}export{a as default,d as frontmatter}; diff --git a/assets/chain-support-Cp2robJr.js b/assets/chain-support-2kKPeZZF.js similarity index 81% rename from assets/chain-support-Cp2robJr.js rename to assets/chain-support-2kKPeZZF.js index 3b9c1545dc..9fd473c487 100644 --- a/assets/chain-support-Cp2robJr.js +++ b/assets/chain-support-2kKPeZZF.js @@ -1,4 +1,4 @@ -import{j as e,u as d}from"./index-BXOUdEEZ.js";const p=({title:t})=>e.jsx("th",{children:t}),c=({children:t,index:n})=>{const i=n%2===0?"#3c393f":"#1e1d1f";return e.jsx("tr",{style:{backgroundColor:i},children:t})},r=({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"}),e.jsx("span",{className:"cell-text",children:t})]})}),a=({rows:t,columns:n})=>e.jsxs("table",{children:[e.jsx("thead",{children:e.jsx("tr",{children:n.map(i=>e.jsx(p,{title:i}))})}),e.jsx("tbody",{children:t.map((i,s)=>e.jsxs(c,{index:s,children:[e.jsx(r,{content:i.network,imgSrc:i.networkImage}),e.jsx(r,{content:i.chainHandle}),e.jsx(r,{content:i.indexerEndpoint})]},s))})]}),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",...d(),...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,u as d}from"./index-CchMGs7j.js";const p=({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})},i=({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"}),e.jsx("span",{className:"cell-text",children:t})]})}),a=({rows:t,columns:n})=>e.jsxs("table",{children:[e.jsx("thead",{children:e.jsx("tr",{children:n.map(r=>e.jsx(p,{title:r}))})}),e.jsx("tbody",{children:t.map((r,s)=>e.jsxs(c,{index:s,children:[e.jsx(i,{content:r.network,imgSrc:r.networkImage}),e.jsx(i,{content:r.chainHandle}),e.jsx(i,{content:r.indexerEndpoint})]},s))})]}),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",...d(),...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.jsx(n.p,{children:`Sequence can support all EVM compatible chains. The following networks are currently supported by Sequence Wallet, Sequence Indexer, @@ -6,4 +6,4 @@ Sequence Relayer and all Sequence SDKs:`}),` `,e.jsxs(n.h2,{id:"networks",children:["Networks",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#networks",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(a,{columns:["Network","Chain Handle","Indexer Endpoint"],rows:[{networkImage:"/img/networks/1.png",network:"Ethereum",chainHandle:"mainnet",indexerEndpoint:"https://mainnet-indexer.sequence.app"},{networkImage:"/img/networks/42161.png",network:"Arbitrum One",chainHandle:"arbitrum",indexerEndpoint:"https://arbitrum-indexer.sequence.app"},{networkImage:"/img/networks/42170.png",network:"Arbitrum Nova",chainHandle:"arbitrum-nova",indexerEndpoint:"https://arbitrum-nova-indexer.sequence.app"},{networkImage:"/img/networks/137.png",network:"Polygon",chainHandle:"polygon",indexerEndpoint:"https://polygon-indexer.sequence.app"},{networkImage:"/img/networks/1101.png",network:"Polygon zkEVM",chainHandle:"polygon-zkevm",indexerEndpoint:"https://polygon-zkevm-indexer.sequence.app"},{networkImage:"/img/networks/8453.png",network:"Base",chainHandle:"base",indexerEndpoint:"https://base-indexer.sequence.app"},{networkImage:"/img/networks/10.png",network:"Optimism",chainHandle:"optimism",indexerEndpoint:"https://optimism-indexer.sequence.app"},{networkImage:"/img/networks/43114.png",network:"Avalanche",chainHandle:"avalanche",indexerEndpoint:"https://avalanche-indexer.sequence.app"},{networkImage:"/img/networks/19011.png",network:"Homeverse",chainHandle:"homeverse",indexerEndpoint:"https://homeverse-indexer.sequence.app"},{networkImage:"/img/networks/56.png",network:"BSC",chainHandle:"bsc",indexerEndpoint:"https://bsc-indexer.sequence.app"},{networkImage:"/img/networks/100.png",network:"Gnosis",chainHandle:"gnosis",indexerEndpoint:"https://gnosis-indexer.sequence.app"}]}),` `,e.jsxs(n.h2,{id:"testnets",children:["Testnets",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#testnets",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` -`,e.jsx(a,{columns:["Network","Chain Handle","Indexer Endpoint"],rows:[{networkImage:"/img/networks/1.png",network:"Ethereum Sepolia",chainHandle:"sepolia",indexerEndpoint:"https://sepolia-indexer.sequence.app"},{networkImage:"/img/networks/42161.png",network:"Arbitrum Sepolia",chainHandle:"arbitrum-sepolia",indexerEndpoint:"https://arbitrum-sepolia-indexer.sequence.app"},{networkImage:"/img/networks/8453.png",network:"Base Sepolia",chainHandle:"base-sepolia",indexerEndpoint:"https://base-sepolia-indexer.sequence.app"},{networkImage:"/img/networks/10.png",network:"Optimism Sepolia",chainHandle:"optimism-sepolia",indexerEndpoint:"https://optimism-indexer.sequence.app"},{networkImage:"/img/networks/137.png",network:"Polygon Mumbai",chainHandle:"mumbai",indexerEndpoint:"https://mumbai-indexer.sequence.app"},{networkImage:"/img/networks/56.png",network:"BSC Testnet",chainHandle:"bsc-testnet",indexerEndpoint:"https://bsc-testnet-indexer.sequence.app"}]})]})}function m(t={}){const{wrapper:n}={...d(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(o,{...t})}):o(t)}export{m as default,h as frontmatter}; +`,e.jsx(a,{columns:["Network","Chain Handle","Indexer Endpoint"],rows:[{networkImage:"/img/networks/1.png",network:"Ethereum Sepolia",chainHandle:"sepolia",indexerEndpoint:"https://sepolia-indexer.sequence.app"},{networkImage:"/img/networks/42161.png",network:"Arbitrum Sepolia",chainHandle:"arbitrum-sepolia",indexerEndpoint:"https://arbitrum-sepolia-indexer.sequence.app"},{networkImage:"/img/networks/8453.png",network:"Base Sepolia",chainHandle:"base-sepolia",indexerEndpoint:"https://base-sepolia-indexer.sequence.app"},{networkImage:"/img/networks/10.png",network:"Optimism Sepolia",chainHandle:"optimism-sepolia",indexerEndpoint:"https://optimism-indexer.sequence.app"},{networkImage:"/img/networks/56.png",network:"BSC Testnet",chainHandle:"bsc-testnet",indexerEndpoint:"https://bsc-testnet-indexer.sequence.app"}]})]})}function m(t={}){const{wrapper:n}={...d(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(o,{...t})}):o(t)}export{m as default,h as frontmatter}; diff --git a/assets/contracts-CjOFm7ZO.js b/assets/contracts-CuvV6GHJ.js similarity index 97% rename from assets/contracts-CjOFm7ZO.js rename to assets/contracts-CuvV6GHJ.js index 33e5721da9..901436ce67 100644 --- a/assets/contracts-CjOFm7ZO.js +++ b/assets/contracts-CuvV6GHJ.js @@ -1,4 +1,4 @@ -import{u as o,j as e}from"./index-BXOUdEEZ.js";import{V as a}from"./Video-DFRdAWy3.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{u as o,j as e}from"./index-CchMGs7j.js";import{V as a}from"./Video-D4tib21T.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/discord-yy34ze5o.js b/assets/discord-4SQogg4W.js similarity index 93% rename from assets/discord-yy34ze5o.js rename to assets/discord-4SQogg4W.js index 6535ef3526..0c64d15123 100644 --- a/assets/discord-yy34ze5o.js +++ b/assets/discord-4SQogg4W.js @@ -1,3 +1,3 @@ -import{u as c,j as e}from"./index-BXOUdEEZ.js";const o=void 0;function a(n){const t={a:"a",div:"div",h2:"h2",...c(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsxs(t.h2,{id:"deploy-an-in-game-collectibles-contract",children:["Deploy an in-game collectibles contract",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-an-in-game-collectibles-contract",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` +import{u as c,j as e}from"./index-CchMGs7j.js";const o=void 0;function a(n){const t={a:"a",div:"div",h2:"h2",...c(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsxs(t.h2,{id:"deploy-an-in-game-collectibles-contract",children:["Deploy an in-game collectibles contract",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-an-in-game-collectibles-contract",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.h2,{id:"query-contract-details",children:["Query contract details",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#query-contract-details",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.h2,{id:"fetch-token-balances-of-a-wallet",children:["Fetch token balances of a wallet",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetch-token-balances-of-a-wallet",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})]})}function r(n={}){const{wrapper:t}={...c(),...n.components};return t?e.jsx(t,{...n,children:e.jsx(a,{...n})}):a(n)}export{r as default,o as frontmatter}; diff --git a/assets/embedded-wallet-BfyLlYIQ.js b/assets/embedded-wallet-DLKt2LEl.js similarity index 95% rename from assets/embedded-wallet-BfyLlYIQ.js rename to assets/embedded-wallet-DLKt2LEl.js index b30cef0063..6608e68f3b 100644 --- a/assets/embedded-wallet-BfyLlYIQ.js +++ b/assets/embedded-wallet-DLKt2LEl.js @@ -1,4 +1,4 @@ -import{u as l,j as e,e as o}from"./index-BXOUdEEZ.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const s={title:"Embedded Wallet API",description:"undefined"};function a(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"embedded-wallet-api",children:["Embedded Wallet API",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#embedded-wallet-api",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{u as l,j as e,e as o}from"./index-CchMGs7j.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const s={title:"Embedded Wallet API",description:"undefined"};function a(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"embedded-wallet-api",children:["Embedded Wallet API",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#embedded-wallet-api",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(o,{type:"note",children:"API Documentation Coming Soon"}),` `,e.jsx(t.p,{children:"Sequence Embedded Wallet (or Wallet-as-a-Service) enables the creation, management and usage of fully functional EVM compatible wallets. These 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."}),` `,e.jsx(t.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."})]})}function r(n={}){const{wrapper:t}={...l(),...n.components};return t?e.jsx(t,{...n,children:e.jsx(a,{...n})}):a(n)}export{r as default,s as frontmatter}; diff --git a/assets/gas-tank-Bz1VtCNO.js b/assets/gas-tank-5jwCKQMo.js similarity index 95% rename from assets/gas-tank-Bz1VtCNO.js rename to assets/gas-tank-5jwCKQMo.js index 57b4e91b17..5bce07faca 100644 --- a/assets/gas-tank-Bz1VtCNO.js +++ b/assets/gas-tank-5jwCKQMo.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.js";import{V as t}from"./Video-DFRdAWy3.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{u as i,j as e}from"./index-CchMGs7j.js";import{V as t}from"./Video-D4tib21T.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/getting-started-Mfz2S2Lp.js b/assets/getting-started-tGSASkus.js similarity index 98% rename from assets/getting-started-Mfz2S2Lp.js rename to assets/getting-started-tGSASkus.js index 7def40483e..b0226f69dd 100644 --- a/assets/getting-started-Mfz2S2Lp.js +++ b/assets/getting-started-tGSASkus.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.js";import{C as l,a as n}from"./CardGrid-DjVwb6Sh.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{u as r,j as e}from"./index-CchMGs7j.js";import{C as l,a as n}from"./CardGrid-BJuHU1g_.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/guides-C1WMslv2.js b/assets/guides-C1WMslv2.js deleted file mode 100644 index 925cada3b6..0000000000 --- a/assets/guides-C1WMslv2.js +++ /dev/null @@ -1 +0,0 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/guides-CiPrz4EV.js b/assets/guides-CiPrz4EV.js new file mode 100644 index 0000000000..dadfca3443 --- /dev/null +++ b/assets/guides-CiPrz4EV.js @@ -0,0 +1 @@ +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/iOS-B2fnIbxK.js b/assets/iOS-B2fnIbxK.js deleted file mode 100644 index 925cada3b6..0000000000 --- a/assets/iOS-B2fnIbxK.js +++ /dev/null @@ -1 +0,0 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/iOS-DDSjtPZP.js b/assets/iOS-DDSjtPZP.js new file mode 100644 index 0000000000..dadfca3443 --- /dev/null +++ b/assets/iOS-DDSjtPZP.js @@ -0,0 +1 @@ +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/index-Bzi1W8NW.js b/assets/index-Bzi1W8NW.js new file mode 100644 index 0000000000..74481e7de8 --- /dev/null +++ b/assets/index-Bzi1W8NW.js @@ -0,0 +1,12 @@ +import{j as e,L as m,c as a,a as b,b as u,R as j,d as p,T as l,C as n,u as h}from"./index-CchMGs7j.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";var y="vocs_Button_button",f="vocs_Button_button_accent";function v({children:s,className:t,href:r,variant:g}){return e.jsx(m,{className:a(t,y,g==="accent"&&f),href:r,variant:"styleless",children:s})}var w="vocs_HomePage_button",k="vocs_HomePage_buttons",_="vocs_HomePage_description",P="vocs_HomePage_logo",i="vocs_HomePage_packageManager",S="vocs_HomePage",q="vocs_HomePage_tabs",c="vocs_HomePage_tabsContent",I="vocs_HomePage_tabsList",A="vocs_HomePage_tagline",N="vocs_HomePage_title";function L({children:s,className:t}){return e.jsx("div",{className:a(t,S),children:s})}function d({className:s}){const{logoUrl:t,title:r}=b();return t?e.jsx("div",{className:a(s,P),children:e.jsx(u,{})}):e.jsx("h1",{className:a(s,N),children:r})}function C({children:s,className:t}){return e.jsx("div",{className:a(t,A),children:s})}function H({children:s,className:t}){return e.jsx("div",{className:a(t,_),children:s})}function M({children:s,className:t}){return e.jsx("div",{className:a(t,k),children:s})}function W(s){return e.jsx(v,{...s,className:a(w,s.className)})}function B({name:s,type:t="install"}){return e.jsxs(j,{className:q,defaultValue:"npm",children:[e.jsxs(p,{className:I,children:[e.jsx(l,{value:"npm",children:"npm"}),e.jsx(l,{value:"pnpm",children:"pnpm"}),e.jsx(l,{value:"yarn",children:"yarn"})]}),e.jsxs(n,{className:c,value:"npm",children:[e.jsx("span",{className:i,children:"npm"})," ",t==="init"?"init":"install"," ",s]}),e.jsxs(n,{className:c,value:"pnpm",children:[e.jsx("span",{className:i,children:"pnpm"})," ",t==="init"?"create":"install"," ",s]}),e.jsxs(n,{className:c,value:"yarn",children:[e.jsx("span",{className:i,children:"yarn"})," ",t==="init"?"create":"install"," ",s]})]})}const E=Object.freeze(Object.defineProperty({__proto__:null,Button:W,Buttons:M,Description:H,InstallPackage:B,Logo:d,Root:L,Tagline:C},Symbol.toStringTag,{value:"Module"})),R={title:"Sequence - Web3 Gaming Platform",layout:"landing",showLogo:!1,content:{horizontalPadding:"0px",width:"100%",verticalPadding:"0px"}};function o(s){const t={p:"p",...h(),...s.components};return E||x("HomePage",!1),d||x("HomePage.Logo",!0),e.jsxs(e.Fragment,{children:[e.jsx("section",{class:"bg-white dark:bg-[#232225]",children:e.jsxs("div",{class:"py-8 px-4 mx-auto max-w-screen-xl sm:py-16 lg:px-6",children:[e.jsxs("div",{class:"mb-8 max-w-screen-md lg:mb-16",children:[e.jsx("div",{class:"flex justify-start mb-4 text-4xl font-extrabold text-gray-900 dark:text-white",children:e.jsx(d,{})}),e.jsx("p",{class:"text-gray-500 font-bold sm:text-xl dark:text-gray-400",children:e.jsx(t.p,{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.`})})]}),e.jsxs("div",{class:"mb-8 max-w-screen-md lg:mb-16",children:[e.jsx("h2",{class:"mb-4 text-4xl font-extrabold text-gray-900 dark:text-white",children:e.jsx(t.p,{children:"Solutions"})}),e.jsx("p",{class:"text-gray-500 font-bold sm:text-xl dark:text-gray-400",children:e.jsx(t.p,{children:`Follow our solution guides to boost your game's acquisition, +monetization and retention with the power of web3.`})})]}),e.jsxs("div",{class:"space-y-8 md:grid md:grid-cols-2 lg:grid-cols-3 md:gap-12 md:space-y-0",children:[e.jsxs("div",{children:[e.jsx("div",{class:"mb-4 text-gray-700 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Acquire Players"})}),e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/solutions/wallets/universal-wallet/01-overview",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Universal Wallet"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:`Easily onboard web3-native players with a complete Universal +Wallet.`})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/solutions/wallets/embedded-wallet/01-overview",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"In-Game Wallet"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:`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.`})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/solutions/collectibles/contracts/01-deploy-an-item-collection",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Collectibles"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:`Deploy and manage contracts, collections, and tokens with our +no-code Builder.`})})]})]})]}),e.jsxs("div",{children:[e.jsx("div",{class:"mb-4 text-gray-700 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Earn More Revenue"})}),e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/solutions/marketplaces/white-label-marketplace",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"White-label Marketplace"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Launch an in-game collectibles marketplace within minutes."})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/solutions/marketplaces/orderbook/01-overview",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Orderbook API"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Integrate custom in-game marketplaces with our APIs."})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"NFT Checkout"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Offer easy purchases with credit card, crypto, IAP support."})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/solutions/payments/onramps/01-fiat-on-ramps",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Onramps"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Allow players to convert from fiat to any crypto globally."})})]})]})]}),e.jsxs("div",{children:[e.jsx("div",{class:"mb-4 text-gray-700 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Retain and Grow"})}),e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/guides/webgl-guide#deploy-a-remote-minter",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Minter"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Securely mint achievement tokens tied to your game."})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Analytics"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Track every aspect of web3 activity within your games."})})]})]})]})]})]})}),` +`,e.jsx("section",{class:"bg-[#e3e8ed] dark:bg-[#1e1d20]",children:e.jsx("div",{class:"py-8 px-4 mx-auto max-w-screen-xl lg:py-16 lg:px-6",children:e.jsxs("div",{class:"max-w-screen-lg text-gray-500 sm:text-lg dark:text-gray-400",children:[e.jsx("h2",{class:"mb-4 text-4xl font-bold text-gray-900 dark:text-white",children:"Guides"}),e.jsx("p",{class:"mb-8 font-bold",children:"Follow our step-by-step guides and open source code templates to accelerate your time to market."}),e.jsxs("div",{class:"mb-4",children:[e.jsx("a",{href:"/guides/webgl-guide#integrate-sequencekit-with-waas",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Build a web3 game with WebGL"})}),e.jsx("p",{class:"mb-8 font-bold",children:"Follow a step by step guide to build a web-based game demo that leverages Sequence Embedded Wallet with custom in-game achievement tokens."})]}),e.jsxs("div",{class:"mb-4",children:[e.jsx("a",{href:"/guides/unity-guide#integrate-sequencekit-with-waas",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Build a web3 game with Unity"})}),e.jsx("p",{class:"mb-8 font-bold",children:"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."})]}),e.jsxs("div",{class:"mb-4",children:[e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Create web3 lootboxes"}),e.jsx("p",{class:"mb-8 font-bold",children:"With this tutorial, build a web-based maze where lootbox items are generated using AI and dynamically minted into the player's universal wallet."})]}),e.jsxs("div",{class:"mb-4",children:[e.jsx("a",{href:"/solutions/marketplaces/orderbook/01-overview",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Orderbook Marketplace"})}),e.jsx("p",{class:"mb-8 font-bold",children:"Build an API-driven marketplace where players can mint, then sell or buy items using a custom web-based interface leveraging Sequence Orderbook APIs."})]})]})})}),` +`,e.jsx("section",{class:"bg-white dark:bg-[#232225]",children:e.jsxs("div",{class:"py-8 px-4 mx-auto max-w-screen-xl sm:py-16 lg:px-6",children:[e.jsxs("div",{class:"mb-8 max-w-screen-md lg:mb-16",children:[e.jsx("h2",{class:"mb-4 text-4xl font-extrabold text-gray-900 dark:text-white",children:"SDKs"}),e.jsx("p",{class:"text-gray-500 font-bold sm:text-xl dark:text-gray-400",children:"Leverage our open source SDKs to easily integrate from any popular game development framework or language."})]}),e.jsxs("div",{class:"space-y-8 md:grid md:grid-cols-2 lg:grid-cols-3 md:gap-12 md:space-y-0",children:[e.jsx("div",{children:e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/sdk/unity/01-overview",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:"Unity"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Integrate Sequence with our native Unity library."})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/sdk/typescript/03-guides/01-connect-wallet",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:"Typescript"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Integrate Sequence APIs with our TypeScript SDK."})]})]})}),e.jsx("div",{children:e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/sdk/unreal/01-overview",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Unreal Engine"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Integrate Sequence with our native Unreal Engine library."})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/sdk/go/overview",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Sequence Kit"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Add web onboarding for any web3 wallet."})]})]})}),e.jsx("div",{children:e.jsx("ul",{class:"text-gray-600 dark:text-gray-400",children:e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/sdk/go/overview",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Go"})}),e.jsx("p",{class:"text-gray-500 font-bold font-bold dark:text-gray-400",children:"Leverage Sequence APIs easily from your Go backend."})]})})})]})]})}),` +`,e.jsx("section",{class:"bg-[#e3e8ed] dark:bg-[#1e1d20]",children:e.jsxs("div",{class:"py-8 px-4 mx-auto max-w-screen-xl sm:py-16 lg:px-6",children:[e.jsxs("div",{class:"mb-8 max-w-screen-md lg:mb-16",children:[e.jsx("h2",{class:"mb-4 text-4xl font-extrabold text-gray-900 dark:text-white",children:"APIs"}),e.jsx("p",{class:"text-gray-500 font-bold sm:text-xl dark:text-gray-400",children:"Use our modular APIs for more advanced integrations and for accessing on-chain data through easy to use interfaces."})]}),e.jsxs("div",{class:"space-y-8 md:grid md:grid-cols-2 lg:grid-cols-3 md:gap-12 md:space-y-0",children:[e.jsx("div",{children:e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/api/marketplace",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Marketplace API"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Integrate sell and buy operations through our orderbook interface."})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/api/relayer",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Transactions API"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Send and optimize transactions on any chain through our performant Sequence Relayer."})]})]})}),e.jsx("div",{children:e.jsx("ul",{class:"text-gray-600 dark:text-gray-400",children:e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/api/indexer/01-overview",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Indexer API"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Query wallets and contracts on Ethereum-compatible chains."})]})})}),e.jsx("div",{children:e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/api/metadata",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Metadata API"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Fetch token details on any collection and collectible."})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/solutions/builder/node-gateway",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Node Gateway"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Leverage Sequence's auto-scaling node service."})]})]})})]})]})}),` +`,e.jsx("section",{class:"bg-white dark:bg-[#232225]",children:e.jsxs("div",{class:"py-8 px-4 mx-auto max-w-screen-xl sm:py-16 lg:px-6",children:[e.jsxs("div",{class:"mb-8 max-w-screen-md lg:mb-16",children:[e.jsx("h2",{class:"mb-4 text-4xl font-extrabold text-gray-900 dark:text-white",children:"Support"}),e.jsx("p",{class:"text-gray-500 font-bold sm:text-xl dark:text-gray-400",children:"Whatever stage of development your game is at, the Sequence team is here to help out. Reach out to talk to our support team."})]}),e.jsxs("div",{class:"space-y-8 md:grid md:grid-cols-2 lg:grid-cols-3 md:gap-12 md:space-y-0",children:[e.jsx("div",{children:e.jsx("ul",{class:"text-gray-600 dark:text-gray-400",children:e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"/support",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold dark:text-white",children:"Chat Support"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Chat with our support team on specific questions."})]})})}),e.jsx("div",{children:e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"https://discord.gg/sequence",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold dark:text-white",children:"Community"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Join our Discord community to learn from others building on Sequence."})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"https://support.sequence.xyz",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold dark:text-white",children:"Contact our Team"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Reach out to our integration team to discuss how you can partner with Sequence."})]})]})}),e.jsx("div",{children:e.jsx("ul",{class:"text-gray-600 dark:text-gray-400",children:e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"https://support.sequence.xyz",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold dark:text-white",children:"Knowledge Base"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Browse FAQs and answers to common support requests."})]})})})]})]})})]})}function G(s={}){const{wrapper:t}={...h(),...s.components};return t?e.jsx(t,{...s,children:e.jsx(o,{...s})}):o(s)}function x(s,t){throw new Error("Expected "+(t?"component":"object")+" `"+s+"` to be defined: you likely forgot to import, pass, or provide it.")}export{G as default,R as frontmatter}; diff --git a/assets/index-BXOUdEEZ.js b/assets/index-CchMGs7j.js similarity index 68% rename from assets/index-BXOUdEEZ.js rename to assets/index-CchMGs7j.js index 9666d3ae2c..acd48f5abe 100644 --- a/assets/index-BXOUdEEZ.js +++ b/assets/index-CchMGs7j.js @@ -1,4 +1,4 @@ -function Uu(e,t){for(var n=0;nr[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();var Py=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function tr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function vA(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}),n}var s0={exports:{}},Pl={},c0={exports:{}},ie={};/** +function Uu(e,t){for(var n=0;nr[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();var Py=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function tr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function vP(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}),n}var s0={exports:{}},Pl={},c0={exports:{}},ie={};/** * @license React * react.production.min.js * @@ -30,14 +30,14 @@ function Uu(e,t){for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),fc=Object.prototype.hasOwnProperty,Zy=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Pf={},Af={};function Xy(e){return fc.call(Af,e)?!0:fc.call(Pf,e)?!1:Zy.test(e)?Af[e]=!0:(Pf[e]=!0,!1)}function Jy(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function ex(e,t,n,r){if(t===null||typeof t>"u"||Jy(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function ut(e,t,n,r,o,i,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var Xe={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Xe[e]=new ut(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Xe[t]=new ut(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Xe[e]=new ut(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Xe[e]=new ut(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Xe[e]=new ut(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Xe[e]=new ut(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Xe[e]=new ut(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Xe[e]=new ut(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Xe[e]=new ut(e,5,!1,e.toLowerCase(),null,!1,!1)});var Ku=/[\-:]([a-z])/g;function Gu(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Ku,Gu);Xe[t]=new ut(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Ku,Gu);Xe[t]=new ut(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Ku,Gu);Xe[t]=new ut(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Xe[e]=new ut(e,1,!1,e.toLowerCase(),null,!1,!1)});Xe.xlinkHref=new ut("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Xe[e]=new ut(e,1,!1,e.toLowerCase(),null,!0,!0)});function qu(e,t,n,r){var o=Xe.hasOwnProperty(t)?Xe[t]:null;(o!==null?o.type!==0:r||!(2"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),fc=Object.prototype.hasOwnProperty,Zy=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Pf={},Af={};function Xy(e){return fc.call(Af,e)?!0:fc.call(Pf,e)?!1:Zy.test(e)?Af[e]=!0:(Pf[e]=!0,!1)}function Jy(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function e2(e,t,n,r){if(t===null||typeof t>"u"||Jy(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function ut(e,t,n,r,o,i,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var Xe={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Xe[e]=new ut(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Xe[t]=new ut(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Xe[e]=new ut(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Xe[e]=new ut(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Xe[e]=new ut(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Xe[e]=new ut(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Xe[e]=new ut(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Xe[e]=new ut(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Xe[e]=new ut(e,5,!1,e.toLowerCase(),null,!1,!1)});var Ku=/[\-:]([a-z])/g;function Gu(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Ku,Gu);Xe[t]=new ut(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Ku,Gu);Xe[t]=new ut(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Ku,Gu);Xe[t]=new ut(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Xe[e]=new ut(e,1,!1,e.toLowerCase(),null,!1,!1)});Xe.xlinkHref=new ut("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Xe[e]=new ut(e,1,!1,e.toLowerCase(),null,!0,!0)});function qu(e,t,n,r){var o=Xe.hasOwnProperty(t)?Xe[t]:null;(o!==null?o.type!==0:r||!(2l||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{fs=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Xo(e):""}function tx(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=ps(e.type,!1),e;case 11:return e=ps(e.type.render,!1),e;case 1:return e=ps(e.type,!0),e;default:return""}}function vc(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 Wr:return"Fragment";case Hr:return"Portal";case pc:return"Profiler";case Yu:return"StrictMode";case hc:return"Suspense";case mc:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case b0:return(e.displayName||"Context")+".Consumer";case k0:return(e._context.displayName||"Context")+".Provider";case Qu:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Zu:return t=e.displayName||null,t!==null?t:vc(e.type)||"Memo";case Dn:t=e._payload,e=e._init;try{return vc(e(t))}catch{}}return null}function nx(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 vc(t);case 8:return t===Yu?"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 Yn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function P0(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function rx(e){var t=P0(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 ta(e){e._valueTracker||(e._valueTracker=rx(e))}function A0(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=P0(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ga(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 gc(e,t){var n=t.checked;return Te({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Tf(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Yn(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 S0(e,t){t=t.checked,t!=null&&qu(e,"checked",t,!1)}function yc(e,t){S0(e,t);var n=Yn(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")?xc(e,t.type,n):t.hasOwnProperty("defaultValue")&&xc(e,t.type,Yn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Rf(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 xc(e,t,n){(t!=="number"||Ga(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Jo=Array.isArray;function oo(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=na.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},ox=["Webkit","ms","Moz","O"];Object.keys(ri).forEach(function(e){ox.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ri[t]=ri[e]})});function O0(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 I0(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=O0(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var ix=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 Ec(e,t){if(t){if(ix[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 kc(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 bc=null;function Xu(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Cc=null,io=null,ao=null;function If(e){if(e=Ui(e)){if(typeof Cc!="function")throw Error(M(280));var t=e.stateNode;t&&(t=Ol(t),Cc(e.stateNode,e.type,t))}}function L0(e){io?ao?ao.push(e):ao=[e]:io=e}function D0(){if(io){var e=io,t=ao;if(ao=io=null,If(e),t)for(e=0;e>>=0,e===0?32:31-(vx(e)/gx|0)|0}var ra=64,oa=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 Za(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 Fi(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ht(t),e[t]=n}function wx(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),Vf=" ",Bf=!1;function tm(e,t){switch(e){case"keyup":return Yx.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function nm(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Kr=!1;function Zx(e,t){switch(e){case"compositionend":return nm(t);case"keypress":return t.which!==32?null:(Bf=!0,Vf);case"textInput":return e=t.data,e===Vf&&Bf?null:e;default:return null}}function Xx(e,t){if(Kr)return e==="compositionend"||!ad&&tm(e,t)?(e=J0(),Oa=rd=Fn=null,Kr=!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=Gf(n)}}function am(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?am(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function lm(){for(var e=window,t=Ga();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ga(e.document)}return t}function ld(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 l_(e){var t=lm(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&am(n.ownerDocument.documentElement,n)){if(r!==null&&ld(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=qf(n,i);var a=qf(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,Gr=null,$c=null,li=null,Oc=!1;function Yf(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Oc||Gr==null||Gr!==Ga(r)||(r=Gr,"selectionStart"in r&&ld(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=el($c,"onSelect"),0Qr||(e.current=jc[Qr],jc[Qr]=null,Qr--)}function me(e,t){Qr++,jc[Qr]=e.current,e.current=t}var Qn={},rt=rr(Qn),mt=rr(!1),xr=Qn;function ho(e,t){var n=e.type.contextTypes;if(!n)return Qn;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 vt(e){return e=e.childContextTypes,e!=null}function nl(){ge(mt),ge(rt)}function np(e,t,n){if(rt.current!==Qn)throw Error(M(168));me(rt,t),me(mt,n)}function vm(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,nx(e)||"Unknown",o));return Te({},n,r)}function rl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Qn,xr=rt.current,me(rt,e),me(mt,mt.current),!0}function rp(e,t,n){var r=e.stateNode;if(!r)throw Error(M(169));n?(e=vm(e,t,xr),r.__reactInternalMemoizedMergedChildContext=e,ge(mt),ge(rt),me(rt,e)):ge(mt),me(mt,n)}var cn=null,Il=!1,As=!1;function gm(e){cn===null?cn=[e]:cn.push(e)}function x_(e){Il=!0,gm(e)}function or(){if(!As&&cn!==null){As=!0;var e=0,t=ue;try{var n=cn;for(ue=1;e>=a,o-=a,un=1<<32-Ht(t)+o|n<A?(T=P,P=null):T=P.sibling;var O=f(m,P,_[A],E);if(O===null){P===null&&(P=T);break}e&&P&&O.alternate===null&&t(m,P),v=i(O,v,A),k===null?C=O:k.sibling=O,k=O,P=T}if(A===_.length)return n(m,P),be&&sr(m,A),C;if(P===null){for(;A<_.length;A++)P=c(m,_[A],E),P!==null&&(v=i(P,v,A),k===null?C=P:k.sibling=P,k=P);return be&&sr(m,A),C}for(P=r(m,P);A<_.length;A++)T=h(P,m,A,_[A],E),T!==null&&(e&&T.alternate!==null&&P.delete(T.key===null?A:T.key),v=i(T,v,A),k===null?C=T:k.sibling=T,k=T);return e&&P.forEach(function(j){return t(m,j)}),be&&sr(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,T=null,O=_.next();P!==null&&!O.done;A++,O=_.next()){P.index>A?(T=P,P=null):T=P.sibling;var j=f(m,P,O.value,E);if(j===null){P===null&&(P=T);break}e&&P&&j.alternate===null&&t(m,P),v=i(j,v,A),k===null?C=j:k.sibling=j,k=j,P=T}if(O.done)return n(m,P),be&&sr(m,A),C;if(P===null){for(;!O.done;A++,O=_.next())O=c(m,O.value,E),O!==null&&(v=i(O,v,A),k===null?C=O:k.sibling=O,k=O);return be&&sr(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&&sr(m,A),C}function w(m,v,_,E){if(typeof _=="object"&&_!==null&&_.type===Wr&&_.key===null&&(_=_.props.children),typeof _=="object"&&_!==null){switch(_.$$typeof){case ea:e:{for(var C=_.key,k=v;k!==null;){if(k.key===C){if(C=_.type,C===Wr){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===Dn&&up(C)===k.type){n(m,k.sibling),v=o(k,_.props),v.ref=zo(m,k,_),v.return=m,m=v;break e}n(m,k);break}else t(m,k);k=k.sibling}_.type===Wr?(v=gr(_.props.children,m.mode,E,_.key),v.return=m,m=v):(E=za(_.type,_.key,_.props,null,m.mode,E),E.ref=zo(m,v,_),E.return=m,m=E)}return a(m);case Hr: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=Ds(_,m.mode,E),v.return=m,m=v}return a(m);case Dn:return k=_._init,w(m,v,k(_._payload),E)}if(Jo(_))return y(m,v,_,E);if(Do(_))return g(m,v,_,E);da(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=Ls(_,m.mode,E),v.return=m,m=v),a(m)):n(m,v)}return w}var vo=Cm(!0),Pm=Cm(!1),Vi={},nn=rr(Vi),bi=rr(Vi),Ci=rr(Vi);function fr(e){if(e===Vi)throw Error(M(174));return e}function vd(e,t){switch(me(Ci,t),me(bi,e),me(nn,Vi),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:wc(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=wc(t,e)}ge(nn),me(nn,t)}function go(){ge(nn),ge(bi),ge(Ci)}function Am(e){fr(Ci.current);var t=fr(nn.current),n=wc(t,e.type);t!==n&&(me(bi,e),me(nn,n))}function gd(e){bi.current===e&&(ge(nn),ge(bi))}var Ae=rr(0);function cl(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 Ss=[];function yd(){for(var e=0;en?n:4,e(!0);var r=Ts.transition;Ts.transition={};try{e(!1),t()}finally{ue=n,Ts.transition=r}}function Bm(){return Lt().memoizedState}function k_(e,t,n){var r=Gn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Hm(e))Wm(t,n);else if(n=wm(e,t,n,r),n!==null){var o=lt();Wt(n,e,r,o),Km(n,t,r)}}function b_(e,t,n){var r=Gn(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Hm(e))Wm(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,Kt(l,a)){var s=t.interleaved;s===null?(o.next=o,hd(t)):(o.next=s.next,s.next=o),t.interleaved=o;return}}catch{}finally{}n=wm(e,t,o,r),n!==null&&(o=lt(),Wt(n,e,r,o),Km(n,t,r))}}function Hm(e){var t=e.alternate;return e===Se||t!==null&&t===Se}function Wm(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 Km(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ed(e,n)}}var dl={readContext:It,useCallback:Je,useContext:Je,useEffect:Je,useImperativeHandle:Je,useInsertionEffect:Je,useLayoutEffect:Je,useMemo:Je,useReducer:Je,useRef:Je,useState:Je,useDebugValue:Je,useDeferredValue:Je,useTransition:Je,useMutableSource:Je,useSyncExternalStore:Je,useId:Je,unstable_isNewReconciler:!1},C_={readContext:It,useCallback:function(e,t){return Xt().memoizedState=[e,t===void 0?null:t],e},useContext:It,useEffect:fp,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Na(4194308,4,jm.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Na(4194308,4,e,t)},useInsertionEffect:function(e,t){return Na(4,2,e,t)},useMemo:function(e,t){var n=Xt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Xt();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=k_.bind(null,Se,e),[r.memoizedState,e]},useRef:function(e){var t=Xt();return e={current:e},t.memoizedState=e},useState:dp,useDebugValue:kd,useDeferredValue:function(e){return Xt().memoizedState=e},useTransition:function(){var e=dp(!1),t=e[0];return e=E_.bind(null,e[1]),Xt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Se,o=Xt();if(be){if(n===void 0)throw Error(M(407));n=n()}else{if(n=t(),Ge===null)throw Error(M(349));wr&30||Rm(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,fp(Om.bind(null,r,i,e),[e]),r.flags|=2048,Si(9,$m.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Xt(),t=Ge.identifierPrefix;if(be){var n=dn,r=un;n=(r&~(1<<32-Ht(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{fs=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Xo(e):""}function t2(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=ps(e.type,!1),e;case 11:return e=ps(e.type.render,!1),e;case 1:return e=ps(e.type,!0),e;default:return""}}function vc(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 Wr:return"Fragment";case Hr:return"Portal";case pc:return"Profiler";case Yu:return"StrictMode";case hc:return"Suspense";case mc:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case b0:return(e.displayName||"Context")+".Consumer";case k0:return(e._context.displayName||"Context")+".Provider";case Qu:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Zu:return t=e.displayName||null,t!==null?t:vc(e.type)||"Memo";case Dn:t=e._payload,e=e._init;try{return vc(e(t))}catch{}}return null}function n2(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 vc(t);case 8:return t===Yu?"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 Yn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function P0(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function r2(e){var t=P0(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 ta(e){e._valueTracker||(e._valueTracker=r2(e))}function A0(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=P0(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ga(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 gc(e,t){var n=t.checked;return Te({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Tf(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Yn(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 S0(e,t){t=t.checked,t!=null&&qu(e,"checked",t,!1)}function yc(e,t){S0(e,t);var n=Yn(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")?xc(e,t.type,n):t.hasOwnProperty("defaultValue")&&xc(e,t.type,Yn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Rf(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 xc(e,t,n){(t!=="number"||Ga(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Jo=Array.isArray;function oo(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=na.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},o2=["Webkit","ms","Moz","O"];Object.keys(ri).forEach(function(e){o2.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ri[t]=ri[e]})});function O0(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 I0(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=O0(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var i2=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 Ec(e,t){if(t){if(i2[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 kc(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 bc=null;function Xu(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Cc=null,io=null,ao=null;function If(e){if(e=Ui(e)){if(typeof Cc!="function")throw Error(M(280));var t=e.stateNode;t&&(t=Ol(t),Cc(e.stateNode,e.type,t))}}function L0(e){io?ao?ao.push(e):ao=[e]:io=e}function D0(){if(io){var e=io,t=ao;if(ao=io=null,If(e),t)for(e=0;e>>=0,e===0?32:31-(v2(e)/g2|0)|0}var ra=64,oa=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 Za(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 Fi(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ht(t),e[t]=n}function w2(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),Vf=" ",Bf=!1;function tm(e,t){switch(e){case"keyup":return Y2.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function nm(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Kr=!1;function Z2(e,t){switch(e){case"compositionend":return nm(t);case"keypress":return t.which!==32?null:(Bf=!0,Vf);case"textInput":return e=t.data,e===Vf&&Bf?null:e;default:return null}}function X2(e,t){if(Kr)return e==="compositionend"||!ad&&tm(e,t)?(e=J0(),Oa=rd=Fn=null,Kr=!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=Gf(n)}}function am(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?am(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function lm(){for(var e=window,t=Ga();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ga(e.document)}return t}function ld(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 lx(e){var t=lm(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&am(n.ownerDocument.documentElement,n)){if(r!==null&&ld(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=qf(n,i);var a=qf(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,Gr=null,$c=null,li=null,Oc=!1;function Yf(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Oc||Gr==null||Gr!==Ga(r)||(r=Gr,"selectionStart"in r&&ld(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=el($c,"onSelect"),0Qr||(e.current=jc[Qr],jc[Qr]=null,Qr--)}function me(e,t){Qr++,jc[Qr]=e.current,e.current=t}var Qn={},rt=rr(Qn),mt=rr(!1),xr=Qn;function ho(e,t){var n=e.type.contextTypes;if(!n)return Qn;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 vt(e){return e=e.childContextTypes,e!=null}function nl(){ge(mt),ge(rt)}function np(e,t,n){if(rt.current!==Qn)throw Error(M(168));me(rt,t),me(mt,n)}function vm(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,n2(e)||"Unknown",o));return Te({},n,r)}function rl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Qn,xr=rt.current,me(rt,e),me(mt,mt.current),!0}function rp(e,t,n){var r=e.stateNode;if(!r)throw Error(M(169));n?(e=vm(e,t,xr),r.__reactInternalMemoizedMergedChildContext=e,ge(mt),ge(rt),me(rt,e)):ge(mt),me(mt,n)}var cn=null,Il=!1,As=!1;function gm(e){cn===null?cn=[e]:cn.push(e)}function xx(e){Il=!0,gm(e)}function or(){if(!As&&cn!==null){As=!0;var e=0,t=ue;try{var n=cn;for(ue=1;e>=a,o-=a,un=1<<32-Ht(t)+o|n<A?(T=P,P=null):T=P.sibling;var O=f(m,P,_[A],E);if(O===null){P===null&&(P=T);break}e&&P&&O.alternate===null&&t(m,P),v=i(O,v,A),k===null?C=O:k.sibling=O,k=O,P=T}if(A===_.length)return n(m,P),be&&sr(m,A),C;if(P===null){for(;A<_.length;A++)P=c(m,_[A],E),P!==null&&(v=i(P,v,A),k===null?C=P:k.sibling=P,k=P);return be&&sr(m,A),C}for(P=r(m,P);A<_.length;A++)T=h(P,m,A,_[A],E),T!==null&&(e&&T.alternate!==null&&P.delete(T.key===null?A:T.key),v=i(T,v,A),k===null?C=T:k.sibling=T,k=T);return e&&P.forEach(function(j){return t(m,j)}),be&&sr(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,T=null,O=_.next();P!==null&&!O.done;A++,O=_.next()){P.index>A?(T=P,P=null):T=P.sibling;var j=f(m,P,O.value,E);if(j===null){P===null&&(P=T);break}e&&P&&j.alternate===null&&t(m,P),v=i(j,v,A),k===null?C=j:k.sibling=j,k=j,P=T}if(O.done)return n(m,P),be&&sr(m,A),C;if(P===null){for(;!O.done;A++,O=_.next())O=c(m,O.value,E),O!==null&&(v=i(O,v,A),k===null?C=O:k.sibling=O,k=O);return be&&sr(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&&sr(m,A),C}function w(m,v,_,E){if(typeof _=="object"&&_!==null&&_.type===Wr&&_.key===null&&(_=_.props.children),typeof _=="object"&&_!==null){switch(_.$$typeof){case ea:e:{for(var C=_.key,k=v;k!==null;){if(k.key===C){if(C=_.type,C===Wr){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===Dn&&up(C)===k.type){n(m,k.sibling),v=o(k,_.props),v.ref=zo(m,k,_),v.return=m,m=v;break e}n(m,k);break}else t(m,k);k=k.sibling}_.type===Wr?(v=gr(_.props.children,m.mode,E,_.key),v.return=m,m=v):(E=za(_.type,_.key,_.props,null,m.mode,E),E.ref=zo(m,v,_),E.return=m,m=E)}return a(m);case Hr: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=Ds(_,m.mode,E),v.return=m,m=v}return a(m);case Dn:return k=_._init,w(m,v,k(_._payload),E)}if(Jo(_))return y(m,v,_,E);if(Do(_))return g(m,v,_,E);da(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=Ls(_,m.mode,E),v.return=m,m=v),a(m)):n(m,v)}return w}var vo=Cm(!0),Pm=Cm(!1),Vi={},nn=rr(Vi),bi=rr(Vi),Ci=rr(Vi);function fr(e){if(e===Vi)throw Error(M(174));return e}function vd(e,t){switch(me(Ci,t),me(bi,e),me(nn,Vi),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:wc(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=wc(t,e)}ge(nn),me(nn,t)}function go(){ge(nn),ge(bi),ge(Ci)}function Am(e){fr(Ci.current);var t=fr(nn.current),n=wc(t,e.type);t!==n&&(me(bi,e),me(nn,n))}function gd(e){bi.current===e&&(ge(nn),ge(bi))}var Ae=rr(0);function cl(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 Ss=[];function yd(){for(var e=0;en?n:4,e(!0);var r=Ts.transition;Ts.transition={};try{e(!1),t()}finally{ue=n,Ts.transition=r}}function Bm(){return Lt().memoizedState}function kx(e,t,n){var r=Gn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Hm(e))Wm(t,n);else if(n=wm(e,t,n,r),n!==null){var o=lt();Wt(n,e,r,o),Km(n,t,r)}}function bx(e,t,n){var r=Gn(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Hm(e))Wm(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,Kt(l,a)){var s=t.interleaved;s===null?(o.next=o,hd(t)):(o.next=s.next,s.next=o),t.interleaved=o;return}}catch{}finally{}n=wm(e,t,o,r),n!==null&&(o=lt(),Wt(n,e,r,o),Km(n,t,r))}}function Hm(e){var t=e.alternate;return e===Se||t!==null&&t===Se}function Wm(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 Km(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ed(e,n)}}var dl={readContext:It,useCallback:Je,useContext:Je,useEffect:Je,useImperativeHandle:Je,useInsertionEffect:Je,useLayoutEffect:Je,useMemo:Je,useReducer:Je,useRef:Je,useState:Je,useDebugValue:Je,useDeferredValue:Je,useTransition:Je,useMutableSource:Je,useSyncExternalStore:Je,useId:Je,unstable_isNewReconciler:!1},Cx={readContext:It,useCallback:function(e,t){return Xt().memoizedState=[e,t===void 0?null:t],e},useContext:It,useEffect:fp,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Na(4194308,4,jm.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Na(4194308,4,e,t)},useInsertionEffect:function(e,t){return Na(4,2,e,t)},useMemo:function(e,t){var n=Xt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Xt();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=kx.bind(null,Se,e),[r.memoizedState,e]},useRef:function(e){var t=Xt();return e={current:e},t.memoizedState=e},useState:dp,useDebugValue:kd,useDeferredValue:function(e){return Xt().memoizedState=e},useTransition:function(){var e=dp(!1),t=e[0];return e=Ex.bind(null,e[1]),Xt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Se,o=Xt();if(be){if(n===void 0)throw Error(M(407));n=n()}else{if(n=t(),Ge===null)throw Error(M(349));wr&30||Rm(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,fp(Om.bind(null,r,i,e),[e]),r.flags|=2048,Si(9,$m.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Xt(),t=Ge.identifierPrefix;if(be){var n=dn,r=un;n=(r&~(1<<32-Ht(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[Jt]=t,e[ki]=r,tv(e,t,!1,!1),t.stateNode=e;e:{switch(a=kc(n,r),n){case"dialog":ve("cancel",e),ve("close",e),o=r;break;case"iframe":case"object":case"embed":ve("load",e),o=r;break;case"video":case"audio":for(o=0;oxo&&(t.flags|=128,r=!0,Uo(i,!1),t.lanes=4194304)}else{if(!r)if(e=cl(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 et(t),null}else 2*Me()-i.renderingStartTime>xo&&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,me(Ae,r?n&1|2:n&1),t):(et(t),null);case 22:case 23:return Td(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?xt&1073741824&&(et(t),t.subtreeFlags&6&&(t.flags|=8192)):et(t),null;case 24:return null;case 25:return null}throw Error(M(156,t.tag))}function I_(e,t){switch(cd(t),t.tag){case 1:return vt(t.type)&&nl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return go(),ge(mt),ge(rt),yd(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return gd(t),null;case 13:if(ge(Ae),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(M(340));mo()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ge(Ae),null;case 4:return go(),null;case 10:return pd(t.type._context),null;case 22:case 23:return Td(),null;case 24:return null;default:return null}}var pa=!1,tt=!1,L_=typeof WeakSet=="function"?WeakSet:Set,H=null;function eo(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 Qc(e,t,n){try{n()}catch(r){Ie(e,t,r)}}var wp=!1;function D_(e,t){if(Ic=Xa,e=lm(),ld(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,u=0,d=0,c=e,f=null;t:for(;;){for(var h;c!==n||o!==0&&c.nodeType!==3||(l=a+o),c!==i||r!==0&&c.nodeType!==3||(s=a+r),c.nodeType===3&&(a+=c.nodeValue.length),(h=c.firstChild)!==null;)f=c,c=h;for(;;){if(c===e)break t;if(f===n&&++u===o&&(l=a),f===i&&++d===r&&(s=a),(h=c.nextSibling)!==null)break;c=f,f=c.parentNode}c=h}n=l===-1||s===-1?null:{start:l,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(Lc={focusedElem:e,selectionRange:n},Xa=!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:jt(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=wp,wp=!1,y}function ci(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&&Qc(t,n,i)}o=o.next}while(o!==r)}}function Nl(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 Zc(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 ov(e){var t=e.alternate;t!==null&&(e.alternate=null,ov(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Jt],delete t[ki],delete t[Mc],delete t[g_],delete t[y_])),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 iv(e){return e.tag===5||e.tag===3||e.tag===4}function Ep(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||iv(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 Xc(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=tl));else if(r!==4&&(e=e.child,e!==null))for(Xc(e,t,n),e=e.sibling;e!==null;)Xc(e,t,n),e=e.sibling}function Jc(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(Jc(e,t,n),e=e.sibling;e!==null;)Jc(e,t,n),e=e.sibling}var Ye=null,Ft=!1;function Rn(e,t,n){for(n=n.child;n!==null;)av(e,t,n),n=n.sibling}function av(e,t,n){if(tn&&typeof tn.onCommitFiberUnmount=="function")try{tn.onCommitFiberUnmount(Sl,n)}catch{}switch(n.tag){case 5:tt||eo(n,t);case 6:var r=Ye,o=Ft;Ye=null,Rn(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?Ps(e.parentNode,n):e.nodeType===1&&Ps(e,n),yi(e)):Ps(Ye,n.stateNode));break;case 4:r=Ye,o=Ft,Ye=n.stateNode.containerInfo,Ft=!0,Rn(e,t,n),Ye=r,Ft=o;break;case 0:case 11:case 14:case 15:if(!tt&&(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)&&Qc(n,t,a),o=o.next}while(o!==r)}Rn(e,t,n);break;case 1:if(!tt&&(eo(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)}Rn(e,t,n);break;case 21:Rn(e,t,n);break;case 22:n.mode&1?(tt=(r=tt)||n.memoizedState!==null,Rn(e,t,n),tt=r):Rn(e,t,n);break;default:Rn(e,t,n)}}function kp(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new L_),t.forEach(function(r){var o=H_.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function Mt(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*M_(r/1960))-r,10e?16:e,zn===null)var r=!1;else{if(e=zn,zn=null,hl=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()-Ad?vr(e,0):Pd|=n),gt(e,t)}function hv(e,t){t===0&&(e.mode&1?(t=oa,oa<<=1,!(oa&130023424)&&(oa=4194304)):t=1);var n=lt();e=vn(e,t),e!==null&&(Fi(e,t,n),gt(e,n))}function B_(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),hv(e,n)}function H_(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),hv(e,n)}var mv;mv=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||mt.current)ht=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return ht=!1,$_(e,t,n);ht=!!(e.flags&131072)}else ht=!1,be&&t.flags&1048576&&ym(t,il,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Ma(e,t),e=t.pendingProps;var o=ho(t,rt.current);so(t,n),o=_d(null,t,r,e,o,n);var i=wd();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,vt(r)?(i=!0,rl(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,md(t),o.updater=Ll,t.stateNode=o,o._reactInternals=t,Bc(t,r,e,n),t=Kc(null,t,r,!0,i,n)):(t.tag=0,be&&i&&sd(t),it(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Ma(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=K_(r),e=jt(r,e),o){case 0:t=Wc(null,t,r,e,n);break e;case 1:t=yp(null,t,r,e,n);break e;case 11:t=vp(null,t,r,e,n);break e;case 14:t=gp(null,t,r,jt(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:jt(r,o),Wc(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:jt(r,o),yp(e,t,r,o,n);case 3:e:{if(Xm(t),e===null)throw Error(M(387));r=t.pendingProps,i=t.memoizedState,o=i.element,Em(e,t),sl(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=yo(Error(M(423)),t),t=xp(e,t,r,n,o);break e}else if(r!==o){o=yo(Error(M(424)),t),t=xp(e,t,r,n,o);break e}else for(wt=Hn(t.stateNode.containerInfo.firstChild),Et=t,be=!0,Ut=null,n=Pm(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(mo(),r===o){t=gn(e,t,n);break e}it(e,t,r,n)}t=t.child}return t;case 5:return Am(t),e===null&&zc(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,a=o.children,Dc(r,o)?a=null:i!==null&&Dc(r,i)&&(t.flags|=32),Zm(e,t),it(e,t,a,n),t.child;case 6:return e===null&&zc(t),null;case 13:return Jm(e,t,n);case 4:return vd(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=vo(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:jt(r,o),vp(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,me(al,r._currentValue),r._currentValue=a,i!==null)if(Kt(i.value,a)){if(i.children===o.children&&!mt.current){t=gn(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=fn(-1,n&-n),s.tag=2;var u=i.updateQueue;if(u!==null){u=u.shared;var d=u.pending;d===null?s.next=s:(s.next=d.next,d.next=s),u.pending=s}}i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),Uc(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),Uc(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,so(t,n),o=It(o),r=r(o),t.flags|=1,it(e,t,r,n),t.child;case 14:return r=t.type,o=jt(r,t.pendingProps),o=jt(r.type,o),gp(e,t,r,o,n);case 15:return Ym(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:jt(r,o),Ma(e,t),t.tag=1,vt(r)?(e=!0,rl(t)):e=!1,so(t,n),bm(t,r,o),Bc(t,r,o,n),Kc(null,t,r,!0,e,n);case 19:return ev(e,t,n);case 22:return Qm(e,t,n)}throw Error(M(156,t.tag))};function vv(e,t){return V0(e,t)}function W_(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 $t(e,t,n,r){return new W_(e,t,n,r)}function $d(e){return e=e.prototype,!(!e||!e.isReactComponent)}function K_(e){if(typeof e=="function")return $d(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Qu)return 11;if(e===Zu)return 14}return 2}function qn(e,t){var n=e.alternate;return n===null?(n=$t(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")$d(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Wr:return gr(n.children,o,i,t);case Yu:a=8,o|=8;break;case pc:return e=$t(12,n,t,o|2),e.elementType=pc,e.lanes=i,e;case hc:return e=$t(13,n,t,o),e.elementType=hc,e.lanes=i,e;case mc:return e=$t(19,n,t,o),e.elementType=mc,e.lanes=i,e;case C0:return jl(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case k0:a=10;break e;case b0:a=9;break e;case Qu:a=11;break e;case Zu:a=14;break e;case Dn:a=16,r=null;break e}throw Error(M(130,e==null?e:typeof e,""))}return t=$t(a,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function gr(e,t,n,r){return e=$t(7,e,r,t),e.lanes=n,e}function jl(e,t,n,r){return e=$t(22,e,r,t),e.elementType=C0,e.lanes=n,e.stateNode={isHidden:!1},e}function Ls(e,t,n){return e=$t(6,e,null,t),e.lanes=n,e}function Ds(e,t,n){return t=$t(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function G_(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=ms(0),this.expirationTimes=ms(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ms(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Od(e,t,n,r,o,i,a,l,s){return e=new G_(e,t,n,l,s),t===1?(t=1,i===!0&&(t|=8)):t=0,i=$t(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},md(i),e}function q_(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(_v)}catch(e){console.error(e)}}_v(),y0.exports=Ct;var So=y0.exports;const wv=tr(So),J_=Uu({__proto__:null,default:wv},[So]);var Ev,$p=So;$p.createRoot,Ev=$p.hydrateRoot;/** +`+i.stack}return{value:e,source:t,stack:o,digest:null}}function Os(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Hc(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var Sx=typeof WeakMap=="function"?WeakMap:Map;function Gm(e,t,n){n=fn(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){pl||(pl=!0,eu=r),Hc(e,t)},n}function qm(e,t,n){n=fn(-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(){Hc(e,t)}}var i=e.stateNode;return i!==null&&typeof i.componentDidCatch=="function"&&(n.callback=function(){Hc(e,t),typeof r!="function"&&(Kn===null?Kn=new Set([this]):Kn.add(this));var a=t.stack;this.componentDidCatch(t.value,{componentStack:a!==null?a:""})}),n}function pp(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Sx;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=Vx.bind(null,e,t,n),t.then(e,e))}function hp(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 mp(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=fn(-1,1),t.tag=2,Wn(n,t,1))),n.lanes|=1),e)}var Tx=wn.ReactCurrentOwner,ht=!1;function it(e,t,n,r){t.child=e===null?Pm(t,null,n,r):vo(t,e.child,n,r)}function vp(e,t,n,r,o){n=n.render;var i=t.ref;return so(t,o),r=_d(e,t,n,r,i,o),n=wd(),e!==null&&!ht?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,gn(e,t,o)):(be&&n&&sd(t),t.flags|=1,it(e,t,r,o),t.child)}function gp(e,t,n,r,o){if(e===null){var i=n.type;return typeof i=="function"&&!$d(i)&&i.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=i,Ym(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 gn(e,t,o)}return t.flags|=1,e=qn(i,r),e.ref=t.ref,e.return=t,t.child=e}function Ym(e,t,n,r,o){if(e!==null){var i=e.memoizedProps;if(_i(i,r)&&e.ref===t.ref)if(ht=!1,t.pendingProps=r=i,(e.lanes&o)!==0)e.flags&131072&&(ht=!0);else return t.lanes=e.lanes,gn(e,t,o)}return Wc(e,t,n,r,o)}function Qm(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},me(to,xt),xt|=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,me(to,xt),xt|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=i!==null?i.baseLanes:n,me(to,xt),xt|=r}else i!==null?(r=i.baseLanes|n,t.memoizedState=null):r=n,me(to,xt),xt|=r;return it(e,t,o,n),t.child}function Zm(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Wc(e,t,n,r,o){var i=vt(n)?xr:rt.current;return i=ho(t,i),so(t,o),n=_d(e,t,n,r,i,o),r=wd(),e!==null&&!ht?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,gn(e,t,o)):(be&&r&&sd(t),t.flags|=1,it(e,t,n,o),t.child)}function yp(e,t,n,r,o){if(vt(n)){var i=!0;rl(t)}else i=!1;if(so(t,o),t.stateNode===null)Ma(e,t),bm(t,n,r),Bc(t,n,r,o),r=!0;else if(e===null){var a=t.stateNode,l=t.memoizedProps;a.props=l;var s=a.context,u=n.contextType;typeof u=="object"&&u!==null?u=It(u):(u=vt(n)?xr:rt.current,u=ho(t,u));var d=n.getDerivedStateFromProps,c=typeof d=="function"||typeof a.getSnapshotBeforeUpdate=="function";c||typeof a.UNSAFE_componentWillReceiveProps!="function"&&typeof a.componentWillReceiveProps!="function"||(l!==r||s!==u)&&cp(t,a,r,u),Nn=!1;var f=t.memoizedState;a.state=f,sl(t,r,a,o),s=t.memoizedState,l!==r||f!==s||mt.current||Nn?(typeof d=="function"&&(Vc(t,n,d,r),s=t.memoizedState),(l=Nn||sp(t,n,l,r,f,s,u))?(c||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=u,r=l):(typeof a.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,Em(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:jt(t.type,l),a.props=u,c=t.pendingProps,f=a.context,s=n.contextType,typeof s=="object"&&s!==null?s=It(s):(s=vt(n)?xr:rt.current,s=ho(t,s));var h=n.getDerivedStateFromProps;(d=typeof h=="function"||typeof a.getSnapshotBeforeUpdate=="function")||typeof a.UNSAFE_componentWillReceiveProps!="function"&&typeof a.componentWillReceiveProps!="function"||(l!==c||f!==s)&&cp(t,a,r,s),Nn=!1,f=t.memoizedState,a.state=f,sl(t,r,a,o);var y=t.memoizedState;l!==c||f!==y||mt.current||Nn?(typeof h=="function"&&(Vc(t,n,h,r),y=t.memoizedState),(u=Nn||sp(t,n,u,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=u):(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 Kc(e,t,n,r,i,o)}function Kc(e,t,n,r,o,i){Zm(e,t);var a=(t.flags&128)!==0;if(!r&&!a)return o&&rp(t,n,!1),gn(e,t,i);r=t.stateNode,Tx.current=t;var l=a&&typeof n.getDerivedStateFromError!="function"?null:r.render();return t.flags|=1,e!==null&&a?(t.child=vo(t,e.child,null,i),t.child=vo(t,null,l,i)):it(e,t,l,i),t.memoizedState=r.state,o&&rp(t,n,!0),t.child}function Xm(e){var t=e.stateNode;t.pendingContext?np(e,t.pendingContext,t.pendingContext!==t.context):t.context&&np(e,t.context,!1),vd(e,t.containerInfo)}function xp(e,t,n,r,o){return mo(),ud(o),t.flags|=256,it(e,t,n,r),t.child}var Gc={dehydrated:null,treeContext:null,retryLane:0};function qc(e){return{baseLanes:e,cachePool:null,transitions:null}}function Jm(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),me(Ae,o&1),e===null)return zc(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=jl(a,r,0,null),e=gr(e,r,n,null),i.return=t,e.return=t,i.sibling=e,t.child=i,t.child.memoizedState=qc(n),t.memoizedState=Gc,e):bd(t,a));if(o=e.memoizedState,o!==null&&(l=o.dehydrated,l!==null))return Rx(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=qn(o,s),r.subtreeFlags=o.subtreeFlags&14680064),l!==null?i=qn(l,i):(i=gr(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?qc(n):{baseLanes:a.baseLanes|n,cachePool:null,transitions:a.transitions},i.memoizedState=a,i.childLanes=e.childLanes&~n,t.memoizedState=Gc,r}return i=e.child,e=i.sibling,r=qn(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 bd(e,t){return t=jl({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function fa(e,t,n,r){return r!==null&&ud(r),vo(t,e.child,null,n),e=bd(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Rx(e,t,n,r,o,i,a){if(n)return t.flags&256?(t.flags&=-257,r=Os(Error(M(422))),fa(e,t,a,r)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(i=r.fallback,o=t.mode,r=jl({mode:"visible",children:r.children},o,0,null),i=gr(i,o,a,null),i.flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,t.mode&1&&vo(t,e.child,null,a),t.child.memoizedState=qc(a),t.memoizedState=Gc,i);if(!(t.mode&1))return fa(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=Os(i,r,void 0),fa(e,t,a,r)}if(l=(a&e.childLanes)!==0,ht||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,vn(e,o),Wt(r,e,o,-1))}return Rd(),r=Os(Error(M(421))),fa(e,t,a,r)}return o.data==="$?"?(t.flags|=128,t.child=e.child,t=Bx.bind(null,e),o._reactRetry=t,null):(e=i.treeContext,wt=Hn(o.nextSibling),Et=t,be=!0,Ut=null,e!==null&&(Tt[Rt++]=un,Tt[Rt++]=dn,Tt[Rt++]=_r,un=e.id,dn=e.overflow,_r=t),t=bd(t,r.children),t.flags|=4096,t)}function _p(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),Uc(e.return,t,n)}function Is(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 ev(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&&_p(e,n,t);else if(e.tag===19)_p(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(me(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&&cl(e)===null&&(o=n),n=n.sibling;n=o,n===null?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),Is(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&&cl(e)===null){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}Is(t,!0,n,null,i);break;case"together":Is(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Ma(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function gn(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Er|=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=qn(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=qn(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function $x(e,t,n){switch(t.tag){case 3:Xm(t),mo();break;case 5:Am(t);break;case 1:vt(t.type)&&rl(t);break;case 4:vd(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;me(al,r._currentValue),r._currentValue=o;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated!==null?(me(Ae,Ae.current&1),t.flags|=128,null):n&t.child.childLanes?Jm(e,t,n):(me(Ae,Ae.current&1),e=gn(e,t,n),e!==null?e.sibling:null);me(Ae,Ae.current&1);break;case 19:if(r=(n&t.childLanes)!==0,e.flags&128){if(r)return ev(e,t,n);t.flags|=128}if(o=t.memoizedState,o!==null&&(o.rendering=null,o.tail=null,o.lastEffect=null),me(Ae,Ae.current),r)break;return null;case 22:case 23:return t.lanes=0,Qm(e,t,n)}return gn(e,t,n)}var tv,Yc,nv,rv;tv=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}};Yc=function(){};nv=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,fr(nn.current);var i=null;switch(n){case"input":o=gc(e,o),r=gc(e,r),i=[];break;case"select":o=Te({},o,{value:void 0}),r=Te({},r,{value:void 0}),i=[];break;case"textarea":o=_c(e,o),r=_c(e,r),i=[];break;default:typeof o.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=tl)}Ec(n,r);var a;n=null;for(u in o)if(!r.hasOwnProperty(u)&&o.hasOwnProperty(u)&&o[u]!=null)if(u==="style"){var l=o[u];for(a in l)l.hasOwnProperty(a)&&(n||(n={}),n[a]="")}else u!=="dangerouslySetInnerHTML"&&u!=="children"&&u!=="suppressContentEditableWarning"&&u!=="suppressHydrationWarning"&&u!=="autoFocus"&&(pi.hasOwnProperty(u)?i||(i=[]):(i=i||[]).push(u,null));for(u in r){var s=r[u];if(l=o!=null?o[u]:void 0,r.hasOwnProperty(u)&&s!==l&&(s!=null||l!=null))if(u==="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(u,n)),n=s;else u==="dangerouslySetInnerHTML"?(s=s?s.__html:void 0,l=l?l.__html:void 0,s!=null&&l!==s&&(i=i||[]).push(u,s)):u==="children"?typeof s!="string"&&typeof s!="number"||(i=i||[]).push(u,""+s):u!=="suppressContentEditableWarning"&&u!=="suppressHydrationWarning"&&(pi.hasOwnProperty(u)?(s!=null&&u==="onScroll"&&ve("scroll",e),i||l===s||(i=[])):(i=i||[]).push(u,s))}n&&(i=i||[]).push("style",n);var u=i;(t.updateQueue=u)&&(t.flags|=4)}};rv=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 et(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 Ox(e,t,n){var r=t.pendingProps;switch(cd(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return et(t),null;case 1:return vt(t.type)&&nl(),et(t),null;case 3:return r=t.stateNode,go(),ge(mt),ge(rt),yd(),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,Ut!==null&&(ru(Ut),Ut=null))),Yc(e,t),et(t),null;case 5:gd(t);var o=fr(Ci.current);if(n=t.type,e!==null&&t.stateNode!=null)nv(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 et(t),null}if(e=fr(nn.current),ua(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[Jt]=t,r[ki]=i,e=(t.mode&1)!==0,n){case"dialog":ve("cancel",r),ve("close",r);break;case"iframe":case"object":case"embed":ve("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[Jt]=t,e[ki]=r,tv(e,t,!1,!1),t.stateNode=e;e:{switch(a=kc(n,r),n){case"dialog":ve("cancel",e),ve("close",e),o=r;break;case"iframe":case"object":case"embed":ve("load",e),o=r;break;case"video":case"audio":for(o=0;oxo&&(t.flags|=128,r=!0,Uo(i,!1),t.lanes=4194304)}else{if(!r)if(e=cl(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 et(t),null}else 2*Me()-i.renderingStartTime>xo&&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,me(Ae,r?n&1|2:n&1),t):(et(t),null);case 22:case 23:return Td(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?xt&1073741824&&(et(t),t.subtreeFlags&6&&(t.flags|=8192)):et(t),null;case 24:return null;case 25:return null}throw Error(M(156,t.tag))}function Ix(e,t){switch(cd(t),t.tag){case 1:return vt(t.type)&&nl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return go(),ge(mt),ge(rt),yd(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return gd(t),null;case 13:if(ge(Ae),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(M(340));mo()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ge(Ae),null;case 4:return go(),null;case 10:return pd(t.type._context),null;case 22:case 23:return Td(),null;case 24:return null;default:return null}}var pa=!1,tt=!1,Lx=typeof WeakSet=="function"?WeakSet:Set,H=null;function eo(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 Qc(e,t,n){try{n()}catch(r){Ie(e,t,r)}}var wp=!1;function Dx(e,t){if(Ic=Xa,e=lm(),ld(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,u=0,d=0,c=e,f=null;t:for(;;){for(var h;c!==n||o!==0&&c.nodeType!==3||(l=a+o),c!==i||r!==0&&c.nodeType!==3||(s=a+r),c.nodeType===3&&(a+=c.nodeValue.length),(h=c.firstChild)!==null;)f=c,c=h;for(;;){if(c===e)break t;if(f===n&&++u===o&&(l=a),f===i&&++d===r&&(s=a),(h=c.nextSibling)!==null)break;c=f,f=c.parentNode}c=h}n=l===-1||s===-1?null:{start:l,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(Lc={focusedElem:e,selectionRange:n},Xa=!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:jt(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=wp,wp=!1,y}function ci(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&&Qc(t,n,i)}o=o.next}while(o!==r)}}function Nl(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 Zc(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 ov(e){var t=e.alternate;t!==null&&(e.alternate=null,ov(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Jt],delete t[ki],delete t[Mc],delete t[gx],delete t[yx])),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 iv(e){return e.tag===5||e.tag===3||e.tag===4}function Ep(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||iv(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 Xc(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=tl));else if(r!==4&&(e=e.child,e!==null))for(Xc(e,t,n),e=e.sibling;e!==null;)Xc(e,t,n),e=e.sibling}function Jc(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(Jc(e,t,n),e=e.sibling;e!==null;)Jc(e,t,n),e=e.sibling}var Ye=null,Ft=!1;function Rn(e,t,n){for(n=n.child;n!==null;)av(e,t,n),n=n.sibling}function av(e,t,n){if(tn&&typeof tn.onCommitFiberUnmount=="function")try{tn.onCommitFiberUnmount(Sl,n)}catch{}switch(n.tag){case 5:tt||eo(n,t);case 6:var r=Ye,o=Ft;Ye=null,Rn(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?Ps(e.parentNode,n):e.nodeType===1&&Ps(e,n),yi(e)):Ps(Ye,n.stateNode));break;case 4:r=Ye,o=Ft,Ye=n.stateNode.containerInfo,Ft=!0,Rn(e,t,n),Ye=r,Ft=o;break;case 0:case 11:case 14:case 15:if(!tt&&(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)&&Qc(n,t,a),o=o.next}while(o!==r)}Rn(e,t,n);break;case 1:if(!tt&&(eo(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)}Rn(e,t,n);break;case 21:Rn(e,t,n);break;case 22:n.mode&1?(tt=(r=tt)||n.memoizedState!==null,Rn(e,t,n),tt=r):Rn(e,t,n);break;default:Rn(e,t,n)}}function kp(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Lx),t.forEach(function(r){var o=Hx.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function Mt(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*Mx(r/1960))-r,10e?16:e,zn===null)var r=!1;else{if(e=zn,zn=null,hl=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()-Ad?vr(e,0):Pd|=n),gt(e,t)}function hv(e,t){t===0&&(e.mode&1?(t=oa,oa<<=1,!(oa&130023424)&&(oa=4194304)):t=1);var n=lt();e=vn(e,t),e!==null&&(Fi(e,t,n),gt(e,n))}function Bx(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),hv(e,n)}function Hx(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),hv(e,n)}var mv;mv=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||mt.current)ht=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return ht=!1,$x(e,t,n);ht=!!(e.flags&131072)}else ht=!1,be&&t.flags&1048576&&ym(t,il,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Ma(e,t),e=t.pendingProps;var o=ho(t,rt.current);so(t,n),o=_d(null,t,r,e,o,n);var i=wd();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,vt(r)?(i=!0,rl(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,md(t),o.updater=Ll,t.stateNode=o,o._reactInternals=t,Bc(t,r,e,n),t=Kc(null,t,r,!0,i,n)):(t.tag=0,be&&i&&sd(t),it(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Ma(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=Kx(r),e=jt(r,e),o){case 0:t=Wc(null,t,r,e,n);break e;case 1:t=yp(null,t,r,e,n);break e;case 11:t=vp(null,t,r,e,n);break e;case 14:t=gp(null,t,r,jt(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:jt(r,o),Wc(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:jt(r,o),yp(e,t,r,o,n);case 3:e:{if(Xm(t),e===null)throw Error(M(387));r=t.pendingProps,i=t.memoizedState,o=i.element,Em(e,t),sl(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=yo(Error(M(423)),t),t=xp(e,t,r,n,o);break e}else if(r!==o){o=yo(Error(M(424)),t),t=xp(e,t,r,n,o);break e}else for(wt=Hn(t.stateNode.containerInfo.firstChild),Et=t,be=!0,Ut=null,n=Pm(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(mo(),r===o){t=gn(e,t,n);break e}it(e,t,r,n)}t=t.child}return t;case 5:return Am(t),e===null&&zc(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,a=o.children,Dc(r,o)?a=null:i!==null&&Dc(r,i)&&(t.flags|=32),Zm(e,t),it(e,t,a,n),t.child;case 6:return e===null&&zc(t),null;case 13:return Jm(e,t,n);case 4:return vd(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=vo(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:jt(r,o),vp(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,me(al,r._currentValue),r._currentValue=a,i!==null)if(Kt(i.value,a)){if(i.children===o.children&&!mt.current){t=gn(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=fn(-1,n&-n),s.tag=2;var u=i.updateQueue;if(u!==null){u=u.shared;var d=u.pending;d===null?s.next=s:(s.next=d.next,d.next=s),u.pending=s}}i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),Uc(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),Uc(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,so(t,n),o=It(o),r=r(o),t.flags|=1,it(e,t,r,n),t.child;case 14:return r=t.type,o=jt(r,t.pendingProps),o=jt(r.type,o),gp(e,t,r,o,n);case 15:return Ym(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:jt(r,o),Ma(e,t),t.tag=1,vt(r)?(e=!0,rl(t)):e=!1,so(t,n),bm(t,r,o),Bc(t,r,o,n),Kc(null,t,r,!0,e,n);case 19:return ev(e,t,n);case 22:return Qm(e,t,n)}throw Error(M(156,t.tag))};function vv(e,t){return V0(e,t)}function Wx(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 $t(e,t,n,r){return new Wx(e,t,n,r)}function $d(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Kx(e){if(typeof e=="function")return $d(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Qu)return 11;if(e===Zu)return 14}return 2}function qn(e,t){var n=e.alternate;return n===null?(n=$t(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")$d(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Wr:return gr(n.children,o,i,t);case Yu:a=8,o|=8;break;case pc:return e=$t(12,n,t,o|2),e.elementType=pc,e.lanes=i,e;case hc:return e=$t(13,n,t,o),e.elementType=hc,e.lanes=i,e;case mc:return e=$t(19,n,t,o),e.elementType=mc,e.lanes=i,e;case C0:return jl(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case k0:a=10;break e;case b0:a=9;break e;case Qu:a=11;break e;case Zu:a=14;break e;case Dn:a=16,r=null;break e}throw Error(M(130,e==null?e:typeof e,""))}return t=$t(a,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function gr(e,t,n,r){return e=$t(7,e,r,t),e.lanes=n,e}function jl(e,t,n,r){return e=$t(22,e,r,t),e.elementType=C0,e.lanes=n,e.stateNode={isHidden:!1},e}function Ls(e,t,n){return e=$t(6,e,null,t),e.lanes=n,e}function Ds(e,t,n){return t=$t(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Gx(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=ms(0),this.expirationTimes=ms(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ms(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Od(e,t,n,r,o,i,a,l,s){return e=new Gx(e,t,n,l,s),t===1?(t=1,i===!0&&(t|=8)):t=0,i=$t(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},md(i),e}function qx(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(_v)}catch(e){console.error(e)}}_v(),y0.exports=Ct;var So=y0.exports;const wv=tr(So),Jx=Uu({__proto__:null,default:wv},[So]);var Ev,$p=So;$p.createRoot,Ev=$p.hydrateRoot;/** * @remix-run/router v1.15.1 * * Copyright (c) Remix Software Inc. @@ -46,8 +46,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 _o(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function t2(){return Math.random().toString(36).substr(2,8)}function Ip(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"?En(t):t,{state:n,key:t&&t.key||r||t2()})}function br(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 En(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 n2(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,u=d();u==null&&(u=0,a.replaceState(Le({},a.state,{idx:u}),""));function d(){return(a.state||{idx:null}).idx}function c(){l=De.Pop;let w=d(),m=w==null?null:w-u;u=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),u=d()+1;let _=Ip(v,u),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),u=d();let _=Ip(v,u),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:br(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(Op,c),s=w,()=>{o.removeEventListener(Op,c),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 r2=new Set(["lazy","caseSensitive","path","id","index","children"]);function o2(e){return e.index===!0}function ou(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`),o2(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=ou(o.children,t,a,r)),s}})}function pr(e,t,n){n===void 0&&(n="/");let r=typeof t=="string"?En(t):t,o=Sr(r.pathname||"/",n);if(o==null)return null;let i=bv(e);i2(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 u=pn([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 "'+u+'".')),bv(i.children,t,d,u)),!(i.path==null&&!i.index)&&t.push({path:u,score:f2(u,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 Cv(i.path))o(i,a,s)}),t}function Cv(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=Cv(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 i2(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:p2(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const a2=/^:[\w-]+$/,l2=3,s2=2,c2=1,u2=10,d2=-2,Lp=e=>e==="*";function f2(e,t){let n=e.split("/"),r=n.length;return n.some(Lp)&&(r+=d2),t&&(r+=s2),n.filter(o=>!Lp(o)).reduce((o,i)=>o+(a2.test(i)?l2:i===""?c2:u2),r)}function p2(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 h2(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[c]||"";a=i.slice(0,i.length-g.length).replace(/(.)\/+$/,"$1")}const y=l[c];return h&&!y?u[f]=void 0:u[f]=(y||"").replace(/%2F/g,"/"),u},{}),pathname:i,pathnameBase:a,pattern:e}}function m2(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),_o(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 v2(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return _o(!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 Sr(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 g2(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:o=""}=typeof e=="string"?En(e):e;return{pathname:n?n.startsWith("/")?n:y2(n,t):t,search:_2(r),hash:w2(o)}}function y2(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 Ns(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 Pv(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Nd(e,t){let n=Pv(e);return t?n.map((r,o)=>o===e.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function Md(e,t,n,r){r===void 0&&(r=!1);let o;typeof e=="string"?o=En(e):(o=Le({},e),ne(!o.pathname||!o.pathname.includes("?"),Ns("?","pathname","search",o)),ne(!o.pathname||!o.pathname.includes("#"),Ns("#","pathname","hash",o)),ne(!o.search||!o.search.includes("#"),Ns("#","search","hash",o)));let i=e===""||o.pathname==="",a=i?"/":o.pathname,l;if(a==null)l=n;else{let c=t.length-1;if(!r&&a.startsWith("..")){let f=a.split("/");for(;f[0]==="..";)f.shift(),c-=1;o.pathname=f.join("/")}l=c>=0?t[c]:"/"}let s=g2(o,l),u=a&&a!=="/"&&a.endsWith("/"),d=(i||a===".")&&n.endsWith("/");return!s.pathname.endsWith("/")&&(u||d)&&(s.pathname+="/"),s}const pn=e=>e.join("/").replace(/\/\/+/g,"/"),x2=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),_2=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,w2=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class jd{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 Av(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const Sv=["post","put","patch","delete"],E2=new Set(Sv),k2=["get",...Sv],b2=new Set(k2),C2=new Set([301,302,303,307,308]),P2=new Set([307,308]),Ms={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},A2={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},Tv=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,S2=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),Rv="remix-router-transitions";function T2(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 S=e.detectErrorBoundary;o=R=>({hasErrorBoundary:S(R)})}else o=S2;let i={},a=ou(e.routes,o,void 0,i),l,s=e.basename||"/",u=Le({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1},e.future),d=null,c=new Set,f=null,h=null,y=null,g=e.hydrationData!=null,w=pr(a,e.history.location,s),m=null;if(w==null){let S=St(404,{pathname:e.history.location.pathname}),{matches:R,route:I}=Vp(a);w=R,m={[I.id]:S}}let v,_=w.some(S=>S.route.lazy),E=w.some(S=>S.route.loader);if(_)v=!1;else if(!E)v=!0;else if(u.v7_partialHydration){let S=e.hydrationData?e.hydrationData.loaderData:null,R=e.hydrationData?e.hydrationData.errors:null;v=w.every(I=>I.route.loader&&I.route.loader.hydrate!==!0&&(S&&S[I.route.id]!==void 0||R&&R[I.route.id]!==void 0))}else v=e.hydrationData!=null;let C,k={historyAction:e.history.action,location:e.history.location,matches:w,initialized:v,navigation:Ms,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,T,O=!1,j=new Map,N=null,F=!1,$=!1,U=[],W=[],V=new Map,L=0,z=-1,K=new Map,J=new Set,ce=new Map,Ve=new Map,ye=new Set,$e=new Map,xe=new Map,Be=!1;function _e(){if(d=e.history.listen(S=>{let{action:R,location:I,delta:B}=S;if(Be){Be=!1;return}_o(xe.size===0||B!=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 G=_f({currentLocation:k.location,nextLocation:I,historyAction:R});if(G&&B!=null){Be=!0,e.history.go(B*-1),Qi(G,{state:"blocked",location:I,proceed(){Qi(G,{state:"proceeding",proceed:void 0,reset:void 0,location:I}),e.history.go(B)},reset(){let oe=new Map(k.blockers);oe.set(G,Bo),Pe({blockers:oe})}});return}return yt(R,I)}),n){z2(t,j);let S=()=>U2(t,j);t.addEventListener("pagehide",S),N=()=>t.removeEventListener("pagehide",S)}return k.initialized||yt(De.Pop,k.location,{initialHydration:!0}),C}function Ce(){d&&d(),N&&N(),c.clear(),T&&T.abort(),k.fetchers.forEach((S,R)=>Yi(R)),k.blockers.forEach((S,R)=>xf(R))}function Nt(S){return c.add(S),()=>c.delete(S)}function Pe(S,R){R===void 0&&(R={}),k=Le({},k,S);let I=[],B=[];u.v7_fetcherPersist&&k.fetchers.forEach((G,oe)=>{G.state==="idle"&&(ye.has(oe)?B.push(oe):I.push(oe))}),[...c].forEach(G=>G(k,{deletedFetchers:B,unstable_viewTransitionOpts:R.viewTransitionOpts,unstable_flushSync:R.flushSync===!0})),u.v7_fetcherPersist&&(I.forEach(G=>k.fetchers.delete(G)),B.forEach(G=>Yi(G)))}function dt(S,R,I){var B,G;let{flushSync:oe}=I===void 0?{}:I,X=k.actionData!=null&&k.navigation.formMethod!=null&&zt(k.navigation.formMethod)&&k.navigation.state==="loading"&&((B=S.state)==null?void 0:B._isRedirect)!==!0,Z;R.actionData?Object.keys(R.actionData).length>0?Z=R.actionData:Z=null:X?Z=k.actionData:Z=null;let Y=R.loaderData?Up(k.loaderData,R.loaderData,R.matches||[],R.errors):k.loaderData,ae=k.blockers;ae.size>0&&(ae=new Map(ae),ae.forEach((pe,qe)=>ae.set(qe,Bo)));let He=A===!0||k.navigation.formMethod!=null&&zt(k.navigation.formMethod)&&((G=S.state)==null?void 0:G._isRedirect)!==!0;l&&(a=l,l=void 0),F||P===De.Pop||(P===De.Push?e.history.push(S,S.state):P===De.Replace&&e.history.replace(S,S.state));let te;if(P===De.Pop){let pe=j.get(k.location.pathname);pe&&pe.has(S.pathname)?te={currentLocation:k.location,nextLocation:S}:j.has(S.pathname)&&(te={currentLocation:S,nextLocation:k.location})}else if(O){let pe=j.get(k.location.pathname);pe?pe.add(S.pathname):(pe=new Set([S.pathname]),j.set(k.location.pathname,pe)),te={currentLocation:k.location,nextLocation:S}}Pe(Le({},R,{actionData:Z,loaderData:Y,historyAction:P,location:S,initialized:!0,navigation:Ms,revalidation:"idle",restoreScrollPosition:Ef(S,R.matches||k.matches),preventScrollReset:He,blockers:ae}),{viewTransitionOpts:te,flushSync:oe===!0}),P=De.Pop,A=!1,O=!1,F=!1,$=!1,U=[],W=[]}async function Gi(S,R){if(typeof S=="number"){e.history.go(S);return}let I=iu(k.location,k.matches,s,u.v7_prependBasename,S,u.v7_relativeSplatPath,R==null?void 0:R.fromRouteId,R==null?void 0:R.relative),{path:B,submission:G,error:oe}=Dp(u.v7_normalizeFormMethod,!1,I,R),X=k.location,Z=Ri(k.location,B,R&&R.state);Z=Le({},Z,e.history.encodeLocation(Z));let Y=R&&R.replace!=null?R.replace:void 0,ae=De.Push;Y===!0?ae=De.Replace:Y===!1||G!=null&&zt(G.formMethod)&&G.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,pe=_f({currentLocation:X,nextLocation:Z,historyAction:ae});if(pe){Qi(pe,{state:"blocked",location:Z,proceed(){Qi(pe,{state:"proceeding",proceed:void 0,reset:void 0,location:Z}),Gi(S,R)},reset(){let qe=new Map(k.blockers);qe.set(pe,Bo),Pe({blockers:qe})}});return}return await yt(ae,Z,{submission:G,pendingError:oe,preventScrollReset:He,replace:R&&R.replace,enableViewTransition:R&&R.unstable_viewTransition,flushSync:te})}function Jl(){if(os(),Pe({revalidation:"loading"}),k.navigation.state!=="submitting"){if(k.navigation.state==="idle"){yt(k.historyAction,k.location,{startUninterruptedRevalidation:!0});return}yt(P||k.historyAction,k.navigation.location,{overrideNavigation:k.navigation})}}async function yt(S,R,I){T&&T.abort(),T=null,P=S,F=(I&&I.startUninterruptedRevalidation)===!0,ky(k.location,k.matches),A=(I&&I.preventScrollReset)===!0,O=(I&&I.enableViewTransition)===!0;let B=l||a,G=I&&I.overrideNavigation,oe=pr(B,R,s),X=(I&&I.flushSync)===!0;if(!oe){let qe=St(404,{pathname:R.pathname}),{matches:At,route:We}=Vp(B);is(),dt(R,{matches:At,loaderData:{},errors:{[We.id]:qe}},{flushSync:X});return}if(k.initialized&&!$&&L2(k.location,R)&&!(I&&I.submission&&zt(I.submission.formMethod))){dt(R,{matches:oe},{flushSync:X});return}T=new AbortController;let Z=Wo(e.history,R,T.signal,I&&I.submission),Y,ae;if(I&&I.pendingError)ae={[fi(oe).route.id]:I.pendingError};else if(I&&I.submission&&zt(I.submission.formMethod)){let qe=await qi(Z,R,I.submission,oe,{replace:I.replace,flushSync:X});if(qe.shortCircuited)return;Y=qe.pendingActionData,ae=qe.pendingActionError,G=js(R,I.submission),X=!1,Z=new Request(Z.url,{signal:Z.signal})}let{shortCircuited:He,loaderData:te,errors:pe}=await es(Z,R,oe,G,I&&I.submission,I&&I.fetcherSubmission,I&&I.replace,I&&I.initialHydration===!0,X,Y,ae);He||(T=null,dt(R,Le({matches:oe},Y?{actionData:Y}:{},{loaderData:te,errors:pe})))}async function qi(S,R,I,B,G){G===void 0&&(G={}),os();let oe=j2(R,I);Pe({navigation:oe},{flushSync:G.flushSync===!0});let X,Z=lu(B,R);if(!Z.route.action&&!Z.route.lazy)X={type:Oe.error,error:St(405,{method:S.method,pathname:R.pathname,routeId:Z.route.id})};else if(X=await Ho("action",S,Z,B,i,o,s,u.v7_relativeSplatPath),S.signal.aborted)return{shortCircuited:!0};if(mr(X)){let Y;return G&&G.replace!=null?Y=G.replace:Y=X.location===k.location.pathname+k.location.search,await qt(k,X,{submission:I,replace:Y}),{shortCircuited:!0}}if(no(X)){let Y=fi(B,Z.route.id);return(G&&G.replace)!==!0&&(P=De.Push),{pendingActionData:{},pendingActionError:{[Y.route.id]:X.error}}}if(hr(X))throw St(400,{type:"defer-action"});return{pendingActionData:{[Z.route.id]:X.data}}}async function es(S,R,I,B,G,oe,X,Z,Y,ae,He){let te=B||js(R,G),pe=G||oe||Wp(te),qe=l||a,[At,We]=Np(e.history,k,I,pe,R,u.v7_partialHydration&&Z===!0,$,U,W,ye,ce,J,qe,s,ae,He);if(is(fe=>!(I&&I.some(we=>we.route.id===fe))||At&&At.some(we=>we.route.id===fe)),z=++L,At.length===0&&We.length===0){let fe=gf();return dt(R,Le({matches:I,loaderData:{},errors:He||null},ae?{actionData:ae}:{},fe?{fetchers:new Map(k.fetchers)}:{}),{flushSync:Y}),{shortCircuited:!0}}if(!F&&(!u.v7_partialHydration||!Z)){We.forEach(we=>{let Yt=k.fetchers.get(we.key),Xi=Ko(void 0,Yt?Yt.data:void 0);k.fetchers.set(we.key,Xi)});let fe=ae||k.actionData;Pe(Le({navigation:te},fe?Object.keys(fe).length===0?{actionData:null}:{actionData:fe}:{},We.length>0?{fetchers:new Map(k.fetchers)}:{}),{flushSync:Y})}We.forEach(fe=>{V.has(fe.key)&&Sn(fe.key),fe.controller&&V.set(fe.key,fe.controller)});let Dr=()=>We.forEach(fe=>Sn(fe.key));T&&T.signal.addEventListener("abort",Dr);let{results:as,loaderResults:Nr,fetcherResults:Tn}=await hf(k.matches,I,At,We,S);if(S.signal.aborted)return{shortCircuited:!0};T&&T.signal.removeEventListener("abort",Dr),We.forEach(fe=>V.delete(fe.key));let lr=Bp(as);if(lr){if(lr.idx>=At.length){let fe=We[lr.idx-At.length].key;J.add(fe)}return await qt(k,lr.result,{replace:X}),{shortCircuited:!0}}let{loaderData:ls,errors:ss}=zp(k,I,At,Nr,He,We,Tn,$e);$e.forEach((fe,we)=>{fe.subscribe(Yt=>{(Yt||fe.done)&&$e.delete(we)})});let cs=gf(),Mr=yf(z),Zi=cs||Mr||We.length>0;return Le({loaderData:ls,errors:ss},Zi?{fetchers:new Map(k.fetchers)}:{})}function ts(S,R,I,B){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.");V.has(S)&&Sn(S);let G=(B&&B.unstable_flushSync)===!0,oe=l||a,X=iu(k.location,k.matches,s,u.v7_prependBasename,I,u.v7_relativeSplatPath,R,B==null?void 0:B.relative),Z=pr(oe,X,s);if(!Z){Lo(S,R,St(404,{pathname:X}),{flushSync:G});return}let{path:Y,submission:ae,error:He}=Dp(u.v7_normalizeFormMethod,!0,X,B);if(He){Lo(S,R,He,{flushSync:G});return}let te=lu(Z,Y);if(A=(B&&B.preventScrollReset)===!0,ae&&zt(ae.formMethod)){ns(S,R,Y,te,Z,G,ae);return}ce.set(S,{routeId:R,path:Y}),rs(S,R,Y,te,Z,G,ae)}async function ns(S,R,I,B,G,oe,X){if(os(),ce.delete(S),!B.route.action&&!B.route.lazy){let we=St(405,{method:X.formMethod,pathname:I,routeId:R});Lo(S,R,we,{flushSync:oe});return}let Z=k.fetchers.get(S);An(S,F2(X,Z),{flushSync:oe});let Y=new AbortController,ae=Wo(e.history,I,Y.signal,X);V.set(S,Y);let He=L,te=await Ho("action",ae,B,G,i,o,s,u.v7_relativeSplatPath);if(ae.signal.aborted){V.get(S)===Y&&V.delete(S);return}if(u.v7_fetcherPersist&&ye.has(S)){if(mr(te)||no(te)){An(S,In(void 0));return}}else{if(mr(te))if(V.delete(S),z>He){An(S,In(void 0));return}else return J.add(S),An(S,Ko(X)),qt(k,te,{fetcherSubmission:X});if(no(te)){Lo(S,R,te.error);return}}if(hr(te))throw St(400,{type:"defer-action"});let pe=k.navigation.location||k.location,qe=Wo(e.history,pe,Y.signal),At=l||a,We=k.navigation.state!=="idle"?pr(At,k.navigation.location,s):k.matches;ne(We,"Didn't find any matches after fetcher action");let Dr=++L;K.set(S,Dr);let as=Ko(X,te.data);k.fetchers.set(S,as);let[Nr,Tn]=Np(e.history,k,We,X,pe,!1,$,U,W,ye,ce,J,At,s,{[B.route.id]:te.data},void 0);Tn.filter(we=>we.key!==S).forEach(we=>{let Yt=we.key,Xi=k.fetchers.get(Yt),Cy=Ko(void 0,Xi?Xi.data:void 0);k.fetchers.set(Yt,Cy),V.has(Yt)&&Sn(Yt),we.controller&&V.set(Yt,we.controller)}),Pe({fetchers:new Map(k.fetchers)});let lr=()=>Tn.forEach(we=>Sn(we.key));Y.signal.addEventListener("abort",lr);let{results:ls,loaderResults:ss,fetcherResults:cs}=await hf(k.matches,We,Nr,Tn,qe);if(Y.signal.aborted)return;Y.signal.removeEventListener("abort",lr),K.delete(S),V.delete(S),Tn.forEach(we=>V.delete(we.key));let Mr=Bp(ls);if(Mr){if(Mr.idx>=Nr.length){let we=Tn[Mr.idx-Nr.length].key;J.add(we)}return qt(k,Mr.result)}let{loaderData:Zi,errors:fe}=zp(k,k.matches,Nr,ss,void 0,Tn,cs,$e);if(k.fetchers.has(S)){let we=In(te.data);k.fetchers.set(S,we)}yf(Dr),k.navigation.state==="loading"&&Dr>z?(ne(P,"Expected pending action"),T&&T.abort(),dt(k.navigation.location,{matches:We,loaderData:Zi,errors:fe,fetchers:new Map(k.fetchers)})):(Pe({errors:fe,loaderData:Up(k.loaderData,Zi,We,fe),fetchers:new Map(k.fetchers)}),$=!1)}async function rs(S,R,I,B,G,oe,X){let Z=k.fetchers.get(S);An(S,Ko(X,Z?Z.data:void 0),{flushSync:oe});let Y=new AbortController,ae=Wo(e.history,I,Y.signal);V.set(S,Y);let He=L,te=await Ho("loader",ae,B,G,i,o,s,u.v7_relativeSplatPath);if(hr(te)&&(te=await Iv(te,ae.signal,!0)||te),V.get(S)===Y&&V.delete(S),!ae.signal.aborted){if(ye.has(S)){An(S,In(void 0));return}if(mr(te))if(z>He){An(S,In(void 0));return}else{J.add(S),await qt(k,te);return}if(no(te)){Lo(S,R,te.error);return}ne(!hr(te),"Unhandled fetcher deferred data"),An(S,In(te.data))}}async function qt(S,R,I){let{submission:B,fetcherSubmission:G,replace:oe}=I===void 0?{}:I;R.revalidate&&($=!0);let X=Ri(S.location,R.location,{_isRedirect:!0});if(ne(X,"Expected a location on the redirect navigation"),n){let pe=!1;if(R.reloadDocument)pe=!0;else if(Tv.test(R.location)){const qe=e.history.createURL(R.location);pe=qe.origin!==t.location.origin||Sr(qe.pathname,s)==null}if(pe){oe?t.location.replace(R.location):t.location.assign(R.location);return}}T=null;let Z=oe===!0?De.Replace:De.Push,{formMethod:Y,formAction:ae,formEncType:He}=S.navigation;!B&&!G&&Y&&ae&&He&&(B=Wp(S.navigation));let te=B||G;if(P2.has(R.status)&&te&&zt(te.formMethod))await yt(Z,X,{submission:Le({},te,{formAction:R.location}),preventScrollReset:A});else{let pe=js(X,B);await yt(Z,X,{overrideNavigation:pe,fetcherSubmission:G,preventScrollReset:A})}}async function hf(S,R,I,B,G){let oe=await Promise.all([...I.map(Y=>Ho("loader",G,Y,R,i,o,s,u.v7_relativeSplatPath)),...B.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,u.v7_relativeSplatPath):{type:Oe.error,error:St(404,{pathname:Y.path})})]),X=oe.slice(0,I.length),Z=oe.slice(I.length);return await Promise.all([Hp(S,I,X,X.map(()=>G.signal),!1,k.loaderData),Hp(S,B.map(Y=>Y.match),Z,B.map(Y=>Y.controller?Y.controller.signal:null),!0)]),{results:oe,loaderResults:X,fetcherResults:Z}}function os(){$=!0,U.push(...is()),ce.forEach((S,R)=>{V.has(R)&&(W.push(R),Sn(R))})}function An(S,R,I){I===void 0&&(I={}),k.fetchers.set(S,R),Pe({fetchers:new Map(k.fetchers)},{flushSync:(I&&I.flushSync)===!0})}function Lo(S,R,I,B){B===void 0&&(B={});let G=fi(k.matches,R);Yi(S),Pe({errors:{[G.route.id]:I},fetchers:new Map(k.fetchers)},{flushSync:(B&&B.flushSync)===!0})}function mf(S){return u.v7_fetcherPersist&&(Ve.set(S,(Ve.get(S)||0)+1),ye.has(S)&&ye.delete(S)),k.fetchers.get(S)||A2}function Yi(S){let R=k.fetchers.get(S);V.has(S)&&!(R&&R.state==="loading"&&K.has(S))&&Sn(S),ce.delete(S),K.delete(S),J.delete(S),ye.delete(S),k.fetchers.delete(S)}function _y(S){if(u.v7_fetcherPersist){let R=(Ve.get(S)||0)-1;R<=0?(Ve.delete(S),ye.add(S)):Ve.set(S,R)}else Yi(S);Pe({fetchers:new Map(k.fetchers)})}function Sn(S){let R=V.get(S);ne(R,"Expected fetch controller: "+S),R.abort(),V.delete(S)}function vf(S){for(let R of S){let I=mf(R),B=In(I.data);k.fetchers.set(R,B)}}function gf(){let S=[],R=!1;for(let I of J){let B=k.fetchers.get(I);ne(B,"Expected fetcher: "+I),B.state==="loading"&&(J.delete(I),S.push(I),R=!0)}return vf(S),R}function yf(S){let R=[];for(let[I,B]of K)if(B0}function wy(S,R){let I=k.blockers.get(S)||Bo;return xe.get(S)!==R&&xe.set(S,R),I}function xf(S){k.blockers.delete(S),xe.delete(S)}function Qi(S,R){let I=k.blockers.get(S)||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 B=new Map(k.blockers);B.set(S,R),Pe({blockers:B})}function _f(S){let{currentLocation:R,nextLocation:I,historyAction:B}=S;if(xe.size===0)return;xe.size>1&&_o(!1,"A router only supports one blocker at a time");let G=Array.from(xe.entries()),[oe,X]=G[G.length-1],Z=k.blockers.get(oe);if(!(Z&&Z.state==="proceeding")&&X({currentLocation:R,nextLocation:I,historyAction:B}))return oe}function is(S){let R=[];return $e.forEach((I,B)=>{(!S||S(B))&&(I.cancel(),R.push(B),$e.delete(B))}),R}function Ey(S,R,I){if(f=S,y=R,h=I||null,!g&&k.navigation===Ms){g=!0;let B=Ef(k.location,k.matches);B!=null&&Pe({restoreScrollPosition:B})}return()=>{f=null,y=null,h=null}}function wf(S,R){return h&&h(S,R.map(B=>kv(B,k.loaderData)))||S.key}function ky(S,R){if(f&&y){let I=wf(S,R);f[I]=y()}}function Ef(S,R){if(f){let I=wf(S,R),B=f[I];if(typeof B=="number")return B}return null}function by(S){i={},l=ou(S,o,void 0,i)}return C={get basename(){return s},get future(){return u},get state(){return k},get routes(){return a},get window(){return t},initialize:_e,subscribe:Nt,enableScrollRestoration:Ey,navigate:Gi,fetch:ts,revalidate:Jl,createHref:S=>e.history.createHref(S),encodeLocation:S=>e.history.encodeLocation(S),getFetcher:mf,deleteFetcher:_y,dispose:Ce,getBlocker:wy,deleteBlocker:xf,_internalFetchControllers:V,_internalActiveDeferreds:$e,_internalSetRoutes:by},C}function R2(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function iu(e,t,n,r,o,i,a,l){let s,u;if(a){s=[];for(let c of t)if(s.push(c),c.route.id===a){u=c;break}}else s=t,u=t[t.length-1];let d=Md(o||".",Nd(s,i),Sr(e.pathname,n)||e.pathname,l==="path");return o==null&&(d.search=e.search,d.hash=e.hash),(o==null||o===""||o===".")&&u&&u.route.index&&!Fd(d.search)&&(d.search=d.search?d.search.replace(/^\?/,"?index&"):"?index"),r&&n!=="/"&&(d.pathname=d.pathname==="/"?n:pn([n,d.pathname])),br(d)}function Dp(e,t,n,r){if(!r||!R2(r))return{path:n};if(r.formMethod&&!M2(r.formMethod))return{path:n,error:St(405,{method:r.formMethod})};let o=()=>({path:n,error:St(400,{type:"invalid-body"})}),i=r.formMethod||"get",a=e?i.toUpperCase():i.toLowerCase(),l=Ov(n);if(r.body!==void 0){if(r.formEncType==="text/plain"){if(!zt(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(!zt(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,u;if(r.formData)s=au(r.formData),u=r.formData;else if(r.body instanceof FormData)s=au(r.body),u=r.body;else if(r.body instanceof URLSearchParams)s=r.body,u=Fp(s);else if(r.body==null)s=new URLSearchParams,u=new FormData;else try{s=new URLSearchParams(r.body),u=Fp(s)}catch{return o()}let d={formMethod:a,formAction:l,formEncType:r&&r.formEncType||"application/x-www-form-urlencoded",formData:u,json:void 0,text:void 0};if(zt(d.formMethod))return{path:n,submission:d};let c=En(n);return t&&c.search&&Fd(c.search)&&s.append("index",""),c.search="?"+s,{path:br(c),submission:d}}function $2(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 Np(e,t,n,r,o,i,a,l,s,u,d,c,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=$2(n,_).filter((P,A)=>{let{route:T}=P;if(T.lazy)return!0;if(T.loader==null)return!1;if(i)return T.loader.hydrate?!0:t.loaderData[T.id]===void 0&&(!t.errors||t.errors[T.id]===void 0);if(O2(t.loaderData,t.matches[A],P)||l.some(N=>N===P.route.id))return!0;let O=t.matches[A],j=P;return Mp(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||$v(O,j)}))}),k=[];return d.forEach((P,A)=>{if(i||!n.some(F=>F.route.id===P.routeId)||u.has(A))return;let T=pr(f,P.path,h);if(!T){k.push({key:A,routeId:P.routeId,path:P.path,matches:null,match:null,controller:null});return}let O=t.fetchers.get(A),j=lu(T,P.path),N=!1;c.has(A)?N=!1:s.includes(A)?N=!0:O&&O.state!=="idle"&&O.data===void 0?N=a:N=Mp(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:T,match:j,controller:new AbortController})}),[C,k]}function O2(e,t,n){let r=!t||n.route.id!==t.route.id,o=e[n.route.id]===void 0;return r||o}function $v(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function Mp(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}async function jp(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";_o(!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&&!r2.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 u,d,c,f=g=>{let w,m=new Promise((v,_)=>w=_);return c=()=>w(),t.signal.addEventListener("abort",c),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}),jp(n.route,i,o)]);if(w)throw w;d=m[0]}else if(await jp(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 St(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 St(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){u=Oe.error,d=g}finally{c&&t.signal.removeEventListener("abort",c)}if(N2(d)){let g=d.status;if(C2.has(g)){let m=d.headers.get("Location");if(ne(m,"Redirects returned/thrown from loaders/actions must have a Location header"),!Tv.test(m))m=iu(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=Sr(_.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:u===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 u===Oe.error?{type:u,error:new jd(g,d.statusText,w),headers:d.headers}:{type:Oe.data,data:w,statusCode:d.status,headers:d.headers}}if(u===Oe.error)return{type:u,error:d};if(D2(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(Ov(t)).toString(),i={signal:n};if(r&&zt(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=au(r.formData):i.body=r.formData}return new Request(o,i)}function au(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r=="string"?r:r.name);return t}function Fp(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function I2(e,t,n,r,o){let i={},a=null,l,s=!1,u={};return n.forEach((d,c)=>{let f=t[c].route.id;if(ne(!mr(d),"Cannot handle redirect results in processLoaderData"),no(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=Av(d.error)?d.error.status:500),d.headers&&(u[f]=d.headers)}else hr(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&&(u[f]=d.headers)}),r&&(a=r,i[Object.keys(r)[0]]=void 0),{loaderData:i,errors:a,statusCode:l||200,loaderHeaders:u}}function zp(e,t,n,r,o,i,a,l){let{loaderData:s,errors:u}=I2(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 Vp(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 St(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 jd(e||500,a,new Error(l),!0)}function Bp(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(mr(n))return{result:n,idx:t}}}function Ov(e){let t=typeof e=="string"?En(e):e;return br(Le({},t,{hash:""}))}function L2(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function hr(e){return e.type===Oe.deferred}function no(e){return e.type===Oe.error}function mr(e){return(e&&e.type)===Oe.redirect}function D2(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 N2(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function M2(e){return b2.has(e.toLowerCase())}function zt(e){return E2.has(e.toLowerCase())}async function Hp(e,t,n,r,o,i){for(let a=0;ac.route.id===s.route.id),d=u!=null&&!$v(u,s)&&(i&&i[s.route.id])!==void 0;if(hr(l)&&(o||d)){let c=r[a];ne(c,"Expected an AbortSignal for revalidating fetcher deferred result"),await Iv(l,c,o).then(f=>{f&&(n[a]=f||n[a])})}}}async function Iv(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 Fd(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function lu(e,t){let n=typeof t=="string"?En(t).search:t.search;if(e[e.length-1].route.index&&Fd(n||""))return e[e.length-1];let r=Pv(e);return r[r.length-1]}function Wp(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 js(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 j2(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 F2(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 In(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 z2(e,t){try{let n=e.sessionStorage.getItem(Rv);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 U2(e,t){if(t.size>0){let n={};for(let[r,o]of t)n[r]=[...o];try{e.sessionStorage.setItem(Rv,JSON.stringify(n))}catch(r){_o(!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 _o(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function t_(){return Math.random().toString(36).substr(2,8)}function Ip(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"?En(t):t,{state:n,key:t&&t.key||r||t_()})}function br(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 En(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 n_(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,u=d();u==null&&(u=0,a.replaceState(Le({},a.state,{idx:u}),""));function d(){return(a.state||{idx:null}).idx}function c(){l=De.Pop;let w=d(),m=w==null?null:w-u;u=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),u=d()+1;let _=Ip(v,u),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),u=d();let _=Ip(v,u),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:br(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(Op,c),s=w,()=>{o.removeEventListener(Op,c),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 r_=new Set(["lazy","caseSensitive","path","id","index","children"]);function o_(e){return e.index===!0}function ou(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`),o_(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=ou(o.children,t,a,r)),s}})}function pr(e,t,n){n===void 0&&(n="/");let r=typeof t=="string"?En(t):t,o=Sr(r.pathname||"/",n);if(o==null)return null;let i=bv(e);i_(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 u=pn([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 "'+u+'".')),bv(i.children,t,d,u)),!(i.path==null&&!i.index)&&t.push({path:u,score:f_(u,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 Cv(i.path))o(i,a,s)}),t}function Cv(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=Cv(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 i_(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:p_(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const a_=/^:[\w-]+$/,l_=3,s_=2,c_=1,u_=10,d_=-2,Lp=e=>e==="*";function f_(e,t){let n=e.split("/"),r=n.length;return n.some(Lp)&&(r+=d_),t&&(r+=s_),n.filter(o=>!Lp(o)).reduce((o,i)=>o+(a_.test(i)?l_:i===""?c_:u_),r)}function p_(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 h_(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[c]||"";a=i.slice(0,i.length-g.length).replace(/(.)\/+$/,"$1")}const y=l[c];return h&&!y?u[f]=void 0:u[f]=(y||"").replace(/%2F/g,"/"),u},{}),pathname:i,pathnameBase:a,pattern:e}}function m_(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),_o(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 v_(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return _o(!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 Sr(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 g_(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:o=""}=typeof e=="string"?En(e):e;return{pathname:n?n.startsWith("/")?n:y_(n,t):t,search:__(r),hash:w_(o)}}function y_(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 Ns(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 Pv(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Nd(e,t){let n=Pv(e);return t?n.map((r,o)=>o===e.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function Md(e,t,n,r){r===void 0&&(r=!1);let o;typeof e=="string"?o=En(e):(o=Le({},e),ne(!o.pathname||!o.pathname.includes("?"),Ns("?","pathname","search",o)),ne(!o.pathname||!o.pathname.includes("#"),Ns("#","pathname","hash",o)),ne(!o.search||!o.search.includes("#"),Ns("#","search","hash",o)));let i=e===""||o.pathname==="",a=i?"/":o.pathname,l;if(a==null)l=n;else{let c=t.length-1;if(!r&&a.startsWith("..")){let f=a.split("/");for(;f[0]==="..";)f.shift(),c-=1;o.pathname=f.join("/")}l=c>=0?t[c]:"/"}let s=g_(o,l),u=a&&a!=="/"&&a.endsWith("/"),d=(i||a===".")&&n.endsWith("/");return!s.pathname.endsWith("/")&&(u||d)&&(s.pathname+="/"),s}const pn=e=>e.join("/").replace(/\/\/+/g,"/"),x_=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),__=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,w_=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class jd{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 Av(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const Sv=["post","put","patch","delete"],E_=new Set(Sv),k_=["get",...Sv],b_=new Set(k_),C_=new Set([301,302,303,307,308]),P_=new Set([307,308]),Ms={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},A_={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},Tv=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,S_=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),Rv="remix-router-transitions";function T_(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 S=e.detectErrorBoundary;o=R=>({hasErrorBoundary:S(R)})}else o=S_;let i={},a=ou(e.routes,o,void 0,i),l,s=e.basename||"/",u=Le({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1},e.future),d=null,c=new Set,f=null,h=null,y=null,g=e.hydrationData!=null,w=pr(a,e.history.location,s),m=null;if(w==null){let S=St(404,{pathname:e.history.location.pathname}),{matches:R,route:I}=Vp(a);w=R,m={[I.id]:S}}let v,_=w.some(S=>S.route.lazy),E=w.some(S=>S.route.loader);if(_)v=!1;else if(!E)v=!0;else if(u.v7_partialHydration){let S=e.hydrationData?e.hydrationData.loaderData:null,R=e.hydrationData?e.hydrationData.errors:null;v=w.every(I=>I.route.loader&&I.route.loader.hydrate!==!0&&(S&&S[I.route.id]!==void 0||R&&R[I.route.id]!==void 0))}else v=e.hydrationData!=null;let C,k={historyAction:e.history.action,location:e.history.location,matches:w,initialized:v,navigation:Ms,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,T,O=!1,j=new Map,N=null,F=!1,$=!1,U=[],W=[],V=new Map,L=0,z=-1,K=new Map,J=new Set,ce=new Map,Ve=new Map,ye=new Set,$e=new Map,xe=new Map,Be=!1;function _e(){if(d=e.history.listen(S=>{let{action:R,location:I,delta:B}=S;if(Be){Be=!1;return}_o(xe.size===0||B!=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 G=_f({currentLocation:k.location,nextLocation:I,historyAction:R});if(G&&B!=null){Be=!0,e.history.go(B*-1),Qi(G,{state:"blocked",location:I,proceed(){Qi(G,{state:"proceeding",proceed:void 0,reset:void 0,location:I}),e.history.go(B)},reset(){let oe=new Map(k.blockers);oe.set(G,Bo),Pe({blockers:oe})}});return}return yt(R,I)}),n){z_(t,j);let S=()=>U_(t,j);t.addEventListener("pagehide",S),N=()=>t.removeEventListener("pagehide",S)}return k.initialized||yt(De.Pop,k.location,{initialHydration:!0}),C}function Ce(){d&&d(),N&&N(),c.clear(),T&&T.abort(),k.fetchers.forEach((S,R)=>Yi(R)),k.blockers.forEach((S,R)=>xf(R))}function Nt(S){return c.add(S),()=>c.delete(S)}function Pe(S,R){R===void 0&&(R={}),k=Le({},k,S);let I=[],B=[];u.v7_fetcherPersist&&k.fetchers.forEach((G,oe)=>{G.state==="idle"&&(ye.has(oe)?B.push(oe):I.push(oe))}),[...c].forEach(G=>G(k,{deletedFetchers:B,unstable_viewTransitionOpts:R.viewTransitionOpts,unstable_flushSync:R.flushSync===!0})),u.v7_fetcherPersist&&(I.forEach(G=>k.fetchers.delete(G)),B.forEach(G=>Yi(G)))}function dt(S,R,I){var B,G;let{flushSync:oe}=I===void 0?{}:I,X=k.actionData!=null&&k.navigation.formMethod!=null&&zt(k.navigation.formMethod)&&k.navigation.state==="loading"&&((B=S.state)==null?void 0:B._isRedirect)!==!0,Z;R.actionData?Object.keys(R.actionData).length>0?Z=R.actionData:Z=null:X?Z=k.actionData:Z=null;let Y=R.loaderData?Up(k.loaderData,R.loaderData,R.matches||[],R.errors):k.loaderData,ae=k.blockers;ae.size>0&&(ae=new Map(ae),ae.forEach((pe,qe)=>ae.set(qe,Bo)));let He=A===!0||k.navigation.formMethod!=null&&zt(k.navigation.formMethod)&&((G=S.state)==null?void 0:G._isRedirect)!==!0;l&&(a=l,l=void 0),F||P===De.Pop||(P===De.Push?e.history.push(S,S.state):P===De.Replace&&e.history.replace(S,S.state));let te;if(P===De.Pop){let pe=j.get(k.location.pathname);pe&&pe.has(S.pathname)?te={currentLocation:k.location,nextLocation:S}:j.has(S.pathname)&&(te={currentLocation:S,nextLocation:k.location})}else if(O){let pe=j.get(k.location.pathname);pe?pe.add(S.pathname):(pe=new Set([S.pathname]),j.set(k.location.pathname,pe)),te={currentLocation:k.location,nextLocation:S}}Pe(Le({},R,{actionData:Z,loaderData:Y,historyAction:P,location:S,initialized:!0,navigation:Ms,revalidation:"idle",restoreScrollPosition:Ef(S,R.matches||k.matches),preventScrollReset:He,blockers:ae}),{viewTransitionOpts:te,flushSync:oe===!0}),P=De.Pop,A=!1,O=!1,F=!1,$=!1,U=[],W=[]}async function Gi(S,R){if(typeof S=="number"){e.history.go(S);return}let I=iu(k.location,k.matches,s,u.v7_prependBasename,S,u.v7_relativeSplatPath,R==null?void 0:R.fromRouteId,R==null?void 0:R.relative),{path:B,submission:G,error:oe}=Dp(u.v7_normalizeFormMethod,!1,I,R),X=k.location,Z=Ri(k.location,B,R&&R.state);Z=Le({},Z,e.history.encodeLocation(Z));let Y=R&&R.replace!=null?R.replace:void 0,ae=De.Push;Y===!0?ae=De.Replace:Y===!1||G!=null&&zt(G.formMethod)&&G.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,pe=_f({currentLocation:X,nextLocation:Z,historyAction:ae});if(pe){Qi(pe,{state:"blocked",location:Z,proceed(){Qi(pe,{state:"proceeding",proceed:void 0,reset:void 0,location:Z}),Gi(S,R)},reset(){let qe=new Map(k.blockers);qe.set(pe,Bo),Pe({blockers:qe})}});return}return await yt(ae,Z,{submission:G,pendingError:oe,preventScrollReset:He,replace:R&&R.replace,enableViewTransition:R&&R.unstable_viewTransition,flushSync:te})}function Jl(){if(os(),Pe({revalidation:"loading"}),k.navigation.state!=="submitting"){if(k.navigation.state==="idle"){yt(k.historyAction,k.location,{startUninterruptedRevalidation:!0});return}yt(P||k.historyAction,k.navigation.location,{overrideNavigation:k.navigation})}}async function yt(S,R,I){T&&T.abort(),T=null,P=S,F=(I&&I.startUninterruptedRevalidation)===!0,ky(k.location,k.matches),A=(I&&I.preventScrollReset)===!0,O=(I&&I.enableViewTransition)===!0;let B=l||a,G=I&&I.overrideNavigation,oe=pr(B,R,s),X=(I&&I.flushSync)===!0;if(!oe){let qe=St(404,{pathname:R.pathname}),{matches:At,route:We}=Vp(B);is(),dt(R,{matches:At,loaderData:{},errors:{[We.id]:qe}},{flushSync:X});return}if(k.initialized&&!$&&L_(k.location,R)&&!(I&&I.submission&&zt(I.submission.formMethod))){dt(R,{matches:oe},{flushSync:X});return}T=new AbortController;let Z=Wo(e.history,R,T.signal,I&&I.submission),Y,ae;if(I&&I.pendingError)ae={[fi(oe).route.id]:I.pendingError};else if(I&&I.submission&&zt(I.submission.formMethod)){let qe=await qi(Z,R,I.submission,oe,{replace:I.replace,flushSync:X});if(qe.shortCircuited)return;Y=qe.pendingActionData,ae=qe.pendingActionError,G=js(R,I.submission),X=!1,Z=new Request(Z.url,{signal:Z.signal})}let{shortCircuited:He,loaderData:te,errors:pe}=await es(Z,R,oe,G,I&&I.submission,I&&I.fetcherSubmission,I&&I.replace,I&&I.initialHydration===!0,X,Y,ae);He||(T=null,dt(R,Le({matches:oe},Y?{actionData:Y}:{},{loaderData:te,errors:pe})))}async function qi(S,R,I,B,G){G===void 0&&(G={}),os();let oe=j_(R,I);Pe({navigation:oe},{flushSync:G.flushSync===!0});let X,Z=lu(B,R);if(!Z.route.action&&!Z.route.lazy)X={type:Oe.error,error:St(405,{method:S.method,pathname:R.pathname,routeId:Z.route.id})};else if(X=await Ho("action",S,Z,B,i,o,s,u.v7_relativeSplatPath),S.signal.aborted)return{shortCircuited:!0};if(mr(X)){let Y;return G&&G.replace!=null?Y=G.replace:Y=X.location===k.location.pathname+k.location.search,await qt(k,X,{submission:I,replace:Y}),{shortCircuited:!0}}if(no(X)){let Y=fi(B,Z.route.id);return(G&&G.replace)!==!0&&(P=De.Push),{pendingActionData:{},pendingActionError:{[Y.route.id]:X.error}}}if(hr(X))throw St(400,{type:"defer-action"});return{pendingActionData:{[Z.route.id]:X.data}}}async function es(S,R,I,B,G,oe,X,Z,Y,ae,He){let te=B||js(R,G),pe=G||oe||Wp(te),qe=l||a,[At,We]=Np(e.history,k,I,pe,R,u.v7_partialHydration&&Z===!0,$,U,W,ye,ce,J,qe,s,ae,He);if(is(fe=>!(I&&I.some(we=>we.route.id===fe))||At&&At.some(we=>we.route.id===fe)),z=++L,At.length===0&&We.length===0){let fe=gf();return dt(R,Le({matches:I,loaderData:{},errors:He||null},ae?{actionData:ae}:{},fe?{fetchers:new Map(k.fetchers)}:{}),{flushSync:Y}),{shortCircuited:!0}}if(!F&&(!u.v7_partialHydration||!Z)){We.forEach(we=>{let Yt=k.fetchers.get(we.key),Xi=Ko(void 0,Yt?Yt.data:void 0);k.fetchers.set(we.key,Xi)});let fe=ae||k.actionData;Pe(Le({navigation:te},fe?Object.keys(fe).length===0?{actionData:null}:{actionData:fe}:{},We.length>0?{fetchers:new Map(k.fetchers)}:{}),{flushSync:Y})}We.forEach(fe=>{V.has(fe.key)&&Sn(fe.key),fe.controller&&V.set(fe.key,fe.controller)});let Dr=()=>We.forEach(fe=>Sn(fe.key));T&&T.signal.addEventListener("abort",Dr);let{results:as,loaderResults:Nr,fetcherResults:Tn}=await hf(k.matches,I,At,We,S);if(S.signal.aborted)return{shortCircuited:!0};T&&T.signal.removeEventListener("abort",Dr),We.forEach(fe=>V.delete(fe.key));let lr=Bp(as);if(lr){if(lr.idx>=At.length){let fe=We[lr.idx-At.length].key;J.add(fe)}return await qt(k,lr.result,{replace:X}),{shortCircuited:!0}}let{loaderData:ls,errors:ss}=zp(k,I,At,Nr,He,We,Tn,$e);$e.forEach((fe,we)=>{fe.subscribe(Yt=>{(Yt||fe.done)&&$e.delete(we)})});let cs=gf(),Mr=yf(z),Zi=cs||Mr||We.length>0;return Le({loaderData:ls,errors:ss},Zi?{fetchers:new Map(k.fetchers)}:{})}function ts(S,R,I,B){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.");V.has(S)&&Sn(S);let G=(B&&B.unstable_flushSync)===!0,oe=l||a,X=iu(k.location,k.matches,s,u.v7_prependBasename,I,u.v7_relativeSplatPath,R,B==null?void 0:B.relative),Z=pr(oe,X,s);if(!Z){Lo(S,R,St(404,{pathname:X}),{flushSync:G});return}let{path:Y,submission:ae,error:He}=Dp(u.v7_normalizeFormMethod,!0,X,B);if(He){Lo(S,R,He,{flushSync:G});return}let te=lu(Z,Y);if(A=(B&&B.preventScrollReset)===!0,ae&&zt(ae.formMethod)){ns(S,R,Y,te,Z,G,ae);return}ce.set(S,{routeId:R,path:Y}),rs(S,R,Y,te,Z,G,ae)}async function ns(S,R,I,B,G,oe,X){if(os(),ce.delete(S),!B.route.action&&!B.route.lazy){let we=St(405,{method:X.formMethod,pathname:I,routeId:R});Lo(S,R,we,{flushSync:oe});return}let Z=k.fetchers.get(S);An(S,F_(X,Z),{flushSync:oe});let Y=new AbortController,ae=Wo(e.history,I,Y.signal,X);V.set(S,Y);let He=L,te=await Ho("action",ae,B,G,i,o,s,u.v7_relativeSplatPath);if(ae.signal.aborted){V.get(S)===Y&&V.delete(S);return}if(u.v7_fetcherPersist&&ye.has(S)){if(mr(te)||no(te)){An(S,In(void 0));return}}else{if(mr(te))if(V.delete(S),z>He){An(S,In(void 0));return}else return J.add(S),An(S,Ko(X)),qt(k,te,{fetcherSubmission:X});if(no(te)){Lo(S,R,te.error);return}}if(hr(te))throw St(400,{type:"defer-action"});let pe=k.navigation.location||k.location,qe=Wo(e.history,pe,Y.signal),At=l||a,We=k.navigation.state!=="idle"?pr(At,k.navigation.location,s):k.matches;ne(We,"Didn't find any matches after fetcher action");let Dr=++L;K.set(S,Dr);let as=Ko(X,te.data);k.fetchers.set(S,as);let[Nr,Tn]=Np(e.history,k,We,X,pe,!1,$,U,W,ye,ce,J,At,s,{[B.route.id]:te.data},void 0);Tn.filter(we=>we.key!==S).forEach(we=>{let Yt=we.key,Xi=k.fetchers.get(Yt),Cy=Ko(void 0,Xi?Xi.data:void 0);k.fetchers.set(Yt,Cy),V.has(Yt)&&Sn(Yt),we.controller&&V.set(Yt,we.controller)}),Pe({fetchers:new Map(k.fetchers)});let lr=()=>Tn.forEach(we=>Sn(we.key));Y.signal.addEventListener("abort",lr);let{results:ls,loaderResults:ss,fetcherResults:cs}=await hf(k.matches,We,Nr,Tn,qe);if(Y.signal.aborted)return;Y.signal.removeEventListener("abort",lr),K.delete(S),V.delete(S),Tn.forEach(we=>V.delete(we.key));let Mr=Bp(ls);if(Mr){if(Mr.idx>=Nr.length){let we=Tn[Mr.idx-Nr.length].key;J.add(we)}return qt(k,Mr.result)}let{loaderData:Zi,errors:fe}=zp(k,k.matches,Nr,ss,void 0,Tn,cs,$e);if(k.fetchers.has(S)){let we=In(te.data);k.fetchers.set(S,we)}yf(Dr),k.navigation.state==="loading"&&Dr>z?(ne(P,"Expected pending action"),T&&T.abort(),dt(k.navigation.location,{matches:We,loaderData:Zi,errors:fe,fetchers:new Map(k.fetchers)})):(Pe({errors:fe,loaderData:Up(k.loaderData,Zi,We,fe),fetchers:new Map(k.fetchers)}),$=!1)}async function rs(S,R,I,B,G,oe,X){let Z=k.fetchers.get(S);An(S,Ko(X,Z?Z.data:void 0),{flushSync:oe});let Y=new AbortController,ae=Wo(e.history,I,Y.signal);V.set(S,Y);let He=L,te=await Ho("loader",ae,B,G,i,o,s,u.v7_relativeSplatPath);if(hr(te)&&(te=await Iv(te,ae.signal,!0)||te),V.get(S)===Y&&V.delete(S),!ae.signal.aborted){if(ye.has(S)){An(S,In(void 0));return}if(mr(te))if(z>He){An(S,In(void 0));return}else{J.add(S),await qt(k,te);return}if(no(te)){Lo(S,R,te.error);return}ne(!hr(te),"Unhandled fetcher deferred data"),An(S,In(te.data))}}async function qt(S,R,I){let{submission:B,fetcherSubmission:G,replace:oe}=I===void 0?{}:I;R.revalidate&&($=!0);let X=Ri(S.location,R.location,{_isRedirect:!0});if(ne(X,"Expected a location on the redirect navigation"),n){let pe=!1;if(R.reloadDocument)pe=!0;else if(Tv.test(R.location)){const qe=e.history.createURL(R.location);pe=qe.origin!==t.location.origin||Sr(qe.pathname,s)==null}if(pe){oe?t.location.replace(R.location):t.location.assign(R.location);return}}T=null;let Z=oe===!0?De.Replace:De.Push,{formMethod:Y,formAction:ae,formEncType:He}=S.navigation;!B&&!G&&Y&&ae&&He&&(B=Wp(S.navigation));let te=B||G;if(P_.has(R.status)&&te&&zt(te.formMethod))await yt(Z,X,{submission:Le({},te,{formAction:R.location}),preventScrollReset:A});else{let pe=js(X,B);await yt(Z,X,{overrideNavigation:pe,fetcherSubmission:G,preventScrollReset:A})}}async function hf(S,R,I,B,G){let oe=await Promise.all([...I.map(Y=>Ho("loader",G,Y,R,i,o,s,u.v7_relativeSplatPath)),...B.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,u.v7_relativeSplatPath):{type:Oe.error,error:St(404,{pathname:Y.path})})]),X=oe.slice(0,I.length),Z=oe.slice(I.length);return await Promise.all([Hp(S,I,X,X.map(()=>G.signal),!1,k.loaderData),Hp(S,B.map(Y=>Y.match),Z,B.map(Y=>Y.controller?Y.controller.signal:null),!0)]),{results:oe,loaderResults:X,fetcherResults:Z}}function os(){$=!0,U.push(...is()),ce.forEach((S,R)=>{V.has(R)&&(W.push(R),Sn(R))})}function An(S,R,I){I===void 0&&(I={}),k.fetchers.set(S,R),Pe({fetchers:new Map(k.fetchers)},{flushSync:(I&&I.flushSync)===!0})}function Lo(S,R,I,B){B===void 0&&(B={});let G=fi(k.matches,R);Yi(S),Pe({errors:{[G.route.id]:I},fetchers:new Map(k.fetchers)},{flushSync:(B&&B.flushSync)===!0})}function mf(S){return u.v7_fetcherPersist&&(Ve.set(S,(Ve.get(S)||0)+1),ye.has(S)&&ye.delete(S)),k.fetchers.get(S)||A_}function Yi(S){let R=k.fetchers.get(S);V.has(S)&&!(R&&R.state==="loading"&&K.has(S))&&Sn(S),ce.delete(S),K.delete(S),J.delete(S),ye.delete(S),k.fetchers.delete(S)}function _y(S){if(u.v7_fetcherPersist){let R=(Ve.get(S)||0)-1;R<=0?(Ve.delete(S),ye.add(S)):Ve.set(S,R)}else Yi(S);Pe({fetchers:new Map(k.fetchers)})}function Sn(S){let R=V.get(S);ne(R,"Expected fetch controller: "+S),R.abort(),V.delete(S)}function vf(S){for(let R of S){let I=mf(R),B=In(I.data);k.fetchers.set(R,B)}}function gf(){let S=[],R=!1;for(let I of J){let B=k.fetchers.get(I);ne(B,"Expected fetcher: "+I),B.state==="loading"&&(J.delete(I),S.push(I),R=!0)}return vf(S),R}function yf(S){let R=[];for(let[I,B]of K)if(B0}function wy(S,R){let I=k.blockers.get(S)||Bo;return xe.get(S)!==R&&xe.set(S,R),I}function xf(S){k.blockers.delete(S),xe.delete(S)}function Qi(S,R){let I=k.blockers.get(S)||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 B=new Map(k.blockers);B.set(S,R),Pe({blockers:B})}function _f(S){let{currentLocation:R,nextLocation:I,historyAction:B}=S;if(xe.size===0)return;xe.size>1&&_o(!1,"A router only supports one blocker at a time");let G=Array.from(xe.entries()),[oe,X]=G[G.length-1],Z=k.blockers.get(oe);if(!(Z&&Z.state==="proceeding")&&X({currentLocation:R,nextLocation:I,historyAction:B}))return oe}function is(S){let R=[];return $e.forEach((I,B)=>{(!S||S(B))&&(I.cancel(),R.push(B),$e.delete(B))}),R}function Ey(S,R,I){if(f=S,y=R,h=I||null,!g&&k.navigation===Ms){g=!0;let B=Ef(k.location,k.matches);B!=null&&Pe({restoreScrollPosition:B})}return()=>{f=null,y=null,h=null}}function wf(S,R){return h&&h(S,R.map(B=>kv(B,k.loaderData)))||S.key}function ky(S,R){if(f&&y){let I=wf(S,R);f[I]=y()}}function Ef(S,R){if(f){let I=wf(S,R),B=f[I];if(typeof B=="number")return B}return null}function by(S){i={},l=ou(S,o,void 0,i)}return C={get basename(){return s},get future(){return u},get state(){return k},get routes(){return a},get window(){return t},initialize:_e,subscribe:Nt,enableScrollRestoration:Ey,navigate:Gi,fetch:ts,revalidate:Jl,createHref:S=>e.history.createHref(S),encodeLocation:S=>e.history.encodeLocation(S),getFetcher:mf,deleteFetcher:_y,dispose:Ce,getBlocker:wy,deleteBlocker:xf,_internalFetchControllers:V,_internalActiveDeferreds:$e,_internalSetRoutes:by},C}function R_(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function iu(e,t,n,r,o,i,a,l){let s,u;if(a){s=[];for(let c of t)if(s.push(c),c.route.id===a){u=c;break}}else s=t,u=t[t.length-1];let d=Md(o||".",Nd(s,i),Sr(e.pathname,n)||e.pathname,l==="path");return o==null&&(d.search=e.search,d.hash=e.hash),(o==null||o===""||o===".")&&u&&u.route.index&&!Fd(d.search)&&(d.search=d.search?d.search.replace(/^\?/,"?index&"):"?index"),r&&n!=="/"&&(d.pathname=d.pathname==="/"?n:pn([n,d.pathname])),br(d)}function Dp(e,t,n,r){if(!r||!R_(r))return{path:n};if(r.formMethod&&!M_(r.formMethod))return{path:n,error:St(405,{method:r.formMethod})};let o=()=>({path:n,error:St(400,{type:"invalid-body"})}),i=r.formMethod||"get",a=e?i.toUpperCase():i.toLowerCase(),l=Ov(n);if(r.body!==void 0){if(r.formEncType==="text/plain"){if(!zt(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(!zt(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,u;if(r.formData)s=au(r.formData),u=r.formData;else if(r.body instanceof FormData)s=au(r.body),u=r.body;else if(r.body instanceof URLSearchParams)s=r.body,u=Fp(s);else if(r.body==null)s=new URLSearchParams,u=new FormData;else try{s=new URLSearchParams(r.body),u=Fp(s)}catch{return o()}let d={formMethod:a,formAction:l,formEncType:r&&r.formEncType||"application/x-www-form-urlencoded",formData:u,json:void 0,text:void 0};if(zt(d.formMethod))return{path:n,submission:d};let c=En(n);return t&&c.search&&Fd(c.search)&&s.append("index",""),c.search="?"+s,{path:br(c),submission:d}}function $_(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 Np(e,t,n,r,o,i,a,l,s,u,d,c,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=$_(n,_).filter((P,A)=>{let{route:T}=P;if(T.lazy)return!0;if(T.loader==null)return!1;if(i)return T.loader.hydrate?!0:t.loaderData[T.id]===void 0&&(!t.errors||t.errors[T.id]===void 0);if(O_(t.loaderData,t.matches[A],P)||l.some(N=>N===P.route.id))return!0;let O=t.matches[A],j=P;return Mp(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||$v(O,j)}))}),k=[];return d.forEach((P,A)=>{if(i||!n.some(F=>F.route.id===P.routeId)||u.has(A))return;let T=pr(f,P.path,h);if(!T){k.push({key:A,routeId:P.routeId,path:P.path,matches:null,match:null,controller:null});return}let O=t.fetchers.get(A),j=lu(T,P.path),N=!1;c.has(A)?N=!1:s.includes(A)?N=!0:O&&O.state!=="idle"&&O.data===void 0?N=a:N=Mp(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:T,match:j,controller:new AbortController})}),[C,k]}function O_(e,t,n){let r=!t||n.route.id!==t.route.id,o=e[n.route.id]===void 0;return r||o}function $v(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function Mp(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}async function jp(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";_o(!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&&!r_.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 u,d,c,f=g=>{let w,m=new Promise((v,_)=>w=_);return c=()=>w(),t.signal.addEventListener("abort",c),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}),jp(n.route,i,o)]);if(w)throw w;d=m[0]}else if(await jp(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 St(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 St(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){u=Oe.error,d=g}finally{c&&t.signal.removeEventListener("abort",c)}if(N_(d)){let g=d.status;if(C_.has(g)){let m=d.headers.get("Location");if(ne(m,"Redirects returned/thrown from loaders/actions must have a Location header"),!Tv.test(m))m=iu(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=Sr(_.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:u===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 u===Oe.error?{type:u,error:new jd(g,d.statusText,w),headers:d.headers}:{type:Oe.data,data:w,statusCode:d.status,headers:d.headers}}if(u===Oe.error)return{type:u,error:d};if(D_(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(Ov(t)).toString(),i={signal:n};if(r&&zt(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=au(r.formData):i.body=r.formData}return new Request(o,i)}function au(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r=="string"?r:r.name);return t}function Fp(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function I_(e,t,n,r,o){let i={},a=null,l,s=!1,u={};return n.forEach((d,c)=>{let f=t[c].route.id;if(ne(!mr(d),"Cannot handle redirect results in processLoaderData"),no(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=Av(d.error)?d.error.status:500),d.headers&&(u[f]=d.headers)}else hr(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&&(u[f]=d.headers)}),r&&(a=r,i[Object.keys(r)[0]]=void 0),{loaderData:i,errors:a,statusCode:l||200,loaderHeaders:u}}function zp(e,t,n,r,o,i,a,l){let{loaderData:s,errors:u}=I_(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 Vp(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 St(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 jd(e||500,a,new Error(l),!0)}function Bp(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(mr(n))return{result:n,idx:t}}}function Ov(e){let t=typeof e=="string"?En(e):e;return br(Le({},t,{hash:""}))}function L_(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function hr(e){return e.type===Oe.deferred}function no(e){return e.type===Oe.error}function mr(e){return(e&&e.type)===Oe.redirect}function D_(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 N_(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function M_(e){return b_.has(e.toLowerCase())}function zt(e){return E_.has(e.toLowerCase())}async function Hp(e,t,n,r,o,i){for(let a=0;ac.route.id===s.route.id),d=u!=null&&!$v(u,s)&&(i&&i[s.route.id])!==void 0;if(hr(l)&&(o||d)){let c=r[a];ne(c,"Expected an AbortSignal for revalidating fetcher deferred result"),await Iv(l,c,o).then(f=>{f&&(n[a]=f||n[a])})}}}async function Iv(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 Fd(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function lu(e,t){let n=typeof t=="string"?En(t).search:t.search;if(e[e.length-1].route.index&&Fd(n||""))return e[e.length-1];let r=Pv(e);return r[r.length-1]}function Wp(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 js(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 j_(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 F_(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 In(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 z_(e,t){try{let n=e.sessionStorage.getItem(Rv);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 U_(e,t){if(t.size>0){let n={};for(let[r,o]of t)n[r]=[...o];try{e.sessionStorage.setItem(Rv,JSON.stringify(n))}catch(r){_o(!1,"Failed to save applied view transitions in sessionStorage ("+r+").")}}}/** * React Router v6.22.1 * * Copyright (c) Remix Software Inc. @@ -56,7 +56,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;tBl(e,t),[t,e])}function Dv(e){p.useContext(ir).static||p.useLayoutEffect(e)}function Ud(){let{isDataRoute:e}=p.useContext(Tr);return e?nw():H2()}function H2(){To()||ne(!1);let e=p.useContext(Bi),{basename:t,future:n,navigator:r}=p.useContext(ir),{matches:o}=p.useContext(Tr),{pathname:i}=Re(),a=JSON.stringify(Nd(o,n.v7_relativeSplatPath)),l=p.useRef(!1);return Dv(()=>{l.current=!0}),p.useCallback(function(u,d){if(d===void 0&&(d={}),!l.current)return;if(typeof u=="number"){r.go(u);return}let c=Md(u,JSON.parse(a),i,d.relative==="path");e==null&&t!=="/"&&(c.pathname=c.pathname==="/"?t:pn([t,c.pathname])),(d.replace?r.replace:r.push)(c,d.state,d)},[t,r,a,i,e])}function Nv(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=p.useContext(ir),{matches:o}=p.useContext(Tr),{pathname:i}=Re(),a=JSON.stringify(Nd(o,r.v7_relativeSplatPath));return p.useMemo(()=>Md(e,JSON.parse(a),i,n==="path"),[e,a,i,n])}function W2(e,t,n,r){To()||ne(!1);let{navigator:o}=p.useContext(ir),{matches:i}=p.useContext(Tr),a=i[i.length-1],l=a?a.params:{};a&&a.pathname;let s=a?a.pathnameBase:"/";a&&a.route;let u=Re(),d;if(t){var c;let w=typeof t=="string"?En(t):t;s==="/"||(c=w.pathname)!=null&&c.startsWith(s)||ne(!1),d=w}else d=u;let f=d.pathname||"/",h=f;if(s!=="/"){let w=s.replace(/^\//,"").split("/");h="/"+f.replace(/^\//,"").split("/").slice(w.length).join("/")}let y=pr(e,{pathname:h}),g=Q2(y&&y.map(w=>Object.assign({},w,{params:Object.assign({},l,w.params),pathname:pn([s,o.encodeLocation?o.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?s:pn([s,o.encodeLocation?o.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),i,n,r);return t&&g?p.createElement(Hl.Provider,{value:{location:$i({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:De.Pop}},g):g}function K2(){let e=tw(),t=Av(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 G2=p.createElement(K2,null);class q2 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(Tr.Provider,{value:this.props.routeContext},p.createElement(Lv.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function Y2(e){let{routeContext:t,match:n,children:r}=e,o=p.useContext(Bi);return o&&o.static&&o.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=n.route.id),p.createElement(Tr.Provider,{value:t},r)}function Q2(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(c=>c.route.id&&(l==null?void 0:l[c.route.id]));d>=0||ne(!1),a=a.slice(0,Math.min(a.length,d+1))}let s=!1,u=-1;if(n&&r&&r.v7_partialHydration)for(let d=0;d=0?a=a.slice(0,u+1):a=[a[0]];break}}}return a.reduceRight((d,c,f)=>{let h,y=!1,g=null,w=null;n&&(h=l&&c.route.id?l[c.route.id]:void 0,g=c.route.errorElement||G2,s&&(u<0&&f===0?(rw("route-fallback",!1),y=!0,w=null):u===f&&(y=!0,w=c.route.hydrateFallbackElement||null)));let m=t.concat(a.slice(0,f+1)),v=()=>{let _;return h?_=g:y?_=w:c.route.Component?_=p.createElement(c.route.Component,null):c.route.element?_=c.route.element:_=d,p.createElement(Y2,{match:c,routeContext:{outlet:d,matches:m,isDataRoute:n!=null},children:_})};return n&&(c.route.ErrorBoundary||c.route.errorElement||f===0)?p.createElement(q2,{location:n.location,revalidation:n.revalidation,component:g,error:h,children:v(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):v()},null)}var Mv=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(Mv||{}),wo=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}(wo||{});function Z2(e){let t=p.useContext(Bi);return t||ne(!1),t}function Vd(e){let t=p.useContext(zd);return t||ne(!1),t}function X2(e){let t=p.useContext(Tr);return t||ne(!1),t}function jv(e){let t=X2(),n=t.matches[t.matches.length-1];return n.route.id||ne(!1),n.route.id}function J2(){return Vd(wo.UseNavigation).navigation}function ew(){let{matches:e,loaderData:t}=Vd(wo.UseMatches);return p.useMemo(()=>e.map(n=>kv(n,t)),[e,t])}function tw(){var e;let t=p.useContext(Lv),n=Vd(wo.UseRouteError),r=jv(wo.UseRouteError);return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function nw(){let{router:e}=Z2(Mv.UseNavigateStable),t=jv(wo.UseNavigateStable),n=p.useRef(!1);return Dv(()=>{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 Kp={};function rw(e,t,n){!t&&!Kp[e]&&(Kp[e]=!0)}function ow(e){let{basename:t="/",children:n=null,location:r,navigationType:o=De.Pop,navigator:i,static:a=!1,future:l}=e;To()&&ne(!1);let s=t.replace(/^\/*/,"/"),u=p.useMemo(()=>({basename:s,navigator:i,static:a,future:$i({v7_relativeSplatPath:!1},l)}),[s,l,i,a]);typeof r=="string"&&(r=En(r));let{pathname:d="/",search:c="",hash:f="",state:h=null,key:y="default"}=r,g=p.useMemo(()=>{let w=Sr(d,s);return w==null?null:{location:{pathname:w,search:c,hash:f,state:h,key:y},navigationType:o}},[s,d,c,f,h,y,o]);return g==null?null:p.createElement(ir.Provider,{value:u},p.createElement(Hl.Provider,{children:n,value:g}))}new Promise(()=>{});function iw(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;tBl(e,t),[t,e])}function Dv(e){p.useContext(ir).static||p.useLayoutEffect(e)}function Ud(){let{isDataRoute:e}=p.useContext(Tr);return e?nw():H_()}function H_(){To()||ne(!1);let e=p.useContext(Bi),{basename:t,future:n,navigator:r}=p.useContext(ir),{matches:o}=p.useContext(Tr),{pathname:i}=Re(),a=JSON.stringify(Nd(o,n.v7_relativeSplatPath)),l=p.useRef(!1);return Dv(()=>{l.current=!0}),p.useCallback(function(u,d){if(d===void 0&&(d={}),!l.current)return;if(typeof u=="number"){r.go(u);return}let c=Md(u,JSON.parse(a),i,d.relative==="path");e==null&&t!=="/"&&(c.pathname=c.pathname==="/"?t:pn([t,c.pathname])),(d.replace?r.replace:r.push)(c,d.state,d)},[t,r,a,i,e])}function Nv(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=p.useContext(ir),{matches:o}=p.useContext(Tr),{pathname:i}=Re(),a=JSON.stringify(Nd(o,r.v7_relativeSplatPath));return p.useMemo(()=>Md(e,JSON.parse(a),i,n==="path"),[e,a,i,n])}function W_(e,t,n,r){To()||ne(!1);let{navigator:o}=p.useContext(ir),{matches:i}=p.useContext(Tr),a=i[i.length-1],l=a?a.params:{};a&&a.pathname;let s=a?a.pathnameBase:"/";a&&a.route;let u=Re(),d;if(t){var c;let w=typeof t=="string"?En(t):t;s==="/"||(c=w.pathname)!=null&&c.startsWith(s)||ne(!1),d=w}else d=u;let f=d.pathname||"/",h=f;if(s!=="/"){let w=s.replace(/^\//,"").split("/");h="/"+f.replace(/^\//,"").split("/").slice(w.length).join("/")}let y=pr(e,{pathname:h}),g=Q_(y&&y.map(w=>Object.assign({},w,{params:Object.assign({},l,w.params),pathname:pn([s,o.encodeLocation?o.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?s:pn([s,o.encodeLocation?o.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),i,n,r);return t&&g?p.createElement(Hl.Provider,{value:{location:$i({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:De.Pop}},g):g}function K_(){let e=tw(),t=Av(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 G_=p.createElement(K_,null);class q_ 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(Tr.Provider,{value:this.props.routeContext},p.createElement(Lv.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function Y_(e){let{routeContext:t,match:n,children:r}=e,o=p.useContext(Bi);return o&&o.static&&o.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=n.route.id),p.createElement(Tr.Provider,{value:t},r)}function Q_(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(c=>c.route.id&&(l==null?void 0:l[c.route.id]));d>=0||ne(!1),a=a.slice(0,Math.min(a.length,d+1))}let s=!1,u=-1;if(n&&r&&r.v7_partialHydration)for(let d=0;d=0?a=a.slice(0,u+1):a=[a[0]];break}}}return a.reduceRight((d,c,f)=>{let h,y=!1,g=null,w=null;n&&(h=l&&c.route.id?l[c.route.id]:void 0,g=c.route.errorElement||G_,s&&(u<0&&f===0?(rw("route-fallback",!1),y=!0,w=null):u===f&&(y=!0,w=c.route.hydrateFallbackElement||null)));let m=t.concat(a.slice(0,f+1)),v=()=>{let _;return h?_=g:y?_=w:c.route.Component?_=p.createElement(c.route.Component,null):c.route.element?_=c.route.element:_=d,p.createElement(Y_,{match:c,routeContext:{outlet:d,matches:m,isDataRoute:n!=null},children:_})};return n&&(c.route.ErrorBoundary||c.route.errorElement||f===0)?p.createElement(q_,{location:n.location,revalidation:n.revalidation,component:g,error:h,children:v(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):v()},null)}var Mv=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(Mv||{}),wo=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}(wo||{});function Z_(e){let t=p.useContext(Bi);return t||ne(!1),t}function Vd(e){let t=p.useContext(zd);return t||ne(!1),t}function X_(e){let t=p.useContext(Tr);return t||ne(!1),t}function jv(e){let t=X_(),n=t.matches[t.matches.length-1];return n.route.id||ne(!1),n.route.id}function J_(){return Vd(wo.UseNavigation).navigation}function ew(){let{matches:e,loaderData:t}=Vd(wo.UseMatches);return p.useMemo(()=>e.map(n=>kv(n,t)),[e,t])}function tw(){var e;let t=p.useContext(Lv),n=Vd(wo.UseRouteError),r=jv(wo.UseRouteError);return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function nw(){let{router:e}=Z_(Mv.UseNavigateStable),t=jv(wo.UseNavigateStable),n=p.useRef(!1);return Dv(()=>{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 Kp={};function rw(e,t,n){!t&&!Kp[e]&&(Kp[e]=!0)}function ow(e){let{basename:t="/",children:n=null,location:r,navigationType:o=De.Pop,navigator:i,static:a=!1,future:l}=e;To()&&ne(!1);let s=t.replace(/^\/*/,"/"),u=p.useMemo(()=>({basename:s,navigator:i,static:a,future:$i({v7_relativeSplatPath:!1},l)}),[s,l,i,a]);typeof r=="string"&&(r=En(r));let{pathname:d="/",search:c="",hash:f="",state:h=null,key:y="default"}=r,g=p.useMemo(()=>{let w=Sr(d,s);return w==null?null:{location:{pathname:w,search:c,hash:f,state:h,key:y},navigationType:o}},[s,d,c,f,h,y,o]);return g==null?null:p.createElement(ir.Provider,{value:u},p.createElement(Hl.Provider,{children:n,value:g}))}new Promise(()=>{});function iw(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.1 * * Copyright (c) Remix Software Inc. @@ -65,8 +65,8 @@ Error generating stack: `+i.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function Eo(){return Eo=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}function lw(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function sw(e,t){return e.button===0&&(!t||t==="_self")&&!lw(e)}const cw=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],uw="6";try{window.__reactRouterVersion=uw}catch{}function dw(e,t){return T2({basename:t==null?void 0:t.basename,future:Eo({},t==null?void 0:t.future,{v7_prependBasename:!0}),history:e2({window:t==null?void 0:t.window}),hydrationData:(t==null?void 0:t.hydrationData)||fw(),routes:e,mapRouteProperties:iw,window:t==null?void 0:t.window}).initialize()}function fw(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=Eo({},t,{errors:pw(t.errors)})),t}function pw(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 jd(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 hw=p.createContext({isTransitioning:!1}),mw=p.createContext(new Map),vw="startTransition",Gp=Al[vw],gw="flushSync",qp=J_[gw];function yw(e){Gp?Gp(e):e()}function Go(e){qp?qp(e):e()}class xw{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 _w(e){let{fallbackElement:t,router:n,future:r}=e,[o,i]=p.useState(n.state),[a,l]=p.useState(),[s,u]=p.useState({isTransitioning:!1}),[d,c]=p.useState(),[f,h]=p.useState(),[y,g]=p.useState(),w=p.useRef(new Map),{v7_startTransition:m}=r||{},v=p.useCallback(P=>{m?yw(P):P()},[m]),_=p.useCallback((P,A)=>{let{deletedFetchers:T,unstable_flushSync:O,unstable_viewTransitionOpts:j}=A;T.forEach(F=>w.current.delete(F)),P.fetchers.forEach((F,$)=>{F.data!==void 0&&w.current.set($,F.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()),u({isTransitioning:!0,flushSync:!0,currentLocation:j.currentLocation,nextLocation:j.nextLocation})});let F=n.window.document.startViewTransition(()=>{Go(()=>i(P))});F.finished.finally(()=>{Go(()=>{c(void 0),h(void 0),l(void 0),u({isTransitioning:!1})})}),Go(()=>h(F));return}f?(d&&d.resolve(),f.skipTransition(),g({state:P,currentLocation:j.currentLocation,nextLocation:j.nextLocation})):(l(P),u({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&&c(new xw)},[s]),p.useEffect(()=>{if(d&&a&&n.window){let P=a,A=d.promise,T=n.window.document.startViewTransition(async()=>{v(()=>i(P)),await A});T.finished.finally(()=>{c(void 0),h(void 0),l(void 0),u({isTransitioning:!1})}),h(T)}},[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),u({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,T)=>n.navigate(P,{state:A,preventScrollReset:T==null?void 0:T.preventScrollReset}),replace:(P,A,T)=>n.navigate(P,{replace:!0,state:A,preventScrollReset:T==null?void 0:T.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(Bi.Provider,{value:k},p.createElement(zd.Provider,{value:o},p.createElement(mw.Provider,{value:w.current},p.createElement(hw.Provider,{value:s},p.createElement(ow,{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(ww,{routes:n.routes,future:n.future,state:o}):t))))),null)}function ww(e){let{routes:t,future:n,state:r}=e;return W2(t,void 0,r,n)}const Ew=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",kw=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Fv=p.forwardRef(function(t,n){let{onClick:r,relative:o,reloadDocument:i,replace:a,state:l,target:s,to:u,preventScrollReset:d,unstable_viewTransition:c}=t,f=aw(t,cw),{basename:h}=p.useContext(ir),y,g=!1;if(typeof u=="string"&&kw.test(u)&&(y=u,Ew))try{let _=new URL(window.location.href),E=u.startsWith("//")?new URL(_.protocol+u):new URL(u),C=Sr(E.pathname,h);E.origin===_.origin&&C!=null?u=C+E.search+E.hash:g=!0}catch{}let w=V2(u,{relative:o}),m=Aw(u,{replace:a,state:l,target:s,preventScrollReset:d,relative:o,unstable_viewTransition:c});function v(_){r&&r(_),_.defaultPrevented||m(_)}return p.createElement("a",Eo({},f,{href:y||w,onClick:g||i?r:v,ref:n,target:s}))});function bw(e){let{getKey:t,storageKey:n}=e;return Sw({getKey:t,storageKey:n}),null}var su;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(su||(su={}));var cu;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(cu||(cu={}));function Cw(e){let t=p.useContext(Bi);return t||ne(!1),t}function Pw(e){let t=p.useContext(zd);return t||ne(!1),t}function Aw(e,t){let{target:n,replace:r,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l}=t===void 0?{}:t,s=Ud(),u=Re(),d=Nv(e,{relative:a});return p.useCallback(c=>{if(sw(c,n)){c.preventDefault();let f=r!==void 0?r:br(u)===br(d);s(e,{replace:f,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l})}},[u,s,d,r,o,n,e,i,a,l])}const Yp="react-router-scroll-positions";let va={};function Sw(e){let{getKey:t,storageKey:n}=e===void 0?{}:e,{router:r}=Cw(su.UseScrollRestoration),{restoreScrollPosition:o,preventScrollReset:i}=Pw(cu.UseScrollRestoration),{basename:a}=p.useContext(ir),l=Re(),s=ew(),u=J2();p.useEffect(()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"}),[]),Tw(p.useCallback(()=>{if(u.state==="idle"){let d=(t?t(l,s):null)||l.key;va[d]=window.scrollY}try{sessionStorage.setItem(n||Yp,JSON.stringify(va))}catch{}window.history.scrollRestoration="auto"},[n,t,u.state,l,s])),typeof document<"u"&&(p.useLayoutEffect(()=>{try{let d=sessionStorage.getItem(n||Yp);d&&(va=JSON.parse(d))}catch{}},[n]),p.useLayoutEffect(()=>{let d=t&&a!=="/"?(f,h)=>t(Eo({},f,{pathname:Sr(f.pathname,a)||f.pathname}),h):t,c=r==null?void 0:r.enableScrollRestoration(va,()=>window.scrollY,d);return()=>c&&c()},[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 Tw(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])}function Rw(e){return e instanceof Uint8Array||e!=null&&typeof e=="object"&&e.constructor.name==="Uint8Array"}function $w(e,...t){if(!Rw(e))throw new Error("Expected Uint8Array");if(t.length>0&&!t.includes(e.length))throw new Error(`Expected Uint8Array of length ${t}, not of length=${e.length}`)}function Qp(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Ow(e,t){$w(e);const n=t.outputLen;if(e.lengthnew DataView(e.buffer,e.byteOffset,e.byteLength),Zt=(e,t)=>e<<32-t|e>>>t,Iw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!Iw)throw new Error("Non little-endian hardware is not supported");const Lw=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function gA(e){if(!zv(e))throw new Error("Uint8Array expected");let t="";for(let n=0;ne().update(Uv(r)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function jw(e,t,n,r){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,n,r);const o=BigInt(32),i=BigInt(4294967295),a=Number(n>>o&i),l=Number(n&i),s=r?4:0,u=r?0:4;e.setUint32(t+s,a,r),e.setUint32(t+u,l,r)}class Fw extends Nw{constructor(t,n,r,o){super(),this.blockLen=t,this.outputLen=n,this.padOffset=r,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=Fs(this.buffer)}update(t){Qp(this);const{view:n,buffer:r,blockLen:o}=this;t=Uv(t);const i=t.length;for(let a=0;ao-a&&(this.process(r,0),a=0);for(let c=a;cd.length)throw new Error("_sha2: outputLen bigger than state");for(let c=0;ce&t^~e&n,Uw=(e,t,n)=>e&t^e&n^t&n,Vw=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),$n=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),On=new Uint32Array(64);class Bw extends Fw{constructor(){super(64,32,8,!1),this.A=$n[0]|0,this.B=$n[1]|0,this.C=$n[2]|0,this.D=$n[3]|0,this.E=$n[4]|0,this.F=$n[5]|0,this.G=$n[6]|0,this.H=$n[7]|0}get(){const{A:t,B:n,C:r,D:o,E:i,F:a,G:l,H:s}=this;return[t,n,r,o,i,a,l,s]}set(t,n,r,o,i,a,l,s){this.A=t|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=i|0,this.F=a|0,this.G=l|0,this.H=s|0}process(t,n){for(let c=0;c<16;c++,n+=4)On[c]=t.getUint32(n,!1);for(let c=16;c<64;c++){const f=On[c-15],h=On[c-2],y=Zt(f,7)^Zt(f,18)^f>>>3,g=Zt(h,17)^Zt(h,19)^h>>>10;On[c]=g+On[c-7]+y+On[c-16]|0}let{A:r,B:o,C:i,D:a,E:l,F:s,G:u,H:d}=this;for(let c=0;c<64;c++){const f=Zt(l,6)^Zt(l,11)^Zt(l,25),h=d+f+zw(l,s,u)+Vw[c]+On[c]|0,g=(Zt(r,2)^Zt(r,13)^Zt(r,22))+Uw(r,o,i)|0;d=u,u=s,s=l,l=a+h|0,a=i,i=o,o=r,r=h+g|0}r=r+this.A|0,o=o+this.B|0,i=i+this.C|0,a=a+this.D|0,l=l+this.E|0,s=s+this.F|0,u=u+this.G|0,d=d+this.H|0,this.set(r,o,i,a,l,s,u,d)}roundClean(){On.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const yA=Mw(()=>new Bw),Vv={blogDir:"./pages/blog",rootDir:"docs",title:"Sequence",titleTemplate:"%s – Sequence",logoUrl:{dark:"/img/sequence-composite-dark.svg",light:"/img/sequence-composite-light.svg"},basePath:"",topNav:[{text:"Solutions",items:[{text:"Wallets",link:"/solutions/wallets/embedded-wallet/01-overview",match:"/solutions/wallets/embedded-wallet/01-overview",id:241,items:[]},{text:"Marketplace",link:"/solutions/marketplaces/white-label-marketplace",match:"/solutions/marketplaces/white-label-marketplace",id:242,items:[]},{text:"Collectibles",link:"/solutions/collectibles/contracts/01-deploy-an-item-collection",match:"/solutions/collectibles/contracts/01-deploy-an-item-collection",id:243,items:[]},{text:"Payments",link:"/solutions/nft-checkout",match:"/solutions/nft-checkout",id:244,items:[]},{text:"No-code Builder",link:"/solutions/builder/overview",match:"/solutions/builder/overview",items:[{text:"Overview",link:"/solutions/builder/overview",match:"/solutions/builder/overview",id:246,items:[]}],id:245}],id:240},{text:"Guides",items:[{text:"Web3 Game with WebGL",link:"/guides/webgl-guide",match:"/guides/webgl-guide",id:248,items:[]},{text:"Web3 Game with Unity",link:"/guides/unity-guide",match:"/guides/unity-guide",id:249,items:[]},{text:"Lootboxes",link:"/guides/lootbox",match:"/guides/lootbox",id:250,items:[]},{text:"Custom Marketplace",link:"/guides/templates/template-marketplace-api",match:"/guides/templates/template-marketplace-api",id:251,items:[]}],id:247},{text:"SDKs",items:[{text:"Unity",link:"/sdk/unity/01-overview",match:"/sdk/unity/01-overview",id:253,items:[]},{text:"Unreal",link:"/sdk/unreal",match:"/sdk/unreal",id:254,items:[]},{text:"Typescript",link:"/sdk/nodejs",match:"/sdk/nodejs",id:255,items:[]},{text:"Sequence Kit",link:"/sdk/sequence-kit/01-overview",match:"/sdk/sequence-kit/01-overview",id:256,items:[]},{text:"Go",link:"/sdk/go/go",match:"/sdk/go/overview",id:257,items:[]}],id:252},{text:"APIs",items:[{text:"Marketplace API",link:"/api/marketplace",id:259,items:[]},{text:"Relayer API",link:"/api/relayer",id:260,items:[]},{text:"Indexer API",link:"/api/indexer/01-overview",id:261,items:[]},{text:"Metadata API",link:"/api/metadata",id:262,items:[]}],id:258},{text:"Support",items:[{text:"Support",link:"/support",id:264,items:[]},{text:"Token Directory",link:"/support/token-directory",id:265,items:[]},{text:"FAQ",link:"https://support.sequence.xyz",id:266,items:[]},{text:"Discord",link:"https://discord.gg/sequence",id:267,items:[]},{text:"We're hiring!",link:"https://horizon.io/careers",id:268,items:[]},{text:"Contact Us",link:"https://support.sequence.xyz",id:269,items:[]}],id:263}],sidebar:{"/solutions":[{text:"Wallets",items:[{text:"In-Game Wallet",collapsed:!0,items:[{text:"Overview",link:"/solutions/wallets/embedded-wallet/01-overview"},{text:"Quickstart",link:"/solutions/wallets/embedded-wallet/02-quickstart"},{text:"Manage Sessions",link:"/solutions/wallets/embedded-wallet/03-manage-sessions"},{text:"Use Wallets",link:"/solutions/wallets/embedded-wallet/04-use-wallets"},{text:"Validation",link:"/solutions/wallets/embedded-wallet/05-validation"},{text:"Transaction Receipts",link:"/solutions/wallets/embedded-wallet/06-transaction-receipts"}]},{text:"Universal Wallet",collapsed:!0,items:[{text:"Overview",link:"/solutions/wallets/universal-wallet/01-overview"},{text:"Quickstart",link:"/solutions/wallets/universal-wallet/02-quickstart"},{text:"Examples",collapsed:!0,items:[{text:"Connect Wallet",link:"/solutions/wallets/universal-wallet/examples/01-connect-wallet"},{text:"Authenticate Users with Message Signature",link:"/solutions/wallets/universal-wallet/examples/02-auth-address"},{text:"Signing & Verifying Messages",link:"/solutions/wallets/universal-wallet/examples/03-sign-message"},{text:"No-wallet confirmation signatures",link:"/solutions/wallets/universal-wallet/examples/04-session-keys"},{text:"Sending Transactions",link:"/solutions/wallets/universal-wallet/examples/05-send-transaction"},{text:"Sending ERC-20 Tokens",link:"/solutions/wallets/universal-wallet/examples/06-send-erc20"},{text:"Sending ERC-721 (NFT) Tokens",link:"/solutions/wallets/universal-wallet/examples/07-send-erc721"},{text:"Sending ERC-1155 (Collectible) Tokens",link:"/solutions/wallets/universal-wallet/examples/08-send-erc1155"},{text:"Sending a Batch of Transactions",link:"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions"},{text:"Building Backends with Sequence",link:"/solutions/wallets/universal-wallet/examples/10-building-backends"}]},{text:"Sequence Kit",link:"/solutions/wallets/universal-wallet/04-sequence-kit"},{text:"Supported Platforms",link:"/solutions/wallets/universal-wallet/05-platforms"},{text:"Fiat On-Ramps",link:"/solutions/wallets/universal-wallet/06-fiat-on-ramps"},{text:"Key Management",link:"/solutions/wallets/universal-wallet/07-key-management"}]}]},{text:"Marketplace",items:[{text:"White-label Marketplace",link:"/solutions/marketplaces/white-label-marketplace"},{text:"Build your Custom Marketplace",collapsed:!0,items:[{text:"Overview",link:"/solutions/marketplaces/orderbook/01-overview"},{text:"Quickstart",link:"/solutions/marketplaces/orderbook/02-quickstart"},{text:"Get Top Orders",link:"/solutions/marketplaces/orderbook/03-get-top-orders"},{text:"Get Orderbook",link:"/solutions/marketplaces/orderbook/04-get-orderbook"},{text:"Get User Activities",link:"/solutions/marketplaces/orderbook/05-get-user-activities"},{text:"Orderbook Transactions",link:"/solutions/marketplaces/orderbook/06-orderbook-transactions"}]}]},{text:"Collectibles",items:[{text:"Deployable Contracts",collapsed:!0,items:[{text:"Deploy a Collectible Contract",link:"/solutions/collectibles/contracts/01-deploy-an-item-collection"},{text:"Deploy an In-Game Currency (ERC20)",link:"/solutions/collectibles/contracts/02-deploy-ERC20-currency"}]},{text:"Metadata",collapsed:!0,items:[{text:"Manage Metadata in Builder",link:"/solutions/collectibles/metadata/800-manage-metadata-builder"}]}]},{text:"Payments",items:[{text:"NFT Checkout",link:"/solutions/nft-checkout"},{text:"Onramps",link:"/solutions/payments/onramps/01-fiat-on-ramps"}]},{text:"No-code Builder",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:"Wallet SDKs",link:"/solutions/builder/wallet-sdks"},{text:"Gas Tank",link:"/solutions/builder/gas-tank"},{text:"Node Gateway",link:"/solutions/builder/node-gateway"},{text:"Marketplaces",link:"/solutions/builder/marketplaces"},{text:"Indexer",link:"/solutions/builder/indexer"},{text:"Settings",link:"/solutions/builder/project-settings"}]},{text:"Technical References",items:[{text:"Chain Support",link:"/solutions/technical-references/chain-support"},{text:"Node Gateway",link:"/solutions/technical-references/node-gateway"},{text:"Smart Contract Wallets",collapsed:!0,items:[{text:"Why smart contract wallets?",link:"/solutions/technical-references/wallet-contracts/01-why"},{text:"Universal Deployer",link:"/solutions/technical-references/wallet-contracts/02-universal-deployer"},{text:"Wallet Factory",link:"/solutions/technical-references/wallet-contracts/03-wallet-factory"},{text:"Wallet Configuration",link:"/solutions/technical-references/wallet-contracts/04-wallet-configuration"},{text:"Transaction Encoding",link:"/solutions/technical-references/wallet-contracts/07-transaction-encoding"},{text:"Signature Encoding",link:"/solutions/technical-references/wallet-contracts/08-signature-encoding"},{text:"Wallet Context",link:"/solutions/technical-references/wallet-contracts/11-wallet-context"},{text:"Contract Audits",link:"/solutions/technical-references/wallet-contracts/12-contract-audits"}]}]}],"/guides":[{text:"Build a game with WebGL",collapsed:!0,items:[{text:"Integrate SequenceKit with WaaS",link:"/guides/webgl-guide#integrate-sequencekit-with-waas"},{text:"Deploy a collectibles contract",link:"/guides/webgl-guide#deploy-a-collectibles-contract"},{text:"Deploy a remote minter",link:"/guides/webgl-guide#deploy-a-remote-minter"},{text:"Mint in-game achievement tokens",link:"/guides/webgl-guide#mint-in-game-achievement-tokens"},{text:"Burn in-game achievement tokens",link:"/guides/webgl-guide#burn-in-game-achievement-tokens"},{text:"Integrate an embedded marketplace",link:"/guides/webgl-guide#integrate-an-embedded-marketplace"},{text:"Leverage purchased items in-game",link:"/guides/webgl-guide#leverage-purchased-items-in-game"}]},{text:"Build a mobile 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 lootbox with AI minting",link:"/guides/lootbox"},{text:"Integrate token rewards into your Discord server",link:"/guides/discord"},{text:"Templates",items:[{text:"In-Game Wallet Demo",link:"/guides/templates/template-embedded-wallet"},{text:"Building Backend Relaying Server",link:"/guides/templates/02-building-relaying-server"},{text:"Serverless Minting of Collectibles",link:"/guides/templates/03-mint-collectibles-serverless"},{text:"Marketplace API Demo",link:"/guides/templates/template-marketplace-api"}]}],"/sdk":[{text:"Game Engine",items:[{text:"Unreal",link:"/sdk/unreal"},{text:"Unity",collapsed:!0,items:[{text:"Overview",link:"/sdk/unity/01-overview"},{text:"Installation",link:"/sdk/unity/02-installation"},{text:"Setup",link:"/sdk/unity/03-setup"},{text:"Authentication",link:"/sdk/unity/04-authentication"},{text:"Write to blockchain",link:"/sdk/unity/05-write-to-blockchain"},{text:"Read from Blockchain",link:"/sdk/unity/06-read-from-blockchain"},{text:"Sign Messages",link:"/sdk/unity/07-sign-messages"},{text:"Deploy Contracts",link:"/sdk/unity/08-deploy-contracts"},{text:"Wallet UI",link:"/sdk/unity/09-wallet-ui"},{text:"Advanced",collapsed:!0,items:[{text:"Introduction",link:"/sdk/unity/Advanced/01-introduction"},{text:"Wallets",link:"/sdk/unity/Advanced/02-wallets"},{text:"Clients",link:"/sdk/unity/Advanced/03-clients"},{text:"Transfers",link:"/sdk/unity/Advanced/04-transfers"},{text:"Contracts",link:"/sdk/unity/Advanced/05-contracts"},{text:"Tokens",link:"/sdk/unity/Advanced/06-tokens"}]}]}]},{text:"Web3",items:[{text:"SequenceKit",collapsed:!0,items:[{text:"Overview",link:"/sdk/sequence-kit/01-overview"},{text:"Quickstart",link:"/sdk/sequence-kit/02-getting-started"},{text:"Configuration",link:"/sdk/sequence-kit/03-configuration"},{text:"Checkout",link:"/sdk/sequence-kit/04-checkout"},{text:"Custom Connectors",link:"/sdk/sequence-kit/05-custom-connectors"}]},{text:"TypeScript",collapsed:!0,items:[{text:"Connect Wallet",link:"/sdk/typescript/03-guides/01-connect-wallet"},{text:"Authenticate Users with Message Signature",link:"/sdk/typescript/03-guides/02-auth-address"},{text:"Signing & Verifying Messages",link:"/sdk/typescript/03-guides/03-sign-message"},{text:"No-wallet confirmation signatures",link:"/sdk/typescript/03-guides/04-session-keys"},{text:"Sending Transactions",link:"/sdk/typescript/03-guides/05-send-transaction"},{text:"Sending ERC-20 Tokens",link:"/sdk/typescript/03-guides/06-send-erc20"},{text:"Sending ERC-721 (NFT) Tokens",link:"/sdk/typescript/03-guides/07-send-erc721"},{text:"Sending ERC-1155 (Collectible) Tokens",link:"/sdk/typescript/03-guides/08-send-erc1155"},{text:"Sending a Batch of Transactions",link:"/sdk/typescript/03-guides/09-send-batch-transactions"},{text:"Building Backends with Sequence",link:"/sdk/typescript/03-guides/10-building-backends"},{text:"Wallet Connectors",items:[{text:"Overview",link:"/sdk/typescript/03-guides/connectors/01-overview"},{text:"SequenceKit",link:"/sdk/sequence-kit/01-overview"},{text:"Wagmi",link:"/sdk/typescript/03-guides/connectors/03-wagmi"},{text:"RainbowKit",link:"/sdk/typescript/03-guides/connectors/04-rainbow-kit"},{text:"Web3 Onboard",link:"/sdk/typescript/03-guides/connectors/05-web3-onboard"},{text:"Web3 React V6",link:"/sdk/typescript/03-guides/connectors/06-web3-react-v6"},{text:"Web3Modal",link:"/sdk/typescript/03-guides/connectors/07-web3modal"},{text:"FAQ",link:"/sdk/typescript/03-guides/connectors/08-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:"APIs",items:[{text:"Indexer",collapsed:!0,items:[{text:"Overview",link:"/api/indexer/01-overview"},{text:"Installation",link:"/api/indexer/02-installation"},{text:"Fetch Tokens",link:"/api/indexer/03-fetch-tokens"},{text:"Transaction History",link:"/api/indexer/04-transaction-history"},{text:"Unique Tokens",link:"/api/indexer/05-unique-tokens"},{text:"Transaction History Token Contract",link:"/api/indexer/06-transation-history-token-contract"},{text:"Native Network Balance",link:"/api/indexer/07-native-network-balance"},{text:"Indexing Tips",link:"/api/indexer/08-metadata-tips"}]},{text:"Relayer",link:"/api/relayer"},{text:"Marketplace",link:"/api/marketplace"},{text:"Metadata",link:"/api/metadata"}]}],"/support":{items:[{text:"Support",link:"/support"},{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"}}},markdown:{code:{themes:{dark:"github-dark-dimmed",light:"github-light"}}},socials:[],vite:{}},Bv=p.createContext(Vv);function Hv(){return typeof window<"u",Vv}function Hw({children:e,config:t}){const[n,r]=p.useState(()=>t||Hv());return p.useEffect(()=>{},[]),p.useEffect(()=>{typeof window<"u"},[n]),x.jsx(Bv.Provider,{value:n,children:e})}function ot(){return p.useContext(Bv)}const Ww="modulepreload",Kw=function(e){return"/"+e},Zp={},b=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link");o=Promise.all(n.map(a=>{if(a=Kw(a),a in Zp)return;Zp[a]=!0;const l=a.endsWith(".css"),s=l?'[rel="stylesheet"]':"";if(!!r)for(let c=i.length-1;c>=0;c--){const f=i[c];if(f.href===a&&(!l||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${a}"]${s}`))return;const d=document.createElement("link");if(d.rel=l?"stylesheet":Ww,l||(d.as="script",d.crossOrigin=""),d.href=a,document.head.appendChild(d),l)return new Promise((c,f)=>{d.addEventListener("load",c),d.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${a}`)))})}))}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})},Bd=[{lazy:()=>b(()=>import("./api-CZx4snhI.js"),__vite__mapDeps([])),path:"/api",type:"mdx",filePath:"api.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./api-CZx4snhI.js"),__vite__mapDeps([])),path:"/api.html",type:"mdx",filePath:"api.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./builder-QULSxq77.js"),__vite__mapDeps([])),path:"/builder",type:"mdx",filePath:"builder.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./builder-QULSxq77.js"),__vite__mapDeps([])),path:"/builder.html",type:"mdx",filePath:"builder.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./guides-C1WMslv2.js"),__vite__mapDeps([])),path:"/guides",type:"mdx",filePath:"guides.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./guides-C1WMslv2.js"),__vite__mapDeps([])),path:"/guides.html",type:"mdx",filePath:"guides.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./index-zvSSGYfB.js"),__vite__mapDeps([0,1])),path:"/",type:"mdx",filePath:"index.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./sdk-D2N61MiJ.js"),__vite__mapDeps([])),path:"/sdk",type:"mdx",filePath:"sdk.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./sdk-D2N61MiJ.js"),__vite__mapDeps([])),path:"/sdk.html",type:"mdx",filePath:"sdk.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./solutions-B5Q3HaVY.js"),__vite__mapDeps([])),path:"/solutions",type:"mdx",filePath:"solutions.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./solutions-B5Q3HaVY.js"),__vite__mapDeps([])),path:"/solutions.html",type:"mdx",filePath:"solutions.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./stack-DCajA93o.js"),__vite__mapDeps([])),path:"/stack",type:"mdx",filePath:"stack.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./stack-DCajA93o.js"),__vite__mapDeps([])),path:"/stack.html",type:"mdx",filePath:"stack.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./support-DbNzZ5Kc.js"),__vite__mapDeps([])),path:"/support",type:"mdx",filePath:"support.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./support-DbNzZ5Kc.js"),__vite__mapDeps([])),path:"/support.html",type:"mdx",filePath:"support.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./wallet-GrjrteyT.js"),__vite__mapDeps([])),path:"/wallet",type:"mdx",filePath:"wallet.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./wallet-GrjrteyT.js"),__vite__mapDeps([])),path:"/wallet.html",type:"mdx",filePath:"wallet.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./embedded-wallet-BfyLlYIQ.js"),__vite__mapDeps([2,1])),path:"/api/embedded-wallet",type:"mdx",filePath:"api/embedded-wallet.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./embedded-wallet-BfyLlYIQ.js"),__vite__mapDeps([2,1])),path:"/api/embedded-wallet.html",type:"mdx",filePath:"api/embedded-wallet.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./marketplace-18DLP9fD.js"),__vite__mapDeps([])),path:"/api/marketplace",type:"mdx",filePath:"api/marketplace.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./marketplace-18DLP9fD.js"),__vite__mapDeps([])),path:"/api/marketplace.html",type:"mdx",filePath:"api/marketplace.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./metadata-DXObJIIe.js"),__vite__mapDeps([])),path:"/api/metadata",type:"mdx",filePath:"api/metadata.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./metadata-DXObJIIe.js"),__vite__mapDeps([])),path:"/api/metadata.html",type:"mdx",filePath:"api/metadata.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./relayer-B--Nth41.js"),__vite__mapDeps([])),path:"/api/relayer",type:"mdx",filePath:"api/relayer.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./relayer-B--Nth41.js"),__vite__mapDeps([])),path:"/api/relayer.html",type:"mdx",filePath:"api/relayer.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./discord-yy34ze5o.js"),__vite__mapDeps([])),path:"/guides/discord",type:"mdx",filePath:"guides/discord.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./discord-yy34ze5o.js"),__vite__mapDeps([])),path:"/guides/discord.html",type:"mdx",filePath:"guides/discord.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./lootbox-DEQa4lNC.js"),__vite__mapDeps([])),path:"/guides/lootbox",type:"mdx",filePath:"guides/lootbox.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./lootbox-DEQa4lNC.js"),__vite__mapDeps([])),path:"/guides/lootbox.html",type:"mdx",filePath:"guides/lootbox.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./unity-guide-CueCJCPV.js"),__vite__mapDeps([])),path:"/guides/unity-guide",type:"mdx",filePath:"guides/unity-guide.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./unity-guide-CueCJCPV.js"),__vite__mapDeps([])),path:"/guides/unity-guide.html",type:"mdx",filePath:"guides/unity-guide.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./webgl-guide-CueCJCPV.js"),__vite__mapDeps([])),path:"/guides/webgl-guide",type:"mdx",filePath:"guides/webgl-guide.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./webgl-guide-CueCJCPV.js"),__vite__mapDeps([])),path:"/guides/webgl-guide.html",type:"mdx",filePath:"guides/webgl-guide.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./android-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/android",type:"mdx",filePath:"sdk/android.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./android-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/android.html",type:"mdx",filePath:"sdk/android.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./iOS-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/iOS",type:"mdx",filePath:"sdk/iOS.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./iOS-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/iOS.html",type:"mdx",filePath:"sdk/iOS.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./nodejs-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/nodejs",type:"mdx",filePath:"sdk/nodejs.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./nodejs-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/nodejs.html",type:"mdx",filePath:"sdk/nodejs.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./reactnative-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/reactnative",type:"mdx",filePath:"sdk/reactnative.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./reactnative-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/reactnative.html",type:"mdx",filePath:"sdk/reactnative.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./sequence-kit-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit",type:"mdx",filePath:"sdk/sequence-kit.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./sequence-kit-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit.html",type:"mdx",filePath:"sdk/sequence-kit.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./typescript-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/typescript",type:"mdx",filePath:"sdk/typescript.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./typescript-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/typescript.html",type:"mdx",filePath:"sdk/typescript.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./unity-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/unity",type:"mdx",filePath:"sdk/unity.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./unity-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/unity.html",type:"mdx",filePath:"sdk/unity.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./unreal-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/unreal",type:"mdx",filePath:"sdk/unreal.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./unreal-B2fnIbxK.js"),__vite__mapDeps([])),path:"/sdk/unreal.html",type:"mdx",filePath:"sdk/unreal.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./minter-BSa-53Qv.js"),__vite__mapDeps([])),path:"/solutions/minter",type:"mdx",filePath:"solutions/minter.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./minter-BSa-53Qv.js"),__vite__mapDeps([])),path:"/solutions/minter.html",type:"mdx",filePath:"solutions/minter.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./nft-checkout-pBVHcwgz.js"),__vite__mapDeps([])),path:"/solutions/nft-checkout",type:"mdx",filePath:"solutions/nft-checkout.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./nft-checkout-pBVHcwgz.js"),__vite__mapDeps([])),path:"/solutions/nft-checkout.html",type:"mdx",filePath:"solutions/nft-checkout.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./onramps-D-Axs59U.js"),__vite__mapDeps([])),path:"/solutions/onramps",type:"mdx",filePath:"solutions/onramps.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./onramps-D-Axs59U.js"),__vite__mapDeps([])),path:"/solutions/onramps.html",type:"mdx",filePath:"solutions/onramps.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./token-directory-DVROtl18.js"),__vite__mapDeps([3,1])),path:"/support/token-directory",type:"mdx",filePath:"support/token-directory.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./token-directory-DVROtl18.js"),__vite__mapDeps([3,1])),path:"/support/token-directory.html",type:"mdx",filePath:"support/token-directory.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-DwlQ2Vdp.js"),__vite__mapDeps([])),path:"/api/indexer/01-overview",type:"mdx",filePath:"api/indexer/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-DwlQ2Vdp.js"),__vite__mapDeps([])),path:"/api/indexer/01-overview.html",type:"mdx",filePath:"api/indexer/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-installation-BZrO8R1J.js"),__vite__mapDeps([])),path:"/api/indexer/02-installation",type:"mdx",filePath:"api/indexer/02-installation.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-installation-BZrO8R1J.js"),__vite__mapDeps([])),path:"/api/indexer/02-installation.html",type:"mdx",filePath:"api/indexer/02-installation.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-fetch-tokens-D0WixhHL.js"),__vite__mapDeps([4,5])),path:"/api/indexer/03-fetch-tokens",type:"mdx",filePath:"api/indexer/03-fetch-tokens.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-fetch-tokens-D0WixhHL.js"),__vite__mapDeps([4,5])),path:"/api/indexer/03-fetch-tokens.html",type:"mdx",filePath:"api/indexer/03-fetch-tokens.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-transaction-history-BmURpOpl.js"),__vite__mapDeps([])),path:"/api/indexer/04-transaction-history",type:"mdx",filePath:"api/indexer/04-transaction-history.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-transaction-history-BmURpOpl.js"),__vite__mapDeps([])),path:"/api/indexer/04-transaction-history.html",type:"mdx",filePath:"api/indexer/04-transaction-history.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-unique-tokens-B6aws6XW.js"),__vite__mapDeps([])),path:"/api/indexer/05-unique-tokens",type:"mdx",filePath:"api/indexer/05-unique-tokens.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-unique-tokens-B6aws6XW.js"),__vite__mapDeps([])),path:"/api/indexer/05-unique-tokens.html",type:"mdx",filePath:"api/indexer/05-unique-tokens.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-transation-history-token-contract-CwEE_wwj.js"),__vite__mapDeps([])),path:"/api/indexer/06-transation-history-token-contract",type:"mdx",filePath:"api/indexer/06-transation-history-token-contract.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-transation-history-token-contract-CwEE_wwj.js"),__vite__mapDeps([])),path:"/api/indexer/06-transation-history-token-contract.html",type:"mdx",filePath:"api/indexer/06-transation-history-token-contract.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-native-network-balance-Dnqc7LbR.js"),__vite__mapDeps([])),path:"/api/indexer/07-native-network-balance",type:"mdx",filePath:"api/indexer/07-native-network-balance.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-native-network-balance-Dnqc7LbR.js"),__vite__mapDeps([])),path:"/api/indexer/07-native-network-balance.html",type:"mdx",filePath:"api/indexer/07-native-network-balance.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-metadata-tips-BIzSqYlx.js"),__vite__mapDeps([])),path:"/api/indexer/08-metadata-tips",type:"mdx",filePath:"api/indexer/08-metadata-tips.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-metadata-tips-BIzSqYlx.js"),__vite__mapDeps([])),path:"/api/indexer/08-metadata-tips.html",type:"mdx",filePath:"api/indexer/08-metadata-tips.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-building-relaying-server-BHX8B3BM.js"),__vite__mapDeps([])),path:"/guides/templates/02-building-relaying-server",type:"mdx",filePath:"guides/templates/02-building-relaying-server.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-building-relaying-server-BHX8B3BM.js"),__vite__mapDeps([])),path:"/guides/templates/02-building-relaying-server.html",type:"mdx",filePath:"guides/templates/02-building-relaying-server.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-mint-collectibles-serverless-DpSz7LyU.js"),__vite__mapDeps([])),path:"/guides/templates/03-mint-collectibles-serverless",type:"mdx",filePath:"guides/templates/03-mint-collectibles-serverless.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-mint-collectibles-serverless-DpSz7LyU.js"),__vite__mapDeps([])),path:"/guides/templates/03-mint-collectibles-serverless.html",type:"mdx",filePath:"guides/templates/03-mint-collectibles-serverless.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./template-embedded-wallet-BbebFEN_.js"),__vite__mapDeps([])),path:"/guides/templates/template-embedded-wallet",type:"mdx",filePath:"guides/templates/template-embedded-wallet.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./template-embedded-wallet-BbebFEN_.js"),__vite__mapDeps([])),path:"/guides/templates/template-embedded-wallet.html",type:"mdx",filePath:"guides/templates/template-embedded-wallet.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./template-marketplace-api-B-xCZnWo.js"),__vite__mapDeps([])),path:"/guides/templates/template-marketplace-api",type:"mdx",filePath:"guides/templates/template-marketplace-api.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./template-marketplace-api-B-xCZnWo.js"),__vite__mapDeps([])),path:"/guides/templates/template-marketplace-api.html",type:"mdx",filePath:"guides/templates/template-marketplace-api.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./overview-CbmKF1dG.js"),__vite__mapDeps([])),path:"/sdk/go/overview",type:"mdx",filePath:"sdk/go/overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./overview-CbmKF1dG.js"),__vite__mapDeps([])),path:"/sdk/go/overview.html",type:"mdx",filePath:"sdk/go/overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-B8XR8Ef0.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/01-overview",type:"mdx",filePath:"sdk/sequence-kit/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-B8XR8Ef0.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/01-overview.html",type:"mdx",filePath:"sdk/sequence-kit/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-getting-started-6k5WNKDy.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/02-getting-started",type:"mdx",filePath:"sdk/sequence-kit/02-getting-started.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-getting-started-6k5WNKDy.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/02-getting-started.html",type:"mdx",filePath:"sdk/sequence-kit/02-getting-started.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-configuration-CeJRPMlZ.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/03-configuration",type:"mdx",filePath:"sdk/sequence-kit/03-configuration.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-configuration-CeJRPMlZ.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/03-configuration.html",type:"mdx",filePath:"sdk/sequence-kit/03-configuration.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-checkout-DpZFyP0s.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/04-checkout",type:"mdx",filePath:"sdk/sequence-kit/04-checkout.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-checkout-DpZFyP0s.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/04-checkout.html",type:"mdx",filePath:"sdk/sequence-kit/04-checkout.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-custom-connectors-D8GReivT.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/05-custom-connectors",type:"mdx",filePath:"sdk/sequence-kit/05-custom-connectors.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-custom-connectors-D8GReivT.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/05-custom-connectors.html",type:"mdx",filePath:"sdk/sequence-kit/05-custom-connectors.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-DwQx-QaI.js"),__vite__mapDeps([])),path:"/sdk/typescript/01-overview",type:"mdx",filePath:"sdk/typescript/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-DwQx-QaI.js"),__vite__mapDeps([])),path:"/sdk/typescript/01-overview.html",type:"mdx",filePath:"sdk/typescript/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-quickstart-DgD-oWhr.js"),__vite__mapDeps([])),path:"/sdk/typescript/02-quickstart",type:"mdx",filePath:"sdk/typescript/02-quickstart.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-quickstart-DgD-oWhr.js"),__vite__mapDeps([])),path:"/sdk/typescript/02-quickstart.html",type:"mdx",filePath:"sdk/typescript/02-quickstart.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-platforms-L-ay0RTN.js"),__vite__mapDeps([])),path:"/sdk/typescript/04-platforms",type:"mdx",filePath:"sdk/typescript/04-platforms.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-platforms-L-ay0RTN.js"),__vite__mapDeps([])),path:"/sdk/typescript/04-platforms.html",type:"mdx",filePath:"sdk/typescript/04-platforms.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-fiat-on-ramps-DuzzmOgZ.js"),__vite__mapDeps([])),path:"/sdk/typescript/05-fiat-on-ramps",type:"mdx",filePath:"sdk/typescript/05-fiat-on-ramps.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-fiat-on-ramps-DuzzmOgZ.js"),__vite__mapDeps([])),path:"/sdk/typescript/05-fiat-on-ramps.html",type:"mdx",filePath:"sdk/typescript/05-fiat-on-ramps.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-key-management-CAyKVybh.js"),__vite__mapDeps([])),path:"/sdk/typescript/06-key-management",type:"mdx",filePath:"sdk/typescript/06-key-management.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-key-management-CAyKVybh.js"),__vite__mapDeps([])),path:"/sdk/typescript/06-key-management.html",type:"mdx",filePath:"sdk/typescript/06-key-management.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-CDm9TwOo.js"),__vite__mapDeps([])),path:"/sdk/unity/01-overview",type:"mdx",filePath:"sdk/unity/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-CDm9TwOo.js"),__vite__mapDeps([])),path:"/sdk/unity/01-overview.html",type:"mdx",filePath:"sdk/unity/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-installation-ZfcWzbCM.js"),__vite__mapDeps([])),path:"/sdk/unity/02-installation",type:"mdx",filePath:"sdk/unity/02-installation.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-installation-ZfcWzbCM.js"),__vite__mapDeps([])),path:"/sdk/unity/02-installation.html",type:"mdx",filePath:"sdk/unity/02-installation.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-setup-CAEHu-rE.js"),__vite__mapDeps([])),path:"/sdk/unity/03-setup",type:"mdx",filePath:"sdk/unity/03-setup.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-setup-CAEHu-rE.js"),__vite__mapDeps([])),path:"/sdk/unity/03-setup.html",type:"mdx",filePath:"sdk/unity/03-setup.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-authentication-Ca9mV0ES.js"),__vite__mapDeps([])),path:"/sdk/unity/04-authentication",type:"mdx",filePath:"sdk/unity/04-authentication.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-authentication-Ca9mV0ES.js"),__vite__mapDeps([])),path:"/sdk/unity/04-authentication.html",type:"mdx",filePath:"sdk/unity/04-authentication.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-write-to-blockchain-VezosJxu.js"),__vite__mapDeps([])),path:"/sdk/unity/05-write-to-blockchain",type:"mdx",filePath:"sdk/unity/05-write-to-blockchain.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-write-to-blockchain-VezosJxu.js"),__vite__mapDeps([])),path:"/sdk/unity/05-write-to-blockchain.html",type:"mdx",filePath:"sdk/unity/05-write-to-blockchain.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-read-from-blockchain-73BXkFTH.js"),__vite__mapDeps([])),path:"/sdk/unity/06-read-from-blockchain",type:"mdx",filePath:"sdk/unity/06-read-from-blockchain.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-read-from-blockchain-73BXkFTH.js"),__vite__mapDeps([])),path:"/sdk/unity/06-read-from-blockchain.html",type:"mdx",filePath:"sdk/unity/06-read-from-blockchain.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-sign-messages-Cv6lHzv8.js"),__vite__mapDeps([])),path:"/sdk/unity/07-sign-messages",type:"mdx",filePath:"sdk/unity/07-sign-messages.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-sign-messages-Cv6lHzv8.js"),__vite__mapDeps([])),path:"/sdk/unity/07-sign-messages.html",type:"mdx",filePath:"sdk/unity/07-sign-messages.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-deploy-contracts-DAG8jP33.js"),__vite__mapDeps([])),path:"/sdk/unity/08-deploy-contracts",type:"mdx",filePath:"sdk/unity/08-deploy-contracts.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-deploy-contracts-DAG8jP33.js"),__vite__mapDeps([])),path:"/sdk/unity/08-deploy-contracts.html",type:"mdx",filePath:"sdk/unity/08-deploy-contracts.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./09-wallet-ui-1Oq8sjqr.js"),__vite__mapDeps([])),path:"/sdk/unity/09-wallet-ui",type:"mdx",filePath:"sdk/unity/09-wallet-ui.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./09-wallet-ui-1Oq8sjqr.js"),__vite__mapDeps([])),path:"/sdk/unity/09-wallet-ui.html",type:"mdx",filePath:"sdk/unity/09-wallet-ui.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./contracts-CjOFm7ZO.js"),__vite__mapDeps([6,7])),path:"/solutions/builder/contracts",type:"mdx",filePath:"solutions/builder/contracts.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./contracts-CjOFm7ZO.js"),__vite__mapDeps([6,7])),path:"/solutions/builder/contracts.html",type:"mdx",filePath:"solutions/builder/contracts.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./gas-tank-Bz1VtCNO.js"),__vite__mapDeps([8,7])),path:"/solutions/builder/gas-tank",type:"mdx",filePath:"solutions/builder/gas-tank.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./gas-tank-Bz1VtCNO.js"),__vite__mapDeps([8,7])),path:"/solutions/builder/gas-tank.html",type:"mdx",filePath:"solutions/builder/gas-tank.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./getting-started-Mfz2S2Lp.js"),__vite__mapDeps([9,10])),path:"/solutions/builder/getting-started",type:"mdx",filePath:"solutions/builder/getting-started.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./getting-started-Mfz2S2Lp.js"),__vite__mapDeps([9,10])),path:"/solutions/builder/getting-started.html",type:"mdx",filePath:"solutions/builder/getting-started.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./indexer-BNcqlYvI.js"),__vite__mapDeps([11,7])),path:"/solutions/builder/indexer",type:"mdx",filePath:"solutions/builder/indexer.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./indexer-BNcqlYvI.js"),__vite__mapDeps([11,7])),path:"/solutions/builder/indexer.html",type:"mdx",filePath:"solutions/builder/indexer.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./marketplaces-g41MwN17.js"),__vite__mapDeps([12,7])),path:"/solutions/builder/marketplaces",type:"mdx",filePath:"solutions/builder/marketplaces.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./marketplaces-g41MwN17.js"),__vite__mapDeps([12,7])),path:"/solutions/builder/marketplaces.html",type:"mdx",filePath:"solutions/builder/marketplaces.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./node-gateway-B-vKmDRu.js"),__vite__mapDeps([13,7])),path:"/solutions/builder/node-gateway",type:"mdx",filePath:"solutions/builder/node-gateway.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./node-gateway-B-vKmDRu.js"),__vite__mapDeps([13,7])),path:"/solutions/builder/node-gateway.html",type:"mdx",filePath:"solutions/builder/node-gateway.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./overview-C941poV6.js"),__vite__mapDeps([14,10])),path:"/solutions/builder/overview",type:"mdx",filePath:"solutions/builder/overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./overview-C941poV6.js"),__vite__mapDeps([14,10])),path:"/solutions/builder/overview.html",type:"mdx",filePath:"solutions/builder/overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./project-management-DsGrb2Gi.js"),__vite__mapDeps([15,7])),path:"/solutions/builder/project-management",type:"mdx",filePath:"solutions/builder/project-management.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./project-management-DsGrb2Gi.js"),__vite__mapDeps([15,7])),path:"/solutions/builder/project-management.html",type:"mdx",filePath:"solutions/builder/project-management.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./project-settings-CMSsJ5Y3.js"),__vite__mapDeps([16,7])),path:"/solutions/builder/project-settings",type:"mdx",filePath:"solutions/builder/project-settings.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./project-settings-CMSsJ5Y3.js"),__vite__mapDeps([16,7])),path:"/solutions/builder/project-settings.html",type:"mdx",filePath:"solutions/builder/project-settings.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./wallet-sdks-Cc2jbMjt.js"),__vite__mapDeps([17,7])),path:"/solutions/builder/wallet-sdks",type:"mdx",filePath:"solutions/builder/wallet-sdks.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./wallet-sdks-Cc2jbMjt.js"),__vite__mapDeps([17,7])),path:"/solutions/builder/wallet-sdks.html",type:"mdx",filePath:"solutions/builder/wallet-sdks.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-B8wB59mz.js"),__vite__mapDeps([18,10])),path:"/solutions/indexer/01-overview",type:"mdx",filePath:"solutions/indexer/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-B8wB59mz.js"),__vite__mapDeps([18,10])),path:"/solutions/indexer/01-overview.html",type:"mdx",filePath:"solutions/indexer/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-installation-CmHFe_OD.js"),__vite__mapDeps([])),path:"/solutions/indexer/02-installation",type:"mdx",filePath:"solutions/indexer/02-installation.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-installation-CmHFe_OD.js"),__vite__mapDeps([])),path:"/solutions/indexer/02-installation.html",type:"mdx",filePath:"solutions/indexer/02-installation.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-tokens-api-BvCSK8V2.js"),__vite__mapDeps([])),path:"/solutions/indexer/03-tokens-api",type:"mdx",filePath:"solutions/indexer/03-tokens-api.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-tokens-api-BvCSK8V2.js"),__vite__mapDeps([])),path:"/solutions/indexer/03-tokens-api.html",type:"mdx",filePath:"solutions/indexer/03-tokens-api.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-wallet-transaction-history-BvCSK8V2.js"),__vite__mapDeps([])),path:"/solutions/indexer/04-wallet-transaction-history",type:"mdx",filePath:"solutions/indexer/04-wallet-transaction-history.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-wallet-transaction-history-BvCSK8V2.js"),__vite__mapDeps([])),path:"/solutions/indexer/04-wallet-transaction-history.html",type:"mdx",filePath:"solutions/indexer/04-wallet-transaction-history.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-unique-tokens-BvCSK8V2.js"),__vite__mapDeps([])),path:"/solutions/indexer/05-unique-tokens",type:"mdx",filePath:"solutions/indexer/05-unique-tokens.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-unique-tokens-BvCSK8V2.js"),__vite__mapDeps([])),path:"/solutions/indexer/05-unique-tokens.html",type:"mdx",filePath:"solutions/indexer/05-unique-tokens.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-token-contract-history-BvCSK8V2.js"),__vite__mapDeps([])),path:"/solutions/indexer/06-token-contract-history",type:"mdx",filePath:"solutions/indexer/06-token-contract-history.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-token-contract-history-BvCSK8V2.js"),__vite__mapDeps([])),path:"/solutions/indexer/06-token-contract-history.html",type:"mdx",filePath:"solutions/indexer/06-token-contract-history.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-native-network-balance-CvWur8gO.js"),__vite__mapDeps([19,5])),path:"/solutions/indexer/07-native-network-balance",type:"mdx",filePath:"solutions/indexer/07-native-network-balance.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-native-network-balance-CvWur8gO.js"),__vite__mapDeps([19,5])),path:"/solutions/indexer/07-native-network-balance.html",type:"mdx",filePath:"solutions/indexer/07-native-network-balance.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-metadata-spam-help-K-jqvWgl.js"),__vite__mapDeps([])),path:"/solutions/indexer/08-metadata-spam-help",type:"mdx",filePath:"solutions/indexer/08-metadata-spam-help.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-metadata-spam-help-K-jqvWgl.js"),__vite__mapDeps([])),path:"/solutions/indexer/08-metadata-spam-help.html",type:"mdx",filePath:"solutions/indexer/08-metadata-spam-help.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./white-label-marketplace-DxCxhU5v.js"),__vite__mapDeps([20,7])),path:"/solutions/marketplaces/white-label-marketplace",type:"mdx",filePath:"solutions/marketplaces/white-label-marketplace.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./white-label-marketplace-DxCxhU5v.js"),__vite__mapDeps([20,7])),path:"/solutions/marketplaces/white-label-marketplace.html",type:"mdx",filePath:"solutions/marketplaces/white-label-marketplace.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./chain-support-Cp2robJr.js"),__vite__mapDeps([])),path:"/solutions/technical-references/chain-support",type:"mdx",filePath:"solutions/technical-references/chain-support.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./chain-support-Cp2robJr.js"),__vite__mapDeps([])),path:"/solutions/technical-references/chain-support.html",type:"mdx",filePath:"solutions/technical-references/chain-support.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./node-gateway-BGPM7sbe.js"),__vite__mapDeps([])),path:"/solutions/technical-references/node-gateway",type:"mdx",filePath:"solutions/technical-references/node-gateway.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./node-gateway-BGPM7sbe.js"),__vite__mapDeps([])),path:"/solutions/technical-references/node-gateway.html",type:"mdx",filePath:"solutions/technical-references/node-gateway.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./overview-vh5QMYbM.js"),__vite__mapDeps([])),path:"/solutions/wallets/overview",type:"mdx",filePath:"solutions/wallets/overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./overview-vh5QMYbM.js"),__vite__mapDeps([])),path:"/solutions/wallets/overview.html",type:"mdx",filePath:"solutions/wallets/overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-connect-wallet-F3vgRTiZ.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/01-connect-wallet",type:"mdx",filePath:"sdk/typescript/03-guides/01-connect-wallet.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-connect-wallet-F3vgRTiZ.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/01-connect-wallet.html",type:"mdx",filePath:"sdk/typescript/03-guides/01-connect-wallet.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-auth-address-63x9gD_B.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/02-auth-address",type:"mdx",filePath:"sdk/typescript/03-guides/02-auth-address.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-auth-address-63x9gD_B.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/02-auth-address.html",type:"mdx",filePath:"sdk/typescript/03-guides/02-auth-address.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-sign-message-Cn5G7lSc.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/03-sign-message",type:"mdx",filePath:"sdk/typescript/03-guides/03-sign-message.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-sign-message-Cn5G7lSc.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/03-sign-message.html",type:"mdx",filePath:"sdk/typescript/03-guides/03-sign-message.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-session-keys-CqvnoKIS.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/04-session-keys",type:"mdx",filePath:"sdk/typescript/03-guides/04-session-keys.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-session-keys-CqvnoKIS.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/04-session-keys.html",type:"mdx",filePath:"sdk/typescript/03-guides/04-session-keys.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-send-transaction-B0MAcXDd.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/05-send-transaction",type:"mdx",filePath:"sdk/typescript/03-guides/05-send-transaction.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-send-transaction-B0MAcXDd.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/05-send-transaction.html",type:"mdx",filePath:"sdk/typescript/03-guides/05-send-transaction.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-send-erc20-XQSQj5Q8.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/06-send-erc20",type:"mdx",filePath:"sdk/typescript/03-guides/06-send-erc20.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-send-erc20-XQSQj5Q8.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/06-send-erc20.html",type:"mdx",filePath:"sdk/typescript/03-guides/06-send-erc20.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-send-erc721-YLiMwPp8.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/07-send-erc721",type:"mdx",filePath:"sdk/typescript/03-guides/07-send-erc721.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-send-erc721-YLiMwPp8.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/07-send-erc721.html",type:"mdx",filePath:"sdk/typescript/03-guides/07-send-erc721.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-send-erc1155-BPo2Lx2i.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/08-send-erc1155",type:"mdx",filePath:"sdk/typescript/03-guides/08-send-erc1155.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-send-erc1155-BPo2Lx2i.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/08-send-erc1155.html",type:"mdx",filePath:"sdk/typescript/03-guides/08-send-erc1155.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-Do5fZWQa.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/09-send-batch-transactions",type:"mdx",filePath:"sdk/typescript/03-guides/09-send-batch-transactions.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-Do5fZWQa.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/09-send-batch-transactions.html",type:"mdx",filePath:"sdk/typescript/03-guides/09-send-batch-transactions.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./10-building-backends-3_wpH69z.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/10-building-backends",type:"mdx",filePath:"sdk/typescript/03-guides/10-building-backends.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./10-building-backends-3_wpH69z.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/10-building-backends.html",type:"mdx",filePath:"sdk/typescript/03-guides/10-building-backends.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-GJz_L1Q9.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/01-overview",type:"mdx",filePath:"sdk/typescript/connectors/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-GJz_L1Q9.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/01-overview.html",type:"mdx",filePath:"sdk/typescript/connectors/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-sequence-kit-DYfKAfv7.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/02-sequence-kit",type:"mdx",filePath:"sdk/typescript/connectors/02-sequence-kit.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-sequence-kit-DYfKAfv7.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/02-sequence-kit.html",type:"mdx",filePath:"sdk/typescript/connectors/02-sequence-kit.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-wagmi-BsRrkGCX.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/03-wagmi",type:"mdx",filePath:"sdk/typescript/connectors/03-wagmi.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-wagmi-BsRrkGCX.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/03-wagmi.html",type:"mdx",filePath:"sdk/typescript/connectors/03-wagmi.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-rainbow-kit-CjV-OizB.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/04-rainbow-kit",type:"mdx",filePath:"sdk/typescript/connectors/04-rainbow-kit.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-rainbow-kit-CjV-OizB.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/04-rainbow-kit.html",type:"mdx",filePath:"sdk/typescript/connectors/04-rainbow-kit.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-web3-onboard-CVawCyHG.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/05-web3-onboard",type:"mdx",filePath:"sdk/typescript/connectors/05-web3-onboard.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-web3-onboard-CVawCyHG.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/05-web3-onboard.html",type:"mdx",filePath:"sdk/typescript/connectors/05-web3-onboard.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-web3-react-v6-CaY2pWoi.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/06-web3-react-v6",type:"mdx",filePath:"sdk/typescript/connectors/06-web3-react-v6.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-web3-react-v6-CaY2pWoi.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/06-web3-react-v6.html",type:"mdx",filePath:"sdk/typescript/connectors/06-web3-react-v6.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-web3modal-B_MxMDHV.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/07-web3modal",type:"mdx",filePath:"sdk/typescript/connectors/07-web3modal.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-web3modal-B_MxMDHV.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/07-web3modal.html",type:"mdx",filePath:"sdk/typescript/connectors/07-web3modal.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-FAQ-DepmDNn0.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/08-FAQ",type:"mdx",filePath:"sdk/typescript/connectors/08-FAQ.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-FAQ-DepmDNn0.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/08-FAQ.html",type:"mdx",filePath:"sdk/typescript/connectors/08-FAQ.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-introduction-D5-dZ9eG.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/01-introduction",type:"mdx",filePath:"sdk/unity/Advanced/01-introduction.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-introduction-D5-dZ9eG.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/01-introduction.html",type:"mdx",filePath:"sdk/unity/Advanced/01-introduction.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-wallets-hufkdzO-.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/02-wallets",type:"mdx",filePath:"sdk/unity/Advanced/02-wallets.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-wallets-hufkdzO-.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/02-wallets.html",type:"mdx",filePath:"sdk/unity/Advanced/02-wallets.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-clients-BliPa7eW.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/03-clients",type:"mdx",filePath:"sdk/unity/Advanced/03-clients.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-clients-BliPa7eW.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/03-clients.html",type:"mdx",filePath:"sdk/unity/Advanced/03-clients.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-transfers-DTgmCvbU.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/04-transfers",type:"mdx",filePath:"sdk/unity/Advanced/04-transfers.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-transfers-DTgmCvbU.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/04-transfers.html",type:"mdx",filePath:"sdk/unity/Advanced/04-transfers.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-contracts-Dj4y6dqe.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/05-contracts",type:"mdx",filePath:"sdk/unity/Advanced/05-contracts.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-contracts-Dj4y6dqe.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/05-contracts.html",type:"mdx",filePath:"sdk/unity/Advanced/05-contracts.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-tokens-DFX9gYW5.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/06-tokens",type:"mdx",filePath:"sdk/unity/Advanced/06-tokens.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-tokens-DFX9gYW5.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/06-tokens.html",type:"mdx",filePath:"sdk/unity/Advanced/06-tokens.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-deploy-an-item-collection-C0Yi1LxS.js"),__vite__mapDeps([21,1])),path:"/solutions/collectibles/contracts/01-deploy-an-item-collection",type:"mdx",filePath:"solutions/collectibles/contracts/01-deploy-an-item-collection.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-deploy-an-item-collection-C0Yi1LxS.js"),__vite__mapDeps([21,1])),path:"/solutions/collectibles/contracts/01-deploy-an-item-collection.html",type:"mdx",filePath:"solutions/collectibles/contracts/01-deploy-an-item-collection.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-deploy-ERC20-currency-CDfzyuDC.js"),__vite__mapDeps([22,1])),path:"/solutions/collectibles/contracts/02-deploy-ERC20-currency",type:"mdx",filePath:"solutions/collectibles/contracts/02-deploy-ERC20-currency.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-deploy-ERC20-currency-CDfzyuDC.js"),__vite__mapDeps([22,1])),path:"/solutions/collectibles/contracts/02-deploy-ERC20-currency.html",type:"mdx",filePath:"solutions/collectibles/contracts/02-deploy-ERC20-currency.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./800-manage-metadata-builder-Dm6XG6DA.js"),__vite__mapDeps([])),path:"/solutions/collectibles/metadata/800-manage-metadata-builder",type:"mdx",filePath:"solutions/collectibles/metadata/800-manage-metadata-builder.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./800-manage-metadata-builder-Dm6XG6DA.js"),__vite__mapDeps([])),path:"/solutions/collectibles/metadata/800-manage-metadata-builder.html",type:"mdx",filePath:"solutions/collectibles/metadata/800-manage-metadata-builder.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-BwLa55n_.js"),__vite__mapDeps([23,1,10])),path:"/solutions/marketplaces/orderbook/01-overview",type:"mdx",filePath:"solutions/marketplaces/orderbook/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-BwLa55n_.js"),__vite__mapDeps([23,1,10])),path:"/solutions/marketplaces/orderbook/01-overview.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-quickstart-xxXaq7Pn.js"),__vite__mapDeps([])),path:"/solutions/marketplaces/orderbook/02-quickstart",type:"mdx",filePath:"solutions/marketplaces/orderbook/02-quickstart.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-quickstart-xxXaq7Pn.js"),__vite__mapDeps([])),path:"/solutions/marketplaces/orderbook/02-quickstart.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/02-quickstart.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-get-top-orders-CuGlHPhA.js"),__vite__mapDeps([24,5,1])),path:"/solutions/marketplaces/orderbook/03-get-top-orders",type:"mdx",filePath:"solutions/marketplaces/orderbook/03-get-top-orders.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-get-top-orders-CuGlHPhA.js"),__vite__mapDeps([24,5,1])),path:"/solutions/marketplaces/orderbook/03-get-top-orders.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/03-get-top-orders.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-get-orderbook-BX14J_v-.js"),__vite__mapDeps([25,1,5])),path:"/solutions/marketplaces/orderbook/04-get-orderbook",type:"mdx",filePath:"solutions/marketplaces/orderbook/04-get-orderbook.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-get-orderbook-BX14J_v-.js"),__vite__mapDeps([25,1,5])),path:"/solutions/marketplaces/orderbook/04-get-orderbook.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/04-get-orderbook.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-get-user-activities-BjO2VX3q.js"),__vite__mapDeps([26,5])),path:"/solutions/marketplaces/orderbook/05-get-user-activities",type:"mdx",filePath:"solutions/marketplaces/orderbook/05-get-user-activities.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-get-user-activities-BjO2VX3q.js"),__vite__mapDeps([26,5])),path:"/solutions/marketplaces/orderbook/05-get-user-activities.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/05-get-user-activities.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-orderbook-transactions-zkP6j4hb.js"),__vite__mapDeps([27,1])),path:"/solutions/marketplaces/orderbook/06-orderbook-transactions",type:"mdx",filePath:"solutions/marketplaces/orderbook/06-orderbook-transactions.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-orderbook-transactions-zkP6j4hb.js"),__vite__mapDeps([27,1])),path:"/solutions/marketplaces/orderbook/06-orderbook-transactions.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/06-orderbook-transactions.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-fiat-on-ramps-BpEZsM2H.js"),__vite__mapDeps([])),path:"/solutions/payments/onramps/01-fiat-on-ramps",type:"mdx",filePath:"solutions/payments/onramps/01-fiat-on-ramps.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-fiat-on-ramps-BpEZsM2H.js"),__vite__mapDeps([])),path:"/solutions/payments/onramps/01-fiat-on-ramps.html",type:"mdx",filePath:"solutions/payments/onramps/01-fiat-on-ramps.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-why-8FHUeyRc.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/01-why",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/01-why.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-why-8FHUeyRc.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/01-why.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/01-why.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-universal-deployer-DEID6HbY.js"),__vite__mapDeps([28,1])),path:"/solutions/technical-references/wallet-contracts/02-universal-deployer",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/02-universal-deployer.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-universal-deployer-DEID6HbY.js"),__vite__mapDeps([28,1])),path:"/solutions/technical-references/wallet-contracts/02-universal-deployer.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/02-universal-deployer.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-wallet-factory-QCZEaeZR.js"),__vite__mapDeps([29,1])),path:"/solutions/technical-references/wallet-contracts/03-wallet-factory",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/03-wallet-factory.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-wallet-factory-QCZEaeZR.js"),__vite__mapDeps([29,1])),path:"/solutions/technical-references/wallet-contracts/03-wallet-factory.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/03-wallet-factory.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-wallet-configuration-DjII-_lO.js"),__vite__mapDeps([30,5])),path:"/solutions/technical-references/wallet-contracts/04-wallet-configuration",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/04-wallet-configuration.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-wallet-configuration-DjII-_lO.js"),__vite__mapDeps([30,5])),path:"/solutions/technical-references/wallet-contracts/04-wallet-configuration.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/04-wallet-configuration.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-modules-and-updates-9zZOEDsr.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/05-modules-and-updates",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-modules-and-updates-9zZOEDsr.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/05-modules-and-updates.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-main-module-upgradeable-DY1GyouI.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/06-main-module-upgradeable",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/06-main-module-upgradeable.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-main-module-upgradeable-DY1GyouI.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/06-main-module-upgradeable.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/06-main-module-upgradeable.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-transaction-encoding-E5kTMKdL.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/07-transaction-encoding",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/07-transaction-encoding.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-transaction-encoding-E5kTMKdL.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/07-transaction-encoding.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/07-transaction-encoding.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-signature-encoding-BpIeLhrD.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/08-signature-encoding",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/08-signature-encoding.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-signature-encoding-BpIeLhrD.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/08-signature-encoding.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/08-signature-encoding.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./09-nested-transaction-batching-u-DqvEw7.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/09-nested-transaction-batching",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/09-nested-transaction-batching.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./09-nested-transaction-batching-u-DqvEw7.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/09-nested-transaction-batching.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/09-nested-transaction-batching.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./10-guest-module-1V98_VsT.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/10-guest-module",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/10-guest-module.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./10-guest-module-1V98_VsT.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/10-guest-module.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/10-guest-module.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./11-wallet-context-CqBkBWSb.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/11-wallet-context",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/11-wallet-context.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./11-wallet-context-CqBkBWSb.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/11-wallet-context.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/11-wallet-context.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./12-contract-audits-kUOBRZoK.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/12-contract-audits",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/12-contract-audits.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./12-contract-audits-kUOBRZoK.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/12-contract-audits.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/12-contract-audits.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-sg4qQZti.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/01-overview",type:"mdx",filePath:"solutions/wallets/embedded-wallet/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-sg4qQZti.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/01-overview.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-quickstart-zdv7eQeo.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/02-quickstart",type:"mdx",filePath:"solutions/wallets/embedded-wallet/02-quickstart.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-quickstart-zdv7eQeo.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/02-quickstart.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/02-quickstart.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-manage-sessions-Bed6WGXa.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/03-manage-sessions",type:"mdx",filePath:"solutions/wallets/embedded-wallet/03-manage-sessions.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-manage-sessions-Bed6WGXa.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/03-manage-sessions.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/03-manage-sessions.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-use-wallets-CpqAdL-1.js"),__vite__mapDeps([31,1])),path:"/solutions/wallets/embedded-wallet/04-use-wallets",type:"mdx",filePath:"solutions/wallets/embedded-wallet/04-use-wallets.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-use-wallets-CpqAdL-1.js"),__vite__mapDeps([31,1])),path:"/solutions/wallets/embedded-wallet/04-use-wallets.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/04-use-wallets.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-validation-DVqBruW7.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/05-validation",type:"mdx",filePath:"solutions/wallets/embedded-wallet/05-validation.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-validation-DVqBruW7.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/05-validation.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/05-validation.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-transaction-receipts-xKZlIoFb.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/06-transaction-receipts",type:"mdx",filePath:"solutions/wallets/embedded-wallet/06-transaction-receipts.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-transaction-receipts-xKZlIoFb.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/06-transaction-receipts.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/06-transaction-receipts.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-RdxEHBz8.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/01-overview",type:"mdx",filePath:"solutions/wallets/universal-wallet/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-overview-RdxEHBz8.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/01-overview.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/01-overview.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-quickstart-BTnDCOWm.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/02-quickstart",type:"mdx",filePath:"solutions/wallets/universal-wallet/02-quickstart.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-quickstart-BTnDCOWm.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/02-quickstart.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/02-quickstart.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-sequence-kit-B3RjIvG6.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/04-sequence-kit",type:"mdx",filePath:"solutions/wallets/universal-wallet/04-sequence-kit.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-sequence-kit-B3RjIvG6.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/04-sequence-kit.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/04-sequence-kit.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-platforms-489X8Wat.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/05-platforms",type:"mdx",filePath:"solutions/wallets/universal-wallet/05-platforms.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-platforms-489X8Wat.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/05-platforms.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/05-platforms.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-fiat-on-ramps-CSS08Lfl.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/06-fiat-on-ramps",type:"mdx",filePath:"solutions/wallets/universal-wallet/06-fiat-on-ramps.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-fiat-on-ramps-CSS08Lfl.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/06-fiat-on-ramps.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/06-fiat-on-ramps.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-key-management-DUbSlzfo.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/07-key-management",type:"mdx",filePath:"solutions/wallets/universal-wallet/07-key-management.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-key-management-DUbSlzfo.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/07-key-management.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/07-key-management.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-connect-wallet-U8b6QA2h.js"),__vite__mapDeps([32,1])),path:"/solutions/wallets/universal-wallet/examples/01-connect-wallet",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/01-connect-wallet.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./01-connect-wallet-U8b6QA2h.js"),__vite__mapDeps([32,1])),path:"/solutions/wallets/universal-wallet/examples/01-connect-wallet.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/01-connect-wallet.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-auth-address-DQDRmsCg.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/02-auth-address",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/02-auth-address.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./02-auth-address-DQDRmsCg.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/02-auth-address.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/02-auth-address.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-sign-message-67OGb3o1.js"),__vite__mapDeps([33,5,1])),path:"/solutions/wallets/universal-wallet/examples/03-sign-message",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/03-sign-message.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./03-sign-message-67OGb3o1.js"),__vite__mapDeps([33,5,1])),path:"/solutions/wallets/universal-wallet/examples/03-sign-message.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/03-sign-message.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-session-keys-1izP5hvN.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/04-session-keys",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/04-session-keys.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./04-session-keys-1izP5hvN.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/04-session-keys.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/04-session-keys.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-send-transaction-ZzzFqw8C.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/05-send-transaction",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/05-send-transaction.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./05-send-transaction-ZzzFqw8C.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/05-send-transaction.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/05-send-transaction.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-send-erc20-C1l4rkxy.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/06-send-erc20",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/06-send-erc20.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./06-send-erc20-C1l4rkxy.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/06-send-erc20.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/06-send-erc20.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-send-erc721-98x3-w4n.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/07-send-erc721",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/07-send-erc721.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./07-send-erc721-98x3-w4n.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/07-send-erc721.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/07-send-erc721.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-send-erc1155-CBTp7FaY.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/08-send-erc1155",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/08-send-erc1155.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./08-send-erc1155-CBTp7FaY.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/08-send-erc1155.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/08-send-erc1155.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-YOyMzkjj.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/09-send-batch-transactions.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-YOyMzkjj.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/09-send-batch-transactions.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./10-building-backends-Co9Q_2YW.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/10-building-backends",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/10-building-backends.mdx",lastUpdatedAt:1712078841e3},{lazy:()=>b(()=>import("./10-building-backends-Co9Q_2YW.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/10-building-backends.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/10-building-backends.mdx",lastUpdatedAt:1712078841e3}];var zs={horizontalPadding:"var(--vocs-content_horizontalPadding)",verticalPadding:"var(--vocs-content_verticalPadding)",width:"var(--vocs-content_width)"},Gw={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'},qw={default:"var(--vocs-fontFamily_default)",mono:"var(--vocs-fontFamily_mono)"},Xp={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)"},Us={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 Wv(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 Kv(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],r=e.constructor();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]=Kv(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 Gt(e,t){var n={};if(typeof t=="object"){var r=e;Kv(t,(l,s)=>{if(l!=null){var u=Yw(r,s);n[Jp(u)]=String(l)}})}else{var o=e;for(var i in o){var a=o[i];a!=null&&(n[Jp(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 Qw="var(--vocs_ExternalLink_iconUrl)",Zw="vocs_ExternalLink";const Xw=p.forwardRef(({className:e,children:t,hideExternalIcon:n,href:r,...o},i)=>{const{basePath:a}=ot(),l=a;return x.jsx("a",{ref:i,className:D(e,n||typeof t!="string"?void 0:Zw),href:r,target:"_blank",rel:"noopener noreferrer",style:Gt({[Qw]:`url(${l}/.vocs/icons/arrow-diagonal.svg)`}),...o,children:t})});var eh="vocs_Link_accent_underlined",th="vocs_Link",nh="vocs_Link_styleless",uu=new Map,ga=new WeakMap,rh=0,Jw=void 0;function e8(e){return e?(ga.has(e)||(rh+=1,ga.set(e,rh.toString())),ga.get(e)):"0"}function t8(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?e8(e.root):e[t]}`).toString()}function n8(e){const t=t8(e);let n=uu.get(t);if(!n){const r=new Map;let o;const i=new IntersectionObserver(a=>{a.forEach(l=>{var s;const u=l.isIntersecting&&o.some(d=>l.intersectionRatio>=d);e.trackVisibility&&typeof l.isVisible>"u"&&(l.isVisible=u),(s=r.get(l.target))==null||s.forEach(d=>{d(u,l)})})},e);o=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:r},uu.set(t,n)}return n}function r8(e,t,n={},r=Jw){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}=n8(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(),uu.delete(o))}}function Gv({threshold:e,delay:t,trackVisibility:n,rootMargin:r,root:o,triggerOnce:i,skip:a,initialInView:l,fallbackInView:s,onChange:u}={}){var d;const[c,f]=p.useState(null),h=p.useRef(),[y,g]=p.useState({inView:!!l,entry:void 0});h.current=u,p.useEffect(()=>{if(a||!c)return;let _;return _=r8(c,(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,c,o,r,i,a,n,s,t]);const w=(d=y.entry)==null?void 0:d.target,m=p.useRef();!c&&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 o8(...e){return t=>{i8(t,...e)}}function i8(e,...t){t.forEach(n=>{typeof n=="function"?n(e):n!=null&&(n.current=e)})}const Zn=p.forwardRef((e,t)=>{const n=()=>{var i;return(i=Bd.find(a=>a.path===e.to))==null?void 0:i.lazy()},{ref:r,inView:o}=Gv();return p.useEffect(()=>{o&&n()},[o,n]),x.jsx(Fv,{ref:o8(t,r),...e})}),rn=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(Xw,{...e,ref:t,className:D(e.className,th,r==="accent underlined"&&eh,r==="styleless"&&nh),hideExternalIcon:e.hideExternalIcon});const[i,a]=(n||"").split("#"),l=`${i||o}${a?`#${a}`:""}`;return x.jsx(Zn,{...e,ref:t,className:D(e.className,th,r==="accent underlined"&&eh,r==="styleless"&&nh),to:l})});var a8="vocs_NotFound_divider",l8="vocs_NotFound",s8="vocs_H1",qv="vocs_Heading",Yv="vocs_Heading_slugTarget";function Ro({level:e,...t}){const n=`h${e}`;return x.jsxs(n,{...t,id:void 0,className:D(t.className,qv),children:[x.jsx("div",{id:t.id,className:Yv}),t.children]})}function Qv(e){return x.jsx(Ro,{...e,className:D(e.className,s8),level:1})}var c8="vocs_Paragraph";function Zv(e){return x.jsx("p",{...e,className:D(e.className,c8)})}function u8(){return x.jsxs("div",{className:l8,children:[x.jsx(Qv,{children:"Page Not Found"}),x.jsx("div",{style:{height:Us[24]}}),x.jsx("hr",{className:a8}),x.jsx("div",{style:{height:Us[24]}}),x.jsx(Zv,{children:"The page you were looking for could not be found."}),x.jsx("div",{style:{height:Us[8]}}),x.jsx(rn,{href:"/",children:"Go to Home Page"})]})}var d8="var(--vocs_Banner_bannerBackgroundColor)",f8="var(--vocs_Banner_bannerHeight)",p8="var(--vocs_Banner_bannerTextColor)",h8="vocs_Banner_closeButton",m8="vocs_Banner_content",v8="vocs_Banner_inner",g8="vocs_Banner";const y8=Object.getPrototypeOf(x8).constructor;async function x8(e,t){return new y8(String(e))(t)}function _8(e,t){return new Function(String(e))(t)}function Rr(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 w8=["color"],E8=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,w8);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"}))}),k8=["color"],b8=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,k8);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"}))}),C8=["color"],P8=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,C8);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"}))}),A8=["color"],S8=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,A8);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"}))}),T8=["color"],R8=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,T8);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"}))}),$8=["color"],Hd=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,$8);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"}))}),O8=["color"],I8=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,O8);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 du(e,t){if(typeof e!="object"||e===null)return e;if(Array.isArray(e))return e.map((r,o)=>du(r,o));const n=e.props.children?{...e.props,children:du(e.props.children)}:e.props;return Q.createElement(e.type,{...n,key:t})}function L8({hide:e}){const{banner:t}=ot(),n=p.useMemo(()=>{const r=(t==null?void 0:t.content)??"";if(!r)return null;if(typeof r!="string")return()=>du(r);const{default:o}=_8(r,{...Yy,Fragment:p.Fragment});return o},[t]);return n?x.jsx("div",{className:D(g8),style:Gt({[d8]:t==null?void 0:t.backgroundColor,[p8]:t==null?void 0:t.textColor}),children:x.jsxs("div",{className:D(v8),children:[x.jsx("div",{className:D(m8),children:x.jsx(n,{})}),(t==null?void 0:t.dismissable)!=="false"&&x.jsx("button",{className:D(h8),onClick:e,type:"button",children:x.jsx(P8,{width:14,height:14})})]})}):null}var D8="vocs_Content";function Xv({children:e,className:t}){return x.jsx("article",{className:D(t,D8),children:e})}function Jv({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&&Jv({items:o.items,pathname:t}).length>0)&&r.push(o.id);return r}function Hi({items:e,pathname:t}){return p.useMemo(()=>Jv({items:e,pathname:t}),[e,t])}function $r(){const e=p.useContext(e1);if(!e)throw new Error("`usePageData` must be used within `PageDataContext.Provider`.");return e}const e1=p.createContext(void 0);function Wl(){const{pathname:e}=Re(),t=ot(),{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 Or(){const e=Wl(),{frontmatter:t}=$r(),{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 N8(){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 M8="vocs_utils_visibleDark",j8="vocs_utils_visibleLight",t1="vocs_utils_visuallyHidden";function q(){return q=Object.assign?Object.assign.bind():function(e){for(var t=1;te.forEach(n=>F8(n,t))}function Ue(...e){return p.useCallback(n1(...e),e)}function kn(e,t=[]){let n=[];function r(i,a){const l=p.createContext(a),s=n.length;n=[...n,a];function u(c){const{scope:f,children:h,...y}=c,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(c,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(`\`${c}\` must be used within \`${i}\``)}return u.displayName=i+"Provider",[u,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,z8(o,...t)]}function z8(...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:u})=>{const c=s(i)[`__scope${u}`];return{...l,...c}},{});return p.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}const yn=globalThis!=null&&globalThis.document?p.useLayoutEffect:()=>{},U8=Al.useId||(()=>{});let V8=0;function on(e){const[t,n]=p.useState(U8());return yn(()=>{e||n(r=>r??String(V8++))},[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 ar({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,o]=B8({defaultProp:t,onChange:n}),i=e!==void 0,a=i?e:r,l=at(n),s=p.useCallback(u=>{if(i){const c=typeof u=="function"?u(e):u;c!==e&&l(c)}else o(u)},[i,e,o,l]);return[a,s]}function B8({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 ko=p.forwardRef((e,t)=>{const{children:n,...r}=e,o=p.Children.toArray(n),i=o.find(W8);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(fu,q({},r,{ref:t}),p.isValidElement(a)?p.cloneElement(a,void 0,l):null)}return p.createElement(fu,q({},r,{ref:t}),n)});ko.displayName="Slot";const fu=p.forwardRef((e,t)=>{const{children:n,...r}=e;return p.isValidElement(n)?p.cloneElement(n,{...K8(r,n.props),ref:t?n1(t,n.ref):n.ref}):p.Children.count(n)>1?p.Children.only(null):null});fu.displayName="SlotClone";const H8=({children:e})=>p.createElement(p.Fragment,null,e);function W8(e){return p.isValidElement(e)&&e.type===H8}function K8(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 G8=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],de=G8.reduce((e,t)=>{const n=p.forwardRef((r,o)=>{const{asChild:i,...a}=r,l=i?ko: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 pu(e,t){e&&So.flushSync(()=>e.dispatchEvent(t))}function q8(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 hu="dismissableLayer.update",Y8="dismissableLayer.pointerDownOutside",Q8="dismissableLayer.focusOutside";let oh;const Z8=p.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Wd=p.forwardRef((e,t)=>{var n;const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:o,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:l,onDismiss:s,...u}=e,d=p.useContext(Z8),[c,f]=p.useState(null),h=(n=c==null?void 0:c.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),_=c?w.indexOf(c):-1,E=d.layersWithOutsidePointerEventsDisabled.size>0,C=_>=v,k=X8(A=>{const T=A.target,O=[...d.branches].some(j=>j.contains(T));!C||O||(i==null||i(A),l==null||l(A),A.defaultPrevented||s==null||s())},h),P=J8(A=>{const T=A.target;[...d.branches].some(j=>j.contains(T))||(a==null||a(A),l==null||l(A),A.defaultPrevented||s==null||s())},h);return q8(A=>{_===d.layers.size-1&&(o==null||o(A),!A.defaultPrevented&&s&&(A.preventDefault(),s()))},h),p.useEffect(()=>{if(c)return r&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(oh=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(c)),d.layers.add(c),ih(),()=>{r&&d.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=oh)}},[c,h,r,d]),p.useEffect(()=>()=>{c&&(d.layers.delete(c),d.layersWithOutsidePointerEventsDisabled.delete(c),ih())},[c,d]),p.useEffect(()=>{const A=()=>y({});return document.addEventListener(hu,A),()=>document.removeEventListener(hu,A)},[]),p.createElement(de.div,q({},u,{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 X8(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 u=function(){r1(Y8,n,s,{discrete:!0})};const s={originalEvent:l};l.pointerType==="touch"?(t.removeEventListener("click",o.current),o.current=u,t.addEventListener("click",o.current,{once:!0})):u()}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 J8(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&&r1(Q8,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 ih(){const e=new CustomEvent(hu);document.dispatchEvent(e)}function r1(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?pu(o,i):o.dispatchEvent(i)}const Vs="focusScope.autoFocusOnMount",Bs="focusScope.autoFocusOnUnmount",ah={bubbles:!1,cancelable:!0},o1=p.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:i,...a}=e,[l,s]=p.useState(null),u=at(o),d=at(i),c=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)?c.current=E:Ln(c.current,{select:!0})},w=function(_){if(h.paused||!l)return;const E=_.relatedTarget;E!==null&&(l.contains(E)||Ln(c.current,{select:!0}))},m=function(_){if(document.activeElement===document.body)for(const C of _)C.removedNodes.length>0&&Ln(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){sh.add(h);const g=document.activeElement;if(!l.contains(g)){const m=new CustomEvent(Vs,ah);l.addEventListener(Vs,u),l.dispatchEvent(m),m.defaultPrevented||(e7(i7(i1(l)),{select:!0}),document.activeElement===g&&Ln(l))}return()=>{l.removeEventListener(Vs,u),setTimeout(()=>{const m=new CustomEvent(Bs,ah);l.addEventListener(Bs,d),l.dispatchEvent(m),m.defaultPrevented||Ln(g??document.body,{select:!0}),l.removeEventListener(Bs,d),sh.remove(h)},0)}}},[l,u,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]=t7(v);_&&E?!g.shiftKey&&m===E?(g.preventDefault(),n&&Ln(_,{select:!0})):g.shiftKey&&m===_&&(g.preventDefault(),n&&Ln(E,{select:!0})):m===v&&g.preventDefault()}},[n,r,h.paused]);return p.createElement(de.div,q({tabIndex:-1},a,{ref:f,onKeyDown:y}))});function e7(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(Ln(r,{select:t}),document.activeElement!==n)return}function t7(e){const t=i1(e),n=lh(t,e),r=lh(t.reverse(),e);return[n,r]}function i1(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 lh(e,t){for(const n of e)if(!n7(n,{upTo:t}))return n}function n7(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 r7(e){return e instanceof HTMLInputElement&&"select"in e}function Ln(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&r7(e)&&t&&e.select()}}const sh=o7();function o7(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=ch(e,t),e.unshift(t)},remove(t){var n;e=ch(e,t),(n=e[0])===null||n===void 0||n.resume()}}}function ch(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function i7(e){return e.filter(t=>t.tagName!=="A")}const a1=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?wv.createPortal(p.createElement(de.div,q({},o,{ref:t})),r):null});function a7(e,t){return p.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const bn=e=>{const{present:t,children:n}=e,r=l7(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};bn.displayName="Presence";function l7(e){const[t,n]=p.useState(),r=p.useRef({}),o=p.useRef(e),i=p.useRef("none"),a=e?"mounted":"unmounted",[l,s]=a7(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return p.useEffect(()=>{const u=ya(r.current);i.current=l==="mounted"?u:"none"},[l]),yn(()=>{const u=r.current,d=o.current;if(d!==e){const f=i.current,h=ya(u);e?s("MOUNT"):h==="none"||(u==null?void 0:u.display)==="none"?s("UNMOUNT"):s(d&&f!==h?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,s]),yn(()=>{if(t){const u=c=>{const h=ya(r.current).includes(c.animationName);c.target===t&&h&&So.flushSync(()=>s("ANIMATION_END"))},d=c=>{c.target===t&&(i.current=ya(r.current))};return t.addEventListener("animationstart",d),t.addEventListener("animationcancel",u),t.addEventListener("animationend",u),()=>{t.removeEventListener("animationstart",d),t.removeEventListener("animationcancel",u),t.removeEventListener("animationend",u)}}else s("ANIMATION_END")},[t,s]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:p.useCallback(u=>{u&&(r.current=getComputedStyle(u)),n(u)},[])}}function ya(e){return(e==null?void 0:e.animationName)||"none"}let Hs=0;function l1(){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:uh()),document.body.insertAdjacentElement("beforeend",(t=n[1])!==null&&t!==void 0?t:uh()),Hs++,()=>{Hs===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(r=>r.remove()),Hs--}},[])}function uh(){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 en=function(){return en=Object.assign||function(t){for(var n,r=1,o=arguments.length;r"u")return k7;var t=b7(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])}},P7=d1(),gl="data-scroll-locked",A7=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(c7,` { + */function Eo(){return Eo=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}function lw(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function sw(e,t){return e.button===0&&(!t||t==="_self")&&!lw(e)}const cw=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],uw="6";try{window.__reactRouterVersion=uw}catch{}function dw(e,t){return T_({basename:t==null?void 0:t.basename,future:Eo({},t==null?void 0:t.future,{v7_prependBasename:!0}),history:e_({window:t==null?void 0:t.window}),hydrationData:(t==null?void 0:t.hydrationData)||fw(),routes:e,mapRouteProperties:iw,window:t==null?void 0:t.window}).initialize()}function fw(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=Eo({},t,{errors:pw(t.errors)})),t}function pw(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 jd(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 hw=p.createContext({isTransitioning:!1}),mw=p.createContext(new Map),vw="startTransition",Gp=Al[vw],gw="flushSync",qp=Jx[gw];function yw(e){Gp?Gp(e):e()}function Go(e){qp?qp(e):e()}class xw{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 _w(e){let{fallbackElement:t,router:n,future:r}=e,[o,i]=p.useState(n.state),[a,l]=p.useState(),[s,u]=p.useState({isTransitioning:!1}),[d,c]=p.useState(),[f,h]=p.useState(),[y,g]=p.useState(),w=p.useRef(new Map),{v7_startTransition:m}=r||{},v=p.useCallback(P=>{m?yw(P):P()},[m]),_=p.useCallback((P,A)=>{let{deletedFetchers:T,unstable_flushSync:O,unstable_viewTransitionOpts:j}=A;T.forEach(F=>w.current.delete(F)),P.fetchers.forEach((F,$)=>{F.data!==void 0&&w.current.set($,F.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()),u({isTransitioning:!0,flushSync:!0,currentLocation:j.currentLocation,nextLocation:j.nextLocation})});let F=n.window.document.startViewTransition(()=>{Go(()=>i(P))});F.finished.finally(()=>{Go(()=>{c(void 0),h(void 0),l(void 0),u({isTransitioning:!1})})}),Go(()=>h(F));return}f?(d&&d.resolve(),f.skipTransition(),g({state:P,currentLocation:j.currentLocation,nextLocation:j.nextLocation})):(l(P),u({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&&c(new xw)},[s]),p.useEffect(()=>{if(d&&a&&n.window){let P=a,A=d.promise,T=n.window.document.startViewTransition(async()=>{v(()=>i(P)),await A});T.finished.finally(()=>{c(void 0),h(void 0),l(void 0),u({isTransitioning:!1})}),h(T)}},[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),u({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,T)=>n.navigate(P,{state:A,preventScrollReset:T==null?void 0:T.preventScrollReset}),replace:(P,A,T)=>n.navigate(P,{replace:!0,state:A,preventScrollReset:T==null?void 0:T.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(Bi.Provider,{value:k},p.createElement(zd.Provider,{value:o},p.createElement(mw.Provider,{value:w.current},p.createElement(hw.Provider,{value:s},p.createElement(ow,{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(ww,{routes:n.routes,future:n.future,state:o}):t))))),null)}function ww(e){let{routes:t,future:n,state:r}=e;return W_(t,void 0,r,n)}const Ew=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",kw=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Fv=p.forwardRef(function(t,n){let{onClick:r,relative:o,reloadDocument:i,replace:a,state:l,target:s,to:u,preventScrollReset:d,unstable_viewTransition:c}=t,f=aw(t,cw),{basename:h}=p.useContext(ir),y,g=!1;if(typeof u=="string"&&kw.test(u)&&(y=u,Ew))try{let _=new URL(window.location.href),E=u.startsWith("//")?new URL(_.protocol+u):new URL(u),C=Sr(E.pathname,h);E.origin===_.origin&&C!=null?u=C+E.search+E.hash:g=!0}catch{}let w=V_(u,{relative:o}),m=Aw(u,{replace:a,state:l,target:s,preventScrollReset:d,relative:o,unstable_viewTransition:c});function v(_){r&&r(_),_.defaultPrevented||m(_)}return p.createElement("a",Eo({},f,{href:y||w,onClick:g||i?r:v,ref:n,target:s}))});function bw(e){let{getKey:t,storageKey:n}=e;return Sw({getKey:t,storageKey:n}),null}var su;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(su||(su={}));var cu;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(cu||(cu={}));function Cw(e){let t=p.useContext(Bi);return t||ne(!1),t}function Pw(e){let t=p.useContext(zd);return t||ne(!1),t}function Aw(e,t){let{target:n,replace:r,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l}=t===void 0?{}:t,s=Ud(),u=Re(),d=Nv(e,{relative:a});return p.useCallback(c=>{if(sw(c,n)){c.preventDefault();let f=r!==void 0?r:br(u)===br(d);s(e,{replace:f,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l})}},[u,s,d,r,o,n,e,i,a,l])}const Yp="react-router-scroll-positions";let va={};function Sw(e){let{getKey:t,storageKey:n}=e===void 0?{}:e,{router:r}=Cw(su.UseScrollRestoration),{restoreScrollPosition:o,preventScrollReset:i}=Pw(cu.UseScrollRestoration),{basename:a}=p.useContext(ir),l=Re(),s=ew(),u=J_();p.useEffect(()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"}),[]),Tw(p.useCallback(()=>{if(u.state==="idle"){let d=(t?t(l,s):null)||l.key;va[d]=window.scrollY}try{sessionStorage.setItem(n||Yp,JSON.stringify(va))}catch{}window.history.scrollRestoration="auto"},[n,t,u.state,l,s])),typeof document<"u"&&(p.useLayoutEffect(()=>{try{let d=sessionStorage.getItem(n||Yp);d&&(va=JSON.parse(d))}catch{}},[n]),p.useLayoutEffect(()=>{let d=t&&a!=="/"?(f,h)=>t(Eo({},f,{pathname:Sr(f.pathname,a)||f.pathname}),h):t,c=r==null?void 0:r.enableScrollRestoration(va,()=>window.scrollY,d);return()=>c&&c()},[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 Tw(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])}function Rw(e){return e instanceof Uint8Array||e!=null&&typeof e=="object"&&e.constructor.name==="Uint8Array"}function $w(e,...t){if(!Rw(e))throw new Error("Expected Uint8Array");if(t.length>0&&!t.includes(e.length))throw new Error(`Expected Uint8Array of length ${t}, not of length=${e.length}`)}function Qp(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Ow(e,t){$w(e);const n=t.outputLen;if(e.lengthnew DataView(e.buffer,e.byteOffset,e.byteLength),Zt=(e,t)=>e<<32-t|e>>>t,Iw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!Iw)throw new Error("Non little-endian hardware is not supported");const Lw=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function gP(e){if(!zv(e))throw new Error("Uint8Array expected");let t="";for(let n=0;ne().update(Uv(r)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function jw(e,t,n,r){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,n,r);const o=BigInt(32),i=BigInt(4294967295),a=Number(n>>o&i),l=Number(n&i),s=r?4:0,u=r?0:4;e.setUint32(t+s,a,r),e.setUint32(t+u,l,r)}class Fw extends Nw{constructor(t,n,r,o){super(),this.blockLen=t,this.outputLen=n,this.padOffset=r,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=Fs(this.buffer)}update(t){Qp(this);const{view:n,buffer:r,blockLen:o}=this;t=Uv(t);const i=t.length;for(let a=0;ao-a&&(this.process(r,0),a=0);for(let c=a;cd.length)throw new Error("_sha2: outputLen bigger than state");for(let c=0;ce&t^~e&n,Uw=(e,t,n)=>e&t^e&n^t&n,Vw=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),$n=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),On=new Uint32Array(64);class Bw extends Fw{constructor(){super(64,32,8,!1),this.A=$n[0]|0,this.B=$n[1]|0,this.C=$n[2]|0,this.D=$n[3]|0,this.E=$n[4]|0,this.F=$n[5]|0,this.G=$n[6]|0,this.H=$n[7]|0}get(){const{A:t,B:n,C:r,D:o,E:i,F:a,G:l,H:s}=this;return[t,n,r,o,i,a,l,s]}set(t,n,r,o,i,a,l,s){this.A=t|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=i|0,this.F=a|0,this.G=l|0,this.H=s|0}process(t,n){for(let c=0;c<16;c++,n+=4)On[c]=t.getUint32(n,!1);for(let c=16;c<64;c++){const f=On[c-15],h=On[c-2],y=Zt(f,7)^Zt(f,18)^f>>>3,g=Zt(h,17)^Zt(h,19)^h>>>10;On[c]=g+On[c-7]+y+On[c-16]|0}let{A:r,B:o,C:i,D:a,E:l,F:s,G:u,H:d}=this;for(let c=0;c<64;c++){const f=Zt(l,6)^Zt(l,11)^Zt(l,25),h=d+f+zw(l,s,u)+Vw[c]+On[c]|0,g=(Zt(r,2)^Zt(r,13)^Zt(r,22))+Uw(r,o,i)|0;d=u,u=s,s=l,l=a+h|0,a=i,i=o,o=r,r=h+g|0}r=r+this.A|0,o=o+this.B|0,i=i+this.C|0,a=a+this.D|0,l=l+this.E|0,s=s+this.F|0,u=u+this.G|0,d=d+this.H|0,this.set(r,o,i,a,l,s,u,d)}roundClean(){On.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const yP=Mw(()=>new Bw),Vv={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/embedded-wallet/01-overview",match:"/solutions/wallets/embedded-wallet/01-overview",id:211,items:[]},{text:"Marketplace",link:"/solutions/marketplaces/white-label-marketplace",match:"/solutions/marketplaces/white-label-marketplace",id:212,items:[]},{text:"Collectibles",link:"/solutions/collectibles/contracts/01-deploy-an-item-collection",match:"/solutions/collectibles/contracts/01-deploy-an-item-collection",id:213,items:[]},{text:"Payments",link:"/solutions/nft-checkout",match:"/solutions/nft-checkout",id:214,items:[]},{text:"No-code Builder",link:"/solutions/builder/overview",match:"/solutions/builder/overview",items:[{text:"Overview",link:"/solutions/builder/overview",match:"/solutions/builder/overview",id:216,items:[]}],id:215}],id:210},{text:"Guides",items:[{text:"Web3 Game with WebGL",link:"/guides/webgl-guide",match:"/guides/webgl-guide",id:218,items:[]},{text:"Web3 Game with Unity",link:"/guides/unity-guide",match:"/guides/unity-guide",id:219,items:[]},{text:"Lootboxes",link:"/guides/lootbox",match:"/guides/lootbox",id:220,items:[]},{text:"Custom Marketplace",link:"/guides/templates/template-marketplace-api",match:"/guides/templates/template-marketplace-api",id:221,items:[]}],id:217},{text:"SDKs",items:[{text:"Unity",link:"/sdk/unity/01-overview",match:"/sdk/unity/01-overview",id:223,items:[]},{text:"Unreal",link:"/sdk/unreal/01-overview",match:"/sdk/unreal/01-overview",id:224,items:[]},{text:"Typescript",link:"/sdk/typescript/01-overview",match:"/sdk/typescript/01-overview",id:225,items:[]},{text:"Sequence Kit",link:"/sdk/sequence-kit/01-overview",match:"/sdk/sequence-kit/01-overview",id:226,items:[]},{text:"Go",link:"/sdk/go/overview",match:"/sdk/go/overview",id:227,items:[]}],id:222},{text:"APIs",items:[{text:"Marketplace API",link:"/api/marketplace",id:229,items:[]},{text:"Relayer API",link:"/api/relayer",id:230,items:[]},{text:"Indexer API",link:"/api/indexer/01-overview",id:231,items:[]},{text:"Metadata API",link:"/api/metadata",id:232,items:[]}],id:228},{text:"Support",items:[{text:"Support",link:"/support",id:234,items:[]},{text:"Token Directory",link:"/support/token-directory",id:235,items:[]},{text:"FAQ",link:"https://support.sequence.xyz",id:236,items:[]},{text:"Discord",link:"https://discord.gg/sequence",id:237,items:[]},{text:"We're hiring!",link:"https://horizon.io/careers",id:238,items:[]},{text:"Contact Us",link:"https://support.sequence.xyz",id:239,items:[]}],id:233}],sidebar:{"/solutions":[{text:"Wallets",items:[{text:"In-Game Wallet",collapsed:!0,items:[{text:"Overview",link:"/solutions/wallets/embedded-wallet/01-overview"},{text:"Quickstart",link:"/solutions/wallets/embedded-wallet/02-quickstart"},{text:"Manage Sessions",link:"/solutions/wallets/embedded-wallet/03-manage-sessions"},{text:"Use Wallets",link:"/solutions/wallets/embedded-wallet/04-use-wallets"},{text:"Validation",link:"/solutions/wallets/embedded-wallet/05-validation"},{text:"Transaction Receipts",link:"/solutions/wallets/embedded-wallet/06-transaction-receipts"}]},{text:"Universal Wallet",collapsed:!0,items:[{text:"Overview",link:"/solutions/wallets/universal-wallet/01-overview"},{text:"Quickstart",link:"/solutions/wallets/universal-wallet/02-quickstart"},{text:"Examples",collapsed:!0,items:[{text:"Connect Wallet",link:"/solutions/wallets/universal-wallet/examples/01-connect-wallet"},{text:"Authenticate Users with Message Signature",link:"/solutions/wallets/universal-wallet/examples/02-auth-address"},{text:"Signing & Verifying Messages",link:"/solutions/wallets/universal-wallet/examples/03-sign-message"},{text:"No-wallet confirmation signatures",link:"/solutions/wallets/universal-wallet/examples/04-session-keys"},{text:"Sending Transactions",link:"/solutions/wallets/universal-wallet/examples/05-send-transaction"},{text:"Sending ERC-20 Tokens",link:"/solutions/wallets/universal-wallet/examples/06-send-erc20"},{text:"Sending ERC-721 (NFT) Tokens",link:"/solutions/wallets/universal-wallet/examples/07-send-erc721"},{text:"Sending ERC-1155 (Collectible) Tokens",link:"/solutions/wallets/universal-wallet/examples/08-send-erc1155"},{text:"Sending a Batch of Transactions",link:"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions"},{text:"Building Backends with Sequence",link:"/solutions/wallets/universal-wallet/examples/10-building-backends"}]},{text:"Sequence Kit",link:"/solutions/wallets/universal-wallet/04-sequence-kit"},{text:"Supported Platforms",link:"/solutions/wallets/universal-wallet/05-platforms"},{text:"Fiat On-Ramps",link:"/solutions/wallets/universal-wallet/06-fiat-on-ramps"},{text:"Key Management",link:"/solutions/wallets/universal-wallet/07-key-management"}]}]},{text:"Marketplace",items:[{text:"White-label Marketplace",link:"/solutions/marketplaces/white-label-marketplace"},{text:"Build your Custom Marketplace",collapsed:!0,items:[{text:"Overview",link:"/solutions/marketplaces/orderbook/01-overview"},{text:"Quickstart",link:"/solutions/marketplaces/orderbook/02-quickstart"},{text:"Get Top Orders",link:"/solutions/marketplaces/orderbook/03-get-top-orders"},{text:"Get Orderbook",link:"/solutions/marketplaces/orderbook/04-get-orderbook"},{text:"Get User Activities",link:"/solutions/marketplaces/orderbook/05-get-user-activities"},{text:"Orderbook Transactions",link:"/solutions/marketplaces/orderbook/06-orderbook-transactions"}]}]},{text:"Collectibles",items:[{text:"Deployable Contracts",collapsed:!0,items:[{text:"Deploy a Collectible Contract",link:"/solutions/collectibles/contracts/01-deploy-an-item-collection"},{text:"Deploy an In-Game Currency (ERC20)",link:"/solutions/collectibles/contracts/02-deploy-ERC20-currency"}]},{text:"Metadata",collapsed:!0,items:[{text:"Manage Metadata in Builder",link:"/solutions/collectibles/metadata/800-manage-metadata-builder"}]}]},{text:"Payments",items:[{text:"NFT Checkout",link:"/solutions/nft-checkout"},{text:"Onramps",link:"/solutions/payments/onramps/01-fiat-on-ramps"}]},{text:"No-code Builder",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:"Wallet SDKs",link:"/solutions/builder/wallet-sdks"},{text:"Gas Tank",link:"/solutions/builder/gas-tank"},{text:"Node Gateway",link:"/solutions/builder/node-gateway"},{text:"Marketplaces",link:"/solutions/builder/marketplaces"},{text:"Indexer",link:"/solutions/builder/indexer"},{text:"Settings",link:"/solutions/builder/project-settings"}]},{text:"Technical References",items:[{text:"Chain Support",link:"/solutions/technical-references/chain-support"},{text:"Node Gateway",link:"/solutions/technical-references/node-gateway"},{text:"Smart Contract Wallets",collapsed:!0,items:[{text:"Why smart contract wallets?",link:"/solutions/technical-references/wallet-contracts/01-why"},{text:"Universal Deployer",link:"/solutions/technical-references/wallet-contracts/02-universal-deployer"},{text:"Wallet Factory",link:"/solutions/technical-references/wallet-contracts/03-wallet-factory"},{text:"Wallet Configuration",link:"/solutions/technical-references/wallet-contracts/04-wallet-configuration"},{text:"Transaction Encoding",link:"/solutions/technical-references/wallet-contracts/07-transaction-encoding"},{text:"Signature Encoding",link:"/solutions/technical-references/wallet-contracts/08-signature-encoding"},{text:"Wallet Context",link:"/solutions/technical-references/wallet-contracts/11-wallet-context"},{text:"Contract Audits",link:"/solutions/technical-references/wallet-contracts/12-contract-audits"}]}]}],"/guides":[{text:"Build a game with WebGL",collapsed:!0,items:[{text:"Integrate SequenceKit with WaaS",link:"/guides/webgl-guide#integrate-sequencekit-with-waas"},{text:"Deploy a collectibles contract",link:"/guides/webgl-guide#deploy-a-collectibles-contract"},{text:"Deploy a remote minter",link:"/guides/webgl-guide#deploy-a-remote-minter"},{text:"Mint in-game achievement tokens",link:"/guides/webgl-guide#mint-in-game-achievement-tokens"},{text:"Burn in-game achievement tokens",link:"/guides/webgl-guide#burn-in-game-achievement-tokens"},{text:"Integrate an embedded marketplace",link:"/guides/webgl-guide#integrate-an-embedded-marketplace"},{text:"Leverage purchased items in-game",link:"/guides/webgl-guide#leverage-purchased-items-in-game"}]},{text:"Build a mobile 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 lootbox with AI minting",link:"/guides/lootbox"},{text:"Integrate token rewards into your Discord server",link:"/guides/discord"},{text:"Templates",items:[{text:"In-Game Wallet Demo",link:"/guides/templates/template-embedded-wallet"},{text:"Building Backend Relaying Server",link:"/guides/templates/02-building-relaying-server"},{text:"Serverless Minting of Collectibles",link:"/guides/templates/03-mint-collectibles-serverless"},{text:"Marketplace API Demo",link:"/guides/templates/template-marketplace-api"}]}],"/sdk":[{text:"Game Engine",items:[{text:"Unreal",collapsed:!0,items:[{text:"Overview",link:"/sdk/unreal/01-overview"},{text:"Installation",link:"/sdk/unreal/02-installation"},{text:"Setup",link:"/sdk/unreal/03-setup"},{text:"Authentication",link:"/sdk/unreal/04-authentication"},{text:"API Integration",link:"/sdk/unreal/05-api-integration"},{text:"Packaging",link:"/sdk/unreal/06-packaging"}]},{text:"Unity",collapsed:!0,items:[{text:"Overview",link:"/sdk/unity/01-overview"},{text:"Installation",link:"/sdk/unity/02-installation"},{text:"Setup",link:"/sdk/unity/03-setup"},{text:"Authentication",link:"/sdk/unity/04-authentication"},{text:"Write to blockchain",link:"/sdk/unity/05-write-to-blockchain"},{text:"Read from Blockchain",link:"/sdk/unity/06-read-from-blockchain"},{text:"Sign Messages",link:"/sdk/unity/07-sign-messages"},{text:"Deploy Contracts",link:"/sdk/unity/08-deploy-contracts"},{text:"Wallet UI",link:"/sdk/unity/09-wallet-ui"},{text:"Advanced",collapsed:!0,items:[{text:"Introduction",link:"/sdk/unity/Advanced/01-introduction"},{text:"Wallets",link:"/sdk/unity/Advanced/02-wallets"},{text:"Clients",link:"/sdk/unity/Advanced/03-clients"},{text:"Transfers",link:"/sdk/unity/Advanced/04-transfers"},{text:"Contracts",link:"/sdk/unity/Advanced/05-contracts"},{text:"Tokens",link:"/sdk/unity/Advanced/06-tokens"}]}]}]},{text:"Web3",items:[{text:"SequenceKit",collapsed:!0,items:[{text:"Overview",link:"/sdk/sequence-kit/01-overview"},{text:"Quickstart",link:"/sdk/sequence-kit/02-getting-started"},{text:"Configuration",link:"/sdk/sequence-kit/03-configuration"},{text:"Checkout",link:"/sdk/sequence-kit/04-checkout"},{text:"Custom Connectors",link:"/sdk/sequence-kit/05-custom-connectors"}]},{text:"TypeScript",collapsed:!0,items:[{text:"Connect Wallet",link:"/sdk/typescript/03-guides/01-connect-wallet"},{text:"Authenticate Users with Message Signature",link:"/sdk/typescript/03-guides/02-auth-address"},{text:"Signing & Verifying Messages",link:"/sdk/typescript/03-guides/03-sign-message"},{text:"No-wallet confirmation signatures",link:"/sdk/typescript/03-guides/04-session-keys"},{text:"Sending Transactions",link:"/sdk/typescript/03-guides/05-send-transaction"},{text:"Sending ERC-20 Tokens",link:"/sdk/typescript/03-guides/06-send-erc20"},{text:"Sending ERC-721 (NFT) Tokens",link:"/sdk/typescript/03-guides/07-send-erc721"},{text:"Sending ERC-1155 (Collectible) Tokens",link:"/sdk/typescript/03-guides/08-send-erc1155"},{text:"Sending a Batch of Transactions",link:"/sdk/typescript/03-guides/09-send-batch-transactions"},{text:"Building Backends with Sequence",link:"/sdk/typescript/03-guides/10-building-backends"},{text:"Wallet Connectors",collapsed:!0,items:[{text:"Overview",link:"/sdk/typescript/connectors/01-overview"},{text:"SequenceKit",link:"/sdk/sequence-kit/01-overview"},{text:"Wagmi",link:"/sdk/typescript/connectors/03-wagmi"},{text:"RainbowKit",link:"/sdk/typescript/connectors/04-rainbow-kit"},{text:"Web3 Onboard",link:"/sdk/typescript/connectors/05-web3-onboard"},{text:"Web3 React V6",link:"/sdk/typescript/connectors/06-web3-react-v6"},{text:"Web3Modal",link:"/sdk/typescript/connectors/07-web3modal"},{text:"FAQ",link:"/sdk/typescript/connectors/08-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:"APIs",items:[{text:"Indexer",collapsed:!0,items:[{text:"Overview",link:"/api/indexer/01-overview"},{text:"Installation",link:"/api/indexer/02-installation"},{text:"Fetch Tokens",link:"/api/indexer/03-fetch-tokens"},{text:"Transaction History",link:"/api/indexer/04-transaction-history"},{text:"Unique Tokens",link:"/api/indexer/05-unique-tokens"},{text:"Transaction History Token Contract",link:"/api/indexer/06-transation-history-token-contract"},{text:"Native Network Balance",link:"/api/indexer/07-native-network-balance"},{text:"Indexing Tips",link:"/api/indexer/08-metadata-tips"}]},{text:"Relayer",link:"/api/relayer"},{text:"Marketplace",link:"/api/marketplace"},{text:"Metadata",link:"/api/metadata"}]}],"/support":{items:[{text:"Support",link:"/support"},{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"}}},markdown:{code:{themes:{dark:"github-dark-dimmed",light:"github-light"}}},socials:[],vite:{}},Bv=p.createContext(Vv);function Hv(){return typeof window<"u",Vv}function Hw({children:e,config:t}){const[n,r]=p.useState(()=>t||Hv());return p.useEffect(()=>{},[]),p.useEffect(()=>{typeof window<"u"},[n]),x.jsx(Bv.Provider,{value:n,children:e})}function ot(){return p.useContext(Bv)}const Ww="modulepreload",Kw=function(e){return"/"+e},Zp={},b=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link");o=Promise.all(n.map(a=>{if(a=Kw(a),a in Zp)return;Zp[a]=!0;const l=a.endsWith(".css"),s=l?'[rel="stylesheet"]':"";if(!!r)for(let c=i.length-1;c>=0;c--){const f=i[c];if(f.href===a&&(!l||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${a}"]${s}`))return;const d=document.createElement("link");if(d.rel=l?"stylesheet":Ww,l||(d.as="script",d.crossOrigin=""),d.href=a,document.head.appendChild(d),l)return new Promise((c,f)=>{d.addEventListener("load",c),d.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${a}`)))})}))}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})},Bd=[{lazy:()=>b(()=>import("./api-CwTDnCMS.js"),__vite__mapDeps([])),path:"/api",type:"mdx",filePath:"api.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./api-CwTDnCMS.js"),__vite__mapDeps([])),path:"/api.html",type:"mdx",filePath:"api.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./builder-CWYB5K28.js"),__vite__mapDeps([])),path:"/builder",type:"mdx",filePath:"builder.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./builder-CWYB5K28.js"),__vite__mapDeps([])),path:"/builder.html",type:"mdx",filePath:"builder.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./guides-CiPrz4EV.js"),__vite__mapDeps([])),path:"/guides",type:"mdx",filePath:"guides.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./guides-CiPrz4EV.js"),__vite__mapDeps([])),path:"/guides.html",type:"mdx",filePath:"guides.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./index-Bzi1W8NW.js"),__vite__mapDeps([0,1])),path:"/",type:"mdx",filePath:"index.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./sdk-CwKciPAs.js"),__vite__mapDeps([])),path:"/sdk",type:"mdx",filePath:"sdk.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./sdk-CwKciPAs.js"),__vite__mapDeps([])),path:"/sdk.html",type:"mdx",filePath:"sdk.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./solutions-DXL3d8Fv.js"),__vite__mapDeps([])),path:"/solutions",type:"mdx",filePath:"solutions.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./solutions-DXL3d8Fv.js"),__vite__mapDeps([])),path:"/solutions.html",type:"mdx",filePath:"solutions.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./stack-sys9QMOG.js"),__vite__mapDeps([])),path:"/stack",type:"mdx",filePath:"stack.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./stack-sys9QMOG.js"),__vite__mapDeps([])),path:"/stack.html",type:"mdx",filePath:"stack.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./support-1XM_K1Pq.js"),__vite__mapDeps([])),path:"/support",type:"mdx",filePath:"support.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./support-1XM_K1Pq.js"),__vite__mapDeps([])),path:"/support.html",type:"mdx",filePath:"support.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./wallet-mf2x4_rS.js"),__vite__mapDeps([])),path:"/wallet",type:"mdx",filePath:"wallet.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./wallet-mf2x4_rS.js"),__vite__mapDeps([])),path:"/wallet.html",type:"mdx",filePath:"wallet.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./embedded-wallet-DLKt2LEl.js"),__vite__mapDeps([2,1])),path:"/api/embedded-wallet",type:"mdx",filePath:"api/embedded-wallet.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./embedded-wallet-DLKt2LEl.js"),__vite__mapDeps([2,1])),path:"/api/embedded-wallet.html",type:"mdx",filePath:"api/embedded-wallet.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./marketplace-BCSYig1O.js"),__vite__mapDeps([])),path:"/api/marketplace",type:"mdx",filePath:"api/marketplace.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./marketplace-BCSYig1O.js"),__vite__mapDeps([])),path:"/api/marketplace.html",type:"mdx",filePath:"api/marketplace.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./metadata-CvpA6pFm.js"),__vite__mapDeps([])),path:"/api/metadata",type:"mdx",filePath:"api/metadata.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./metadata-CvpA6pFm.js"),__vite__mapDeps([])),path:"/api/metadata.html",type:"mdx",filePath:"api/metadata.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./relayer-DGbh8fZY.js"),__vite__mapDeps([])),path:"/api/relayer",type:"mdx",filePath:"api/relayer.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./relayer-DGbh8fZY.js"),__vite__mapDeps([])),path:"/api/relayer.html",type:"mdx",filePath:"api/relayer.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./discord-4SQogg4W.js"),__vite__mapDeps([])),path:"/guides/discord",type:"mdx",filePath:"guides/discord.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./discord-4SQogg4W.js"),__vite__mapDeps([])),path:"/guides/discord.html",type:"mdx",filePath:"guides/discord.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./lootbox-C0r6ta1l.js"),__vite__mapDeps([])),path:"/guides/lootbox",type:"mdx",filePath:"guides/lootbox.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./lootbox-C0r6ta1l.js"),__vite__mapDeps([])),path:"/guides/lootbox.html",type:"mdx",filePath:"guides/lootbox.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./unity-guide-txEESrUd.js"),__vite__mapDeps([])),path:"/guides/unity-guide",type:"mdx",filePath:"guides/unity-guide.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./unity-guide-txEESrUd.js"),__vite__mapDeps([])),path:"/guides/unity-guide.html",type:"mdx",filePath:"guides/unity-guide.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./webgl-guide-txEESrUd.js"),__vite__mapDeps([])),path:"/guides/webgl-guide",type:"mdx",filePath:"guides/webgl-guide.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./webgl-guide-txEESrUd.js"),__vite__mapDeps([])),path:"/guides/webgl-guide.html",type:"mdx",filePath:"guides/webgl-guide.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./android-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/android",type:"mdx",filePath:"sdk/android.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./android-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/android.html",type:"mdx",filePath:"sdk/android.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./iOS-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/iOS",type:"mdx",filePath:"sdk/iOS.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./iOS-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/iOS.html",type:"mdx",filePath:"sdk/iOS.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./nodejs-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/nodejs",type:"mdx",filePath:"sdk/nodejs.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./nodejs-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/nodejs.html",type:"mdx",filePath:"sdk/nodejs.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./reactnative-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/reactnative",type:"mdx",filePath:"sdk/reactnative.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./reactnative-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/reactnative.html",type:"mdx",filePath:"sdk/reactnative.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./sequence-kit-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit",type:"mdx",filePath:"sdk/sequence-kit.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./sequence-kit-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit.html",type:"mdx",filePath:"sdk/sequence-kit.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./typescript-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/typescript",type:"mdx",filePath:"sdk/typescript.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./typescript-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/typescript.html",type:"mdx",filePath:"sdk/typescript.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./unity-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/unity",type:"mdx",filePath:"sdk/unity.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./unity-DDSjtPZP.js"),__vite__mapDeps([])),path:"/sdk/unity.html",type:"mdx",filePath:"sdk/unity.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./minter-Bc741e3c.js"),__vite__mapDeps([])),path:"/solutions/minter",type:"mdx",filePath:"solutions/minter.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./minter-Bc741e3c.js"),__vite__mapDeps([])),path:"/solutions/minter.html",type:"mdx",filePath:"solutions/minter.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./nft-checkout-DSVuiQyl.js"),__vite__mapDeps([])),path:"/solutions/nft-checkout",type:"mdx",filePath:"solutions/nft-checkout.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./nft-checkout-DSVuiQyl.js"),__vite__mapDeps([])),path:"/solutions/nft-checkout.html",type:"mdx",filePath:"solutions/nft-checkout.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./onramps-B3y5y17T.js"),__vite__mapDeps([])),path:"/solutions/onramps",type:"mdx",filePath:"solutions/onramps.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./onramps-B3y5y17T.js"),__vite__mapDeps([])),path:"/solutions/onramps.html",type:"mdx",filePath:"solutions/onramps.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./token-directory-u4Sdw-ST.js"),__vite__mapDeps([3,1])),path:"/support/token-directory",type:"mdx",filePath:"support/token-directory.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./token-directory-u4Sdw-ST.js"),__vite__mapDeps([3,1])),path:"/support/token-directory.html",type:"mdx",filePath:"support/token-directory.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-BOMJT4H0.js"),__vite__mapDeps([])),path:"/api/indexer/01-overview",type:"mdx",filePath:"api/indexer/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-BOMJT4H0.js"),__vite__mapDeps([])),path:"/api/indexer/01-overview.html",type:"mdx",filePath:"api/indexer/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-installation-D0o4nSPs.js"),__vite__mapDeps([])),path:"/api/indexer/02-installation",type:"mdx",filePath:"api/indexer/02-installation.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-installation-D0o4nSPs.js"),__vite__mapDeps([])),path:"/api/indexer/02-installation.html",type:"mdx",filePath:"api/indexer/02-installation.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-fetch-tokens-DDkmBp8W.js"),__vite__mapDeps([4,5])),path:"/api/indexer/03-fetch-tokens",type:"mdx",filePath:"api/indexer/03-fetch-tokens.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-fetch-tokens-DDkmBp8W.js"),__vite__mapDeps([4,5])),path:"/api/indexer/03-fetch-tokens.html",type:"mdx",filePath:"api/indexer/03-fetch-tokens.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-transaction-history-wUrcEF9g.js"),__vite__mapDeps([])),path:"/api/indexer/04-transaction-history",type:"mdx",filePath:"api/indexer/04-transaction-history.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-transaction-history-wUrcEF9g.js"),__vite__mapDeps([])),path:"/api/indexer/04-transaction-history.html",type:"mdx",filePath:"api/indexer/04-transaction-history.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-unique-tokens-BBoAQBrC.js"),__vite__mapDeps([])),path:"/api/indexer/05-unique-tokens",type:"mdx",filePath:"api/indexer/05-unique-tokens.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-unique-tokens-BBoAQBrC.js"),__vite__mapDeps([])),path:"/api/indexer/05-unique-tokens.html",type:"mdx",filePath:"api/indexer/05-unique-tokens.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-transation-history-token-contract-Dkspf4AH.js"),__vite__mapDeps([])),path:"/api/indexer/06-transation-history-token-contract",type:"mdx",filePath:"api/indexer/06-transation-history-token-contract.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-transation-history-token-contract-Dkspf4AH.js"),__vite__mapDeps([])),path:"/api/indexer/06-transation-history-token-contract.html",type:"mdx",filePath:"api/indexer/06-transation-history-token-contract.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-native-network-balance-Cdn-RXjO.js"),__vite__mapDeps([])),path:"/api/indexer/07-native-network-balance",type:"mdx",filePath:"api/indexer/07-native-network-balance.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-native-network-balance-Cdn-RXjO.js"),__vite__mapDeps([])),path:"/api/indexer/07-native-network-balance.html",type:"mdx",filePath:"api/indexer/07-native-network-balance.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-metadata-tips-BWKhXYEP.js"),__vite__mapDeps([])),path:"/api/indexer/08-metadata-tips",type:"mdx",filePath:"api/indexer/08-metadata-tips.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-metadata-tips-BWKhXYEP.js"),__vite__mapDeps([])),path:"/api/indexer/08-metadata-tips.html",type:"mdx",filePath:"api/indexer/08-metadata-tips.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-building-relaying-server-tgIgg2w9.js"),__vite__mapDeps([])),path:"/guides/templates/02-building-relaying-server",type:"mdx",filePath:"guides/templates/02-building-relaying-server.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-building-relaying-server-tgIgg2w9.js"),__vite__mapDeps([])),path:"/guides/templates/02-building-relaying-server.html",type:"mdx",filePath:"guides/templates/02-building-relaying-server.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-mint-collectibles-serverless-DFmuqk8W.js"),__vite__mapDeps([])),path:"/guides/templates/03-mint-collectibles-serverless",type:"mdx",filePath:"guides/templates/03-mint-collectibles-serverless.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-mint-collectibles-serverless-DFmuqk8W.js"),__vite__mapDeps([])),path:"/guides/templates/03-mint-collectibles-serverless.html",type:"mdx",filePath:"guides/templates/03-mint-collectibles-serverless.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./template-embedded-wallet-B6sqiArS.js"),__vite__mapDeps([])),path:"/guides/templates/template-embedded-wallet",type:"mdx",filePath:"guides/templates/template-embedded-wallet.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./template-embedded-wallet-B6sqiArS.js"),__vite__mapDeps([])),path:"/guides/templates/template-embedded-wallet.html",type:"mdx",filePath:"guides/templates/template-embedded-wallet.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./template-marketplace-api-CMxsDKvn.js"),__vite__mapDeps([6,1])),path:"/guides/templates/template-marketplace-api",type:"mdx",filePath:"guides/templates/template-marketplace-api.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./template-marketplace-api-CMxsDKvn.js"),__vite__mapDeps([6,1])),path:"/guides/templates/template-marketplace-api.html",type:"mdx",filePath:"guides/templates/template-marketplace-api.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./overview-BZmNqhcT.js"),__vite__mapDeps([])),path:"/sdk/go/overview",type:"mdx",filePath:"sdk/go/overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./overview-BZmNqhcT.js"),__vite__mapDeps([])),path:"/sdk/go/overview.html",type:"mdx",filePath:"sdk/go/overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-DTc0-0Lg.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/01-overview",type:"mdx",filePath:"sdk/sequence-kit/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-DTc0-0Lg.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/01-overview.html",type:"mdx",filePath:"sdk/sequence-kit/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-getting-started-DCEjiXfb.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/02-getting-started",type:"mdx",filePath:"sdk/sequence-kit/02-getting-started.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-getting-started-DCEjiXfb.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/02-getting-started.html",type:"mdx",filePath:"sdk/sequence-kit/02-getting-started.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-configuration-cZDC_IKQ.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/03-configuration",type:"mdx",filePath:"sdk/sequence-kit/03-configuration.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-configuration-cZDC_IKQ.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/03-configuration.html",type:"mdx",filePath:"sdk/sequence-kit/03-configuration.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-checkout-BNYQ2nrw.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/04-checkout",type:"mdx",filePath:"sdk/sequence-kit/04-checkout.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-checkout-BNYQ2nrw.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/04-checkout.html",type:"mdx",filePath:"sdk/sequence-kit/04-checkout.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-custom-connectors-Bd4W47Wz.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/05-custom-connectors",type:"mdx",filePath:"sdk/sequence-kit/05-custom-connectors.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-custom-connectors-Bd4W47Wz.js"),__vite__mapDeps([])),path:"/sdk/sequence-kit/05-custom-connectors.html",type:"mdx",filePath:"sdk/sequence-kit/05-custom-connectors.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-CKoYw6iK.js"),__vite__mapDeps([])),path:"/sdk/typescript/01-overview",type:"mdx",filePath:"sdk/typescript/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-CKoYw6iK.js"),__vite__mapDeps([])),path:"/sdk/typescript/01-overview.html",type:"mdx",filePath:"sdk/typescript/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-quickstart-CVOVMm3N.js"),__vite__mapDeps([])),path:"/sdk/typescript/02-quickstart",type:"mdx",filePath:"sdk/typescript/02-quickstart.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-quickstart-CVOVMm3N.js"),__vite__mapDeps([])),path:"/sdk/typescript/02-quickstart.html",type:"mdx",filePath:"sdk/typescript/02-quickstart.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-platforms-glPWmaN4.js"),__vite__mapDeps([])),path:"/sdk/typescript/04-platforms",type:"mdx",filePath:"sdk/typescript/04-platforms.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-platforms-glPWmaN4.js"),__vite__mapDeps([])),path:"/sdk/typescript/04-platforms.html",type:"mdx",filePath:"sdk/typescript/04-platforms.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-fiat-on-ramps-CbgCC_Wz.js"),__vite__mapDeps([])),path:"/sdk/typescript/05-fiat-on-ramps",type:"mdx",filePath:"sdk/typescript/05-fiat-on-ramps.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-fiat-on-ramps-CbgCC_Wz.js"),__vite__mapDeps([])),path:"/sdk/typescript/05-fiat-on-ramps.html",type:"mdx",filePath:"sdk/typescript/05-fiat-on-ramps.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-key-management-BRNfS8bX.js"),__vite__mapDeps([])),path:"/sdk/typescript/06-key-management",type:"mdx",filePath:"sdk/typescript/06-key-management.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-key-management-BRNfS8bX.js"),__vite__mapDeps([])),path:"/sdk/typescript/06-key-management.html",type:"mdx",filePath:"sdk/typescript/06-key-management.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-CRNWUnhq.js"),__vite__mapDeps([])),path:"/sdk/unity/01-overview",type:"mdx",filePath:"sdk/unity/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-CRNWUnhq.js"),__vite__mapDeps([])),path:"/sdk/unity/01-overview.html",type:"mdx",filePath:"sdk/unity/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-installation-CLf2UaDN.js"),__vite__mapDeps([])),path:"/sdk/unity/02-installation",type:"mdx",filePath:"sdk/unity/02-installation.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-installation-CLf2UaDN.js"),__vite__mapDeps([])),path:"/sdk/unity/02-installation.html",type:"mdx",filePath:"sdk/unity/02-installation.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-setup-DVqc6pPn.js"),__vite__mapDeps([])),path:"/sdk/unity/03-setup",type:"mdx",filePath:"sdk/unity/03-setup.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-setup-DVqc6pPn.js"),__vite__mapDeps([])),path:"/sdk/unity/03-setup.html",type:"mdx",filePath:"sdk/unity/03-setup.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-authentication-Y1sSErYo.js"),__vite__mapDeps([])),path:"/sdk/unity/04-authentication",type:"mdx",filePath:"sdk/unity/04-authentication.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-authentication-Y1sSErYo.js"),__vite__mapDeps([])),path:"/sdk/unity/04-authentication.html",type:"mdx",filePath:"sdk/unity/04-authentication.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-write-to-blockchain-DCBcfOKI.js"),__vite__mapDeps([])),path:"/sdk/unity/05-write-to-blockchain",type:"mdx",filePath:"sdk/unity/05-write-to-blockchain.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-write-to-blockchain-DCBcfOKI.js"),__vite__mapDeps([])),path:"/sdk/unity/05-write-to-blockchain.html",type:"mdx",filePath:"sdk/unity/05-write-to-blockchain.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-read-from-blockchain-DEKqDbrP.js"),__vite__mapDeps([])),path:"/sdk/unity/06-read-from-blockchain",type:"mdx",filePath:"sdk/unity/06-read-from-blockchain.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-read-from-blockchain-DEKqDbrP.js"),__vite__mapDeps([])),path:"/sdk/unity/06-read-from-blockchain.html",type:"mdx",filePath:"sdk/unity/06-read-from-blockchain.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-sign-messages-D8skSErh.js"),__vite__mapDeps([])),path:"/sdk/unity/07-sign-messages",type:"mdx",filePath:"sdk/unity/07-sign-messages.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-sign-messages-D8skSErh.js"),__vite__mapDeps([])),path:"/sdk/unity/07-sign-messages.html",type:"mdx",filePath:"sdk/unity/07-sign-messages.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-deploy-contracts-LwLe-vTP.js"),__vite__mapDeps([])),path:"/sdk/unity/08-deploy-contracts",type:"mdx",filePath:"sdk/unity/08-deploy-contracts.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-deploy-contracts-LwLe-vTP.js"),__vite__mapDeps([])),path:"/sdk/unity/08-deploy-contracts.html",type:"mdx",filePath:"sdk/unity/08-deploy-contracts.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./09-wallet-ui-CGHbjSvR.js"),__vite__mapDeps([])),path:"/sdk/unity/09-wallet-ui",type:"mdx",filePath:"sdk/unity/09-wallet-ui.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./09-wallet-ui-CGHbjSvR.js"),__vite__mapDeps([])),path:"/sdk/unity/09-wallet-ui.html",type:"mdx",filePath:"sdk/unity/09-wallet-ui.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-Cgd_Khl-.js"),__vite__mapDeps([])),path:"/sdk/unreal/01-overview",type:"mdx",filePath:"sdk/unreal/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-Cgd_Khl-.js"),__vite__mapDeps([])),path:"/sdk/unreal/01-overview.html",type:"mdx",filePath:"sdk/unreal/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-installation-D1RIPokR.js"),__vite__mapDeps([])),path:"/sdk/unreal/02-installation",type:"mdx",filePath:"sdk/unreal/02-installation.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-installation-D1RIPokR.js"),__vite__mapDeps([])),path:"/sdk/unreal/02-installation.html",type:"mdx",filePath:"sdk/unreal/02-installation.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-setup-B2DzkyEa.js"),__vite__mapDeps([])),path:"/sdk/unreal/03-setup",type:"mdx",filePath:"sdk/unreal/03-setup.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-setup-B2DzkyEa.js"),__vite__mapDeps([])),path:"/sdk/unreal/03-setup.html",type:"mdx",filePath:"sdk/unreal/03-setup.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-authentication-BECPZ5yD.js"),__vite__mapDeps([])),path:"/sdk/unreal/04-authentication",type:"mdx",filePath:"sdk/unreal/04-authentication.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-authentication-BECPZ5yD.js"),__vite__mapDeps([])),path:"/sdk/unreal/04-authentication.html",type:"mdx",filePath:"sdk/unreal/04-authentication.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-api-integration-t2lA4Nv8.js"),__vite__mapDeps([])),path:"/sdk/unreal/05-api-integration",type:"mdx",filePath:"sdk/unreal/05-api-integration.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-api-integration-t2lA4Nv8.js"),__vite__mapDeps([])),path:"/sdk/unreal/05-api-integration.html",type:"mdx",filePath:"sdk/unreal/05-api-integration.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-packaging-DAGyVEwf.js"),__vite__mapDeps([])),path:"/sdk/unreal/06-packaging",type:"mdx",filePath:"sdk/unreal/06-packaging.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-packaging-DAGyVEwf.js"),__vite__mapDeps([])),path:"/sdk/unreal/06-packaging.html",type:"mdx",filePath:"sdk/unreal/06-packaging.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./contracts-CuvV6GHJ.js"),__vite__mapDeps([7,8])),path:"/solutions/builder/contracts",type:"mdx",filePath:"solutions/builder/contracts.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./contracts-CuvV6GHJ.js"),__vite__mapDeps([7,8])),path:"/solutions/builder/contracts.html",type:"mdx",filePath:"solutions/builder/contracts.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./gas-tank-5jwCKQMo.js"),__vite__mapDeps([9,8])),path:"/solutions/builder/gas-tank",type:"mdx",filePath:"solutions/builder/gas-tank.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./gas-tank-5jwCKQMo.js"),__vite__mapDeps([9,8])),path:"/solutions/builder/gas-tank.html",type:"mdx",filePath:"solutions/builder/gas-tank.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./getting-started-tGSASkus.js"),__vite__mapDeps([10,11])),path:"/solutions/builder/getting-started",type:"mdx",filePath:"solutions/builder/getting-started.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./getting-started-tGSASkus.js"),__vite__mapDeps([10,11])),path:"/solutions/builder/getting-started.html",type:"mdx",filePath:"solutions/builder/getting-started.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./indexer-C1rQqZDC.js"),__vite__mapDeps([12,8])),path:"/solutions/builder/indexer",type:"mdx",filePath:"solutions/builder/indexer.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./indexer-C1rQqZDC.js"),__vite__mapDeps([12,8])),path:"/solutions/builder/indexer.html",type:"mdx",filePath:"solutions/builder/indexer.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./marketplaces-C1EU8FD8.js"),__vite__mapDeps([13,8])),path:"/solutions/builder/marketplaces",type:"mdx",filePath:"solutions/builder/marketplaces.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./marketplaces-C1EU8FD8.js"),__vite__mapDeps([13,8])),path:"/solutions/builder/marketplaces.html",type:"mdx",filePath:"solutions/builder/marketplaces.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./node-gateway-AlJTIeLe.js"),__vite__mapDeps([14,8])),path:"/solutions/builder/node-gateway",type:"mdx",filePath:"solutions/builder/node-gateway.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./node-gateway-AlJTIeLe.js"),__vite__mapDeps([14,8])),path:"/solutions/builder/node-gateway.html",type:"mdx",filePath:"solutions/builder/node-gateway.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./overview-CxmFtSTo.js"),__vite__mapDeps([15,11])),path:"/solutions/builder/overview",type:"mdx",filePath:"solutions/builder/overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./overview-CxmFtSTo.js"),__vite__mapDeps([15,11])),path:"/solutions/builder/overview.html",type:"mdx",filePath:"solutions/builder/overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./project-management-n9UsdPJr.js"),__vite__mapDeps([16,8])),path:"/solutions/builder/project-management",type:"mdx",filePath:"solutions/builder/project-management.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./project-management-n9UsdPJr.js"),__vite__mapDeps([16,8])),path:"/solutions/builder/project-management.html",type:"mdx",filePath:"solutions/builder/project-management.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./project-settings-BpxUzeh_.js"),__vite__mapDeps([17,8])),path:"/solutions/builder/project-settings",type:"mdx",filePath:"solutions/builder/project-settings.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./project-settings-BpxUzeh_.js"),__vite__mapDeps([17,8])),path:"/solutions/builder/project-settings.html",type:"mdx",filePath:"solutions/builder/project-settings.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./wallet-sdks-Co1VpyGC.js"),__vite__mapDeps([18,8])),path:"/solutions/builder/wallet-sdks",type:"mdx",filePath:"solutions/builder/wallet-sdks.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./wallet-sdks-Co1VpyGC.js"),__vite__mapDeps([18,8])),path:"/solutions/builder/wallet-sdks.html",type:"mdx",filePath:"solutions/builder/wallet-sdks.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-CfZ4B1C6.js"),__vite__mapDeps([19,11])),path:"/solutions/indexer/01-overview",type:"mdx",filePath:"solutions/indexer/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-CfZ4B1C6.js"),__vite__mapDeps([19,11])),path:"/solutions/indexer/01-overview.html",type:"mdx",filePath:"solutions/indexer/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-installation-CObAK7UR.js"),__vite__mapDeps([])),path:"/solutions/indexer/02-installation",type:"mdx",filePath:"solutions/indexer/02-installation.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-installation-CObAK7UR.js"),__vite__mapDeps([])),path:"/solutions/indexer/02-installation.html",type:"mdx",filePath:"solutions/indexer/02-installation.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-tokens-api-Wt-yZ8iO.js"),__vite__mapDeps([])),path:"/solutions/indexer/03-tokens-api",type:"mdx",filePath:"solutions/indexer/03-tokens-api.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-tokens-api-Wt-yZ8iO.js"),__vite__mapDeps([])),path:"/solutions/indexer/03-tokens-api.html",type:"mdx",filePath:"solutions/indexer/03-tokens-api.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-wallet-transaction-history-Wt-yZ8iO.js"),__vite__mapDeps([])),path:"/solutions/indexer/04-wallet-transaction-history",type:"mdx",filePath:"solutions/indexer/04-wallet-transaction-history.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-wallet-transaction-history-Wt-yZ8iO.js"),__vite__mapDeps([])),path:"/solutions/indexer/04-wallet-transaction-history.html",type:"mdx",filePath:"solutions/indexer/04-wallet-transaction-history.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-unique-tokens-Wt-yZ8iO.js"),__vite__mapDeps([])),path:"/solutions/indexer/05-unique-tokens",type:"mdx",filePath:"solutions/indexer/05-unique-tokens.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-unique-tokens-Wt-yZ8iO.js"),__vite__mapDeps([])),path:"/solutions/indexer/05-unique-tokens.html",type:"mdx",filePath:"solutions/indexer/05-unique-tokens.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-token-contract-history-Wt-yZ8iO.js"),__vite__mapDeps([])),path:"/solutions/indexer/06-token-contract-history",type:"mdx",filePath:"solutions/indexer/06-token-contract-history.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-token-contract-history-Wt-yZ8iO.js"),__vite__mapDeps([])),path:"/solutions/indexer/06-token-contract-history.html",type:"mdx",filePath:"solutions/indexer/06-token-contract-history.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-native-network-balance-BS__wyoA.js"),__vite__mapDeps([20,5])),path:"/solutions/indexer/07-native-network-balance",type:"mdx",filePath:"solutions/indexer/07-native-network-balance.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-native-network-balance-BS__wyoA.js"),__vite__mapDeps([20,5])),path:"/solutions/indexer/07-native-network-balance.html",type:"mdx",filePath:"solutions/indexer/07-native-network-balance.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-metadata-spam-help-DNjsN4I2.js"),__vite__mapDeps([])),path:"/solutions/indexer/08-metadata-spam-help",type:"mdx",filePath:"solutions/indexer/08-metadata-spam-help.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-metadata-spam-help-DNjsN4I2.js"),__vite__mapDeps([])),path:"/solutions/indexer/08-metadata-spam-help.html",type:"mdx",filePath:"solutions/indexer/08-metadata-spam-help.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./white-label-marketplace-CCd3phEf.js"),__vite__mapDeps([21,8])),path:"/solutions/marketplaces/white-label-marketplace",type:"mdx",filePath:"solutions/marketplaces/white-label-marketplace.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./white-label-marketplace-CCd3phEf.js"),__vite__mapDeps([21,8])),path:"/solutions/marketplaces/white-label-marketplace.html",type:"mdx",filePath:"solutions/marketplaces/white-label-marketplace.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./chain-support-2kKPeZZF.js"),__vite__mapDeps([])),path:"/solutions/technical-references/chain-support",type:"mdx",filePath:"solutions/technical-references/chain-support.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./chain-support-2kKPeZZF.js"),__vite__mapDeps([])),path:"/solutions/technical-references/chain-support.html",type:"mdx",filePath:"solutions/technical-references/chain-support.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./node-gateway--cb6A7Vi.js"),__vite__mapDeps([])),path:"/solutions/technical-references/node-gateway",type:"mdx",filePath:"solutions/technical-references/node-gateway.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./node-gateway--cb6A7Vi.js"),__vite__mapDeps([])),path:"/solutions/technical-references/node-gateway.html",type:"mdx",filePath:"solutions/technical-references/node-gateway.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./overview-DxEtoZKX.js"),__vite__mapDeps([])),path:"/solutions/wallets/overview",type:"mdx",filePath:"solutions/wallets/overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./overview-DxEtoZKX.js"),__vite__mapDeps([])),path:"/solutions/wallets/overview.html",type:"mdx",filePath:"solutions/wallets/overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-connect-wallet-Cl599MBF.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/01-connect-wallet",type:"mdx",filePath:"sdk/typescript/03-guides/01-connect-wallet.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-connect-wallet-Cl599MBF.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/01-connect-wallet.html",type:"mdx",filePath:"sdk/typescript/03-guides/01-connect-wallet.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-auth-address-ckDlTMpv.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/02-auth-address",type:"mdx",filePath:"sdk/typescript/03-guides/02-auth-address.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-auth-address-ckDlTMpv.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/02-auth-address.html",type:"mdx",filePath:"sdk/typescript/03-guides/02-auth-address.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-sign-message-Br_SQVC8.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/03-sign-message",type:"mdx",filePath:"sdk/typescript/03-guides/03-sign-message.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-sign-message-Br_SQVC8.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/03-sign-message.html",type:"mdx",filePath:"sdk/typescript/03-guides/03-sign-message.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-session-keys-DwD4iACN.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/04-session-keys",type:"mdx",filePath:"sdk/typescript/03-guides/04-session-keys.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-session-keys-DwD4iACN.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/04-session-keys.html",type:"mdx",filePath:"sdk/typescript/03-guides/04-session-keys.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-send-transaction-BLPMy39e.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/05-send-transaction",type:"mdx",filePath:"sdk/typescript/03-guides/05-send-transaction.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-send-transaction-BLPMy39e.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/05-send-transaction.html",type:"mdx",filePath:"sdk/typescript/03-guides/05-send-transaction.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-send-erc20-C1S52TMX.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/06-send-erc20",type:"mdx",filePath:"sdk/typescript/03-guides/06-send-erc20.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-send-erc20-C1S52TMX.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/06-send-erc20.html",type:"mdx",filePath:"sdk/typescript/03-guides/06-send-erc20.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-send-erc721-DoTiPEJu.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/07-send-erc721",type:"mdx",filePath:"sdk/typescript/03-guides/07-send-erc721.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-send-erc721-DoTiPEJu.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/07-send-erc721.html",type:"mdx",filePath:"sdk/typescript/03-guides/07-send-erc721.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-send-erc1155-D40DRcgC.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/08-send-erc1155",type:"mdx",filePath:"sdk/typescript/03-guides/08-send-erc1155.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-send-erc1155-D40DRcgC.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/08-send-erc1155.html",type:"mdx",filePath:"sdk/typescript/03-guides/08-send-erc1155.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-BVNHKRSw.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/09-send-batch-transactions",type:"mdx",filePath:"sdk/typescript/03-guides/09-send-batch-transactions.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-BVNHKRSw.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/09-send-batch-transactions.html",type:"mdx",filePath:"sdk/typescript/03-guides/09-send-batch-transactions.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./10-building-backends-DQ9yfDdo.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/10-building-backends",type:"mdx",filePath:"sdk/typescript/03-guides/10-building-backends.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./10-building-backends-DQ9yfDdo.js"),__vite__mapDeps([])),path:"/sdk/typescript/03-guides/10-building-backends.html",type:"mdx",filePath:"sdk/typescript/03-guides/10-building-backends.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-BOVk6_Iv.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/01-overview",type:"mdx",filePath:"sdk/typescript/connectors/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-BOVk6_Iv.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/01-overview.html",type:"mdx",filePath:"sdk/typescript/connectors/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-sequence-kit-BMZSpUXz.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/02-sequence-kit",type:"mdx",filePath:"sdk/typescript/connectors/02-sequence-kit.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-sequence-kit-BMZSpUXz.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/02-sequence-kit.html",type:"mdx",filePath:"sdk/typescript/connectors/02-sequence-kit.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-wagmi-v91jUr-a.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/03-wagmi",type:"mdx",filePath:"sdk/typescript/connectors/03-wagmi.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-wagmi-v91jUr-a.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/03-wagmi.html",type:"mdx",filePath:"sdk/typescript/connectors/03-wagmi.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-rainbow-kit-v4LsgczZ.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/04-rainbow-kit",type:"mdx",filePath:"sdk/typescript/connectors/04-rainbow-kit.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-rainbow-kit-v4LsgczZ.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/04-rainbow-kit.html",type:"mdx",filePath:"sdk/typescript/connectors/04-rainbow-kit.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-web3-onboard-B4-r8qZO.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/05-web3-onboard",type:"mdx",filePath:"sdk/typescript/connectors/05-web3-onboard.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-web3-onboard-B4-r8qZO.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/05-web3-onboard.html",type:"mdx",filePath:"sdk/typescript/connectors/05-web3-onboard.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-web3-react-v6-i-_P8qDI.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/06-web3-react-v6",type:"mdx",filePath:"sdk/typescript/connectors/06-web3-react-v6.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-web3-react-v6-i-_P8qDI.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/06-web3-react-v6.html",type:"mdx",filePath:"sdk/typescript/connectors/06-web3-react-v6.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-web3modal-D_QEo_Cm.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/07-web3modal",type:"mdx",filePath:"sdk/typescript/connectors/07-web3modal.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-web3modal-D_QEo_Cm.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/07-web3modal.html",type:"mdx",filePath:"sdk/typescript/connectors/07-web3modal.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-FAQ-BHeUJunZ.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/08-FAQ",type:"mdx",filePath:"sdk/typescript/connectors/08-FAQ.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-FAQ-BHeUJunZ.js"),__vite__mapDeps([])),path:"/sdk/typescript/connectors/08-FAQ.html",type:"mdx",filePath:"sdk/typescript/connectors/08-FAQ.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-introduction-ORpy4spW.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/01-introduction",type:"mdx",filePath:"sdk/unity/Advanced/01-introduction.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-introduction-ORpy4spW.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/01-introduction.html",type:"mdx",filePath:"sdk/unity/Advanced/01-introduction.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-wallets-BAOFMlWK.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/02-wallets",type:"mdx",filePath:"sdk/unity/Advanced/02-wallets.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-wallets-BAOFMlWK.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/02-wallets.html",type:"mdx",filePath:"sdk/unity/Advanced/02-wallets.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-clients-BfjUnR5d.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/03-clients",type:"mdx",filePath:"sdk/unity/Advanced/03-clients.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-clients-BfjUnR5d.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/03-clients.html",type:"mdx",filePath:"sdk/unity/Advanced/03-clients.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-transfers-5gM1Zbvb.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/04-transfers",type:"mdx",filePath:"sdk/unity/Advanced/04-transfers.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-transfers-5gM1Zbvb.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/04-transfers.html",type:"mdx",filePath:"sdk/unity/Advanced/04-transfers.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-contracts-DVDi4fXD.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/05-contracts",type:"mdx",filePath:"sdk/unity/Advanced/05-contracts.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-contracts-DVDi4fXD.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/05-contracts.html",type:"mdx",filePath:"sdk/unity/Advanced/05-contracts.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-tokens-DONJK441.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/06-tokens",type:"mdx",filePath:"sdk/unity/Advanced/06-tokens.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-tokens-DONJK441.js"),__vite__mapDeps([])),path:"/sdk/unity/Advanced/06-tokens.html",type:"mdx",filePath:"sdk/unity/Advanced/06-tokens.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-deploy-an-item-collection-DjzMitxr.js"),__vite__mapDeps([22,1])),path:"/solutions/collectibles/contracts/01-deploy-an-item-collection",type:"mdx",filePath:"solutions/collectibles/contracts/01-deploy-an-item-collection.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-deploy-an-item-collection-DjzMitxr.js"),__vite__mapDeps([22,1])),path:"/solutions/collectibles/contracts/01-deploy-an-item-collection.html",type:"mdx",filePath:"solutions/collectibles/contracts/01-deploy-an-item-collection.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-deploy-ERC20-currency-CJ-woKNT.js"),__vite__mapDeps([23,1])),path:"/solutions/collectibles/contracts/02-deploy-ERC20-currency",type:"mdx",filePath:"solutions/collectibles/contracts/02-deploy-ERC20-currency.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-deploy-ERC20-currency-CJ-woKNT.js"),__vite__mapDeps([23,1])),path:"/solutions/collectibles/contracts/02-deploy-ERC20-currency.html",type:"mdx",filePath:"solutions/collectibles/contracts/02-deploy-ERC20-currency.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./800-manage-metadata-builder-Ciwcw9Ff.js"),__vite__mapDeps([])),path:"/solutions/collectibles/metadata/800-manage-metadata-builder",type:"mdx",filePath:"solutions/collectibles/metadata/800-manage-metadata-builder.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./800-manage-metadata-builder-Ciwcw9Ff.js"),__vite__mapDeps([])),path:"/solutions/collectibles/metadata/800-manage-metadata-builder.html",type:"mdx",filePath:"solutions/collectibles/metadata/800-manage-metadata-builder.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-CgIU_uUT.js"),__vite__mapDeps([24,1,11])),path:"/solutions/marketplaces/orderbook/01-overview",type:"mdx",filePath:"solutions/marketplaces/orderbook/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-CgIU_uUT.js"),__vite__mapDeps([24,1,11])),path:"/solutions/marketplaces/orderbook/01-overview.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-quickstart-Dm3tzuR_.js"),__vite__mapDeps([])),path:"/solutions/marketplaces/orderbook/02-quickstart",type:"mdx",filePath:"solutions/marketplaces/orderbook/02-quickstart.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-quickstart-Dm3tzuR_.js"),__vite__mapDeps([])),path:"/solutions/marketplaces/orderbook/02-quickstart.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/02-quickstart.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-get-top-orders-BE-_zj92.js"),__vite__mapDeps([25,5,1])),path:"/solutions/marketplaces/orderbook/03-get-top-orders",type:"mdx",filePath:"solutions/marketplaces/orderbook/03-get-top-orders.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-get-top-orders-BE-_zj92.js"),__vite__mapDeps([25,5,1])),path:"/solutions/marketplaces/orderbook/03-get-top-orders.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/03-get-top-orders.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-get-orderbook-Dy7YyvsP.js"),__vite__mapDeps([26,1,5])),path:"/solutions/marketplaces/orderbook/04-get-orderbook",type:"mdx",filePath:"solutions/marketplaces/orderbook/04-get-orderbook.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-get-orderbook-Dy7YyvsP.js"),__vite__mapDeps([26,1,5])),path:"/solutions/marketplaces/orderbook/04-get-orderbook.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/04-get-orderbook.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-get-user-activities-DkfpsBW4.js"),__vite__mapDeps([27,5])),path:"/solutions/marketplaces/orderbook/05-get-user-activities",type:"mdx",filePath:"solutions/marketplaces/orderbook/05-get-user-activities.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-get-user-activities-DkfpsBW4.js"),__vite__mapDeps([27,5])),path:"/solutions/marketplaces/orderbook/05-get-user-activities.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/05-get-user-activities.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-orderbook-transactions-BeUtSFOp.js"),__vite__mapDeps([28,1])),path:"/solutions/marketplaces/orderbook/06-orderbook-transactions",type:"mdx",filePath:"solutions/marketplaces/orderbook/06-orderbook-transactions.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-orderbook-transactions-BeUtSFOp.js"),__vite__mapDeps([28,1])),path:"/solutions/marketplaces/orderbook/06-orderbook-transactions.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/06-orderbook-transactions.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-fiat-on-ramps-CrXvbg7X.js"),__vite__mapDeps([])),path:"/solutions/payments/onramps/01-fiat-on-ramps",type:"mdx",filePath:"solutions/payments/onramps/01-fiat-on-ramps.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-fiat-on-ramps-CrXvbg7X.js"),__vite__mapDeps([])),path:"/solutions/payments/onramps/01-fiat-on-ramps.html",type:"mdx",filePath:"solutions/payments/onramps/01-fiat-on-ramps.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-why-DDLn-B4w.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/01-why",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/01-why.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-why-DDLn-B4w.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/01-why.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/01-why.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-universal-deployer-V3lr9jJW.js"),__vite__mapDeps([29,1])),path:"/solutions/technical-references/wallet-contracts/02-universal-deployer",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/02-universal-deployer.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-universal-deployer-V3lr9jJW.js"),__vite__mapDeps([29,1])),path:"/solutions/technical-references/wallet-contracts/02-universal-deployer.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/02-universal-deployer.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-wallet-factory-BQXRuWg_.js"),__vite__mapDeps([30,1])),path:"/solutions/technical-references/wallet-contracts/03-wallet-factory",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/03-wallet-factory.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-wallet-factory-BQXRuWg_.js"),__vite__mapDeps([30,1])),path:"/solutions/technical-references/wallet-contracts/03-wallet-factory.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/03-wallet-factory.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-wallet-configuration-Bs_jtNnf.js"),__vite__mapDeps([31,5])),path:"/solutions/technical-references/wallet-contracts/04-wallet-configuration",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/04-wallet-configuration.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-wallet-configuration-Bs_jtNnf.js"),__vite__mapDeps([31,5])),path:"/solutions/technical-references/wallet-contracts/04-wallet-configuration.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/04-wallet-configuration.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-modules-and-updates-BZ-acVOs.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/05-modules-and-updates",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-modules-and-updates-BZ-acVOs.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/05-modules-and-updates.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/05-modules-and-updates.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-main-module-upgradeable-CwFDq2xw.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/06-main-module-upgradeable",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/06-main-module-upgradeable.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-main-module-upgradeable-CwFDq2xw.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/06-main-module-upgradeable.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/06-main-module-upgradeable.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-transaction-encoding-NtDrHizW.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/07-transaction-encoding",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/07-transaction-encoding.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-transaction-encoding-NtDrHizW.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/07-transaction-encoding.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/07-transaction-encoding.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-signature-encoding-BKrZASNJ.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/08-signature-encoding",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/08-signature-encoding.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-signature-encoding-BKrZASNJ.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/08-signature-encoding.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/08-signature-encoding.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./09-nested-transaction-batching-DTwnnEId.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/09-nested-transaction-batching",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/09-nested-transaction-batching.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./09-nested-transaction-batching-DTwnnEId.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/09-nested-transaction-batching.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/09-nested-transaction-batching.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./10-guest-module-D-VbStHJ.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/10-guest-module",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/10-guest-module.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./10-guest-module-D-VbStHJ.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/10-guest-module.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/10-guest-module.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./11-wallet-context-Db3u6bux.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/11-wallet-context",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/11-wallet-context.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./11-wallet-context-Db3u6bux.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/11-wallet-context.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/11-wallet-context.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./12-contract-audits-CcNg0PwU.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/12-contract-audits",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/12-contract-audits.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./12-contract-audits-CcNg0PwU.js"),__vite__mapDeps([])),path:"/solutions/technical-references/wallet-contracts/12-contract-audits.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/12-contract-audits.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-Cm_eirZl.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/01-overview",type:"mdx",filePath:"solutions/wallets/embedded-wallet/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-Cm_eirZl.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/01-overview.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-quickstart-4ykaiCFW.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/02-quickstart",type:"mdx",filePath:"solutions/wallets/embedded-wallet/02-quickstart.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-quickstart-4ykaiCFW.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/02-quickstart.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/02-quickstart.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-manage-sessions-BJA3--RF.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/03-manage-sessions",type:"mdx",filePath:"solutions/wallets/embedded-wallet/03-manage-sessions.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-manage-sessions-BJA3--RF.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/03-manage-sessions.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/03-manage-sessions.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-use-wallets-Bbt6hEyu.js"),__vite__mapDeps([32,1])),path:"/solutions/wallets/embedded-wallet/04-use-wallets",type:"mdx",filePath:"solutions/wallets/embedded-wallet/04-use-wallets.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-use-wallets-Bbt6hEyu.js"),__vite__mapDeps([32,1])),path:"/solutions/wallets/embedded-wallet/04-use-wallets.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/04-use-wallets.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-validation-D6nAm2G3.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/05-validation",type:"mdx",filePath:"solutions/wallets/embedded-wallet/05-validation.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-validation-D6nAm2G3.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/05-validation.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/05-validation.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-transaction-receipts-CFVZYVqh.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/06-transaction-receipts",type:"mdx",filePath:"solutions/wallets/embedded-wallet/06-transaction-receipts.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-transaction-receipts-CFVZYVqh.js"),__vite__mapDeps([])),path:"/solutions/wallets/embedded-wallet/06-transaction-receipts.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/06-transaction-receipts.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-YB_pmFKQ.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/01-overview",type:"mdx",filePath:"solutions/wallets/universal-wallet/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-overview-YB_pmFKQ.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/01-overview.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/01-overview.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-quickstart-jegcKRXn.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/02-quickstart",type:"mdx",filePath:"solutions/wallets/universal-wallet/02-quickstart.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-quickstart-jegcKRXn.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/02-quickstart.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/02-quickstart.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-sequence-kit-Dm2NVQTH.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/04-sequence-kit",type:"mdx",filePath:"solutions/wallets/universal-wallet/04-sequence-kit.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-sequence-kit-Dm2NVQTH.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/04-sequence-kit.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/04-sequence-kit.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-platforms-BswQsHZ_.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/05-platforms",type:"mdx",filePath:"solutions/wallets/universal-wallet/05-platforms.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-platforms-BswQsHZ_.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/05-platforms.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/05-platforms.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-fiat-on-ramps-l3lSSIK6.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/06-fiat-on-ramps",type:"mdx",filePath:"solutions/wallets/universal-wallet/06-fiat-on-ramps.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-fiat-on-ramps-l3lSSIK6.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/06-fiat-on-ramps.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/06-fiat-on-ramps.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-key-management-DHKyIl2b.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/07-key-management",type:"mdx",filePath:"solutions/wallets/universal-wallet/07-key-management.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-key-management-DHKyIl2b.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/07-key-management.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/07-key-management.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-connect-wallet-Dt-ODA_X.js"),__vite__mapDeps([33,1])),path:"/solutions/wallets/universal-wallet/examples/01-connect-wallet",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/01-connect-wallet.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./01-connect-wallet-Dt-ODA_X.js"),__vite__mapDeps([33,1])),path:"/solutions/wallets/universal-wallet/examples/01-connect-wallet.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/01-connect-wallet.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-auth-address-CyNhiG2u.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/02-auth-address",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/02-auth-address.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./02-auth-address-CyNhiG2u.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/02-auth-address.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/02-auth-address.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-sign-message-C06zBfE6.js"),__vite__mapDeps([34,5,1])),path:"/solutions/wallets/universal-wallet/examples/03-sign-message",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/03-sign-message.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./03-sign-message-C06zBfE6.js"),__vite__mapDeps([34,5,1])),path:"/solutions/wallets/universal-wallet/examples/03-sign-message.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/03-sign-message.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-session-keys-BH_jcGg9.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/04-session-keys",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/04-session-keys.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./04-session-keys-BH_jcGg9.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/04-session-keys.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/04-session-keys.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-send-transaction-B-8IwTpV.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/05-send-transaction",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/05-send-transaction.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./05-send-transaction-B-8IwTpV.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/05-send-transaction.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/05-send-transaction.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-send-erc20-BNf9h1bS.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/06-send-erc20",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/06-send-erc20.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./06-send-erc20-BNf9h1bS.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/06-send-erc20.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/06-send-erc20.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-send-erc721-CsiV7Skt.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/07-send-erc721",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/07-send-erc721.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./07-send-erc721-CsiV7Skt.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/07-send-erc721.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/07-send-erc721.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-send-erc1155-CEo8sbIR.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/08-send-erc1155",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/08-send-erc1155.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./08-send-erc1155-CEo8sbIR.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/08-send-erc1155.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/08-send-erc1155.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-HYpwCDES.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/09-send-batch-transactions.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-HYpwCDES.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/09-send-batch-transactions.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./10-building-backends-D00hi_S2.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/10-building-backends",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/10-building-backends.mdx",lastUpdatedAt:1712180529e3},{lazy:()=>b(()=>import("./10-building-backends-D00hi_S2.js"),__vite__mapDeps([])),path:"/solutions/wallets/universal-wallet/examples/10-building-backends.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/10-building-backends.mdx",lastUpdatedAt:1712180529e3}];var zs={horizontalPadding:"var(--vocs-content_horizontalPadding)",verticalPadding:"var(--vocs-content_verticalPadding)",width:"var(--vocs-content_width)"},Gw={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'},qw={default:"var(--vocs-fontFamily_default)",mono:"var(--vocs-fontFamily_mono)"},Xp={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)"},Us={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 Wv(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 Kv(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],r=e.constructor();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]=Kv(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 Gt(e,t){var n={};if(typeof t=="object"){var r=e;Kv(t,(l,s)=>{if(l!=null){var u=Yw(r,s);n[Jp(u)]=String(l)}})}else{var o=e;for(var i in o){var a=o[i];a!=null&&(n[Jp(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 Qw="var(--vocs_ExternalLink_iconUrl)",Zw="vocs_ExternalLink";const Xw=p.forwardRef(({className:e,children:t,hideExternalIcon:n,href:r,...o},i)=>{const{basePath:a}=ot(),l=a;return x.jsx("a",{ref:i,className:D(e,n||typeof t!="string"?void 0:Zw),href:r,target:"_blank",rel:"noopener noreferrer",style:Gt({[Qw]:`url(${l}/.vocs/icons/arrow-diagonal.svg)`}),...o,children:t})});var eh="vocs_Link_accent_underlined",th="vocs_Link",nh="vocs_Link_styleless",uu=new Map,ga=new WeakMap,rh=0,Jw=void 0;function e5(e){return e?(ga.has(e)||(rh+=1,ga.set(e,rh.toString())),ga.get(e)):"0"}function t5(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?e5(e.root):e[t]}`).toString()}function n5(e){const t=t5(e);let n=uu.get(t);if(!n){const r=new Map;let o;const i=new IntersectionObserver(a=>{a.forEach(l=>{var s;const u=l.isIntersecting&&o.some(d=>l.intersectionRatio>=d);e.trackVisibility&&typeof l.isVisible>"u"&&(l.isVisible=u),(s=r.get(l.target))==null||s.forEach(d=>{d(u,l)})})},e);o=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:r},uu.set(t,n)}return n}function r5(e,t,n={},r=Jw){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}=n5(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(),uu.delete(o))}}function Gv({threshold:e,delay:t,trackVisibility:n,rootMargin:r,root:o,triggerOnce:i,skip:a,initialInView:l,fallbackInView:s,onChange:u}={}){var d;const[c,f]=p.useState(null),h=p.useRef(),[y,g]=p.useState({inView:!!l,entry:void 0});h.current=u,p.useEffect(()=>{if(a||!c)return;let _;return _=r5(c,(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,c,o,r,i,a,n,s,t]);const w=(d=y.entry)==null?void 0:d.target,m=p.useRef();!c&&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 o5(...e){return t=>{i5(t,...e)}}function i5(e,...t){t.forEach(n=>{typeof n=="function"?n(e):n!=null&&(n.current=e)})}const Zn=p.forwardRef((e,t)=>{const n=()=>{var i;return(i=Bd.find(a=>a.path===e.to))==null?void 0:i.lazy()},{ref:r,inView:o}=Gv();return p.useEffect(()=>{o&&n()},[o,n]),x.jsx(Fv,{ref:o5(t,r),...e})}),rn=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(Xw,{...e,ref:t,className:D(e.className,th,r==="accent underlined"&&eh,r==="styleless"&&nh),hideExternalIcon:e.hideExternalIcon});const[i,a]=(n||"").split("#"),l=`${i||o}${a?`#${a}`:""}`;return x.jsx(Zn,{...e,ref:t,className:D(e.className,th,r==="accent underlined"&&eh,r==="styleless"&&nh),to:l})});var a5="vocs_NotFound_divider",l5="vocs_NotFound",s5="vocs_H1",qv="vocs_Heading",Yv="vocs_Heading_slugTarget";function Ro({level:e,...t}){const n=`h${e}`;return x.jsxs(n,{...t,id:void 0,className:D(t.className,qv),children:[x.jsx("div",{id:t.id,className:Yv}),t.children]})}function Qv(e){return x.jsx(Ro,{...e,className:D(e.className,s5),level:1})}var c5="vocs_Paragraph";function Zv(e){return x.jsx("p",{...e,className:D(e.className,c5)})}function u5(){return x.jsxs("div",{className:l5,children:[x.jsx(Qv,{children:"Page Not Found"}),x.jsx("div",{style:{height:Us[24]}}),x.jsx("hr",{className:a5}),x.jsx("div",{style:{height:Us[24]}}),x.jsx(Zv,{children:"The page you were looking for could not be found."}),x.jsx("div",{style:{height:Us[8]}}),x.jsx(rn,{href:"/",children:"Go to Home Page"})]})}var d5="var(--vocs_Banner_bannerBackgroundColor)",f5="var(--vocs_Banner_bannerHeight)",p5="var(--vocs_Banner_bannerTextColor)",h5="vocs_Banner_closeButton",m5="vocs_Banner_content",v5="vocs_Banner_inner",g5="vocs_Banner";const y5=Object.getPrototypeOf(x5).constructor;async function x5(e,t){return new y5(String(e))(t)}function _5(e,t){return new Function(String(e))(t)}function Rr(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 w5=["color"],E5=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,w5);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"}))}),k5=["color"],b5=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,k5);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"}))}),C5=["color"],P5=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,C5);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"}))}),A5=["color"],S5=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,A5);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"}))}),T5=["color"],R5=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,T5);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"}))}),$5=["color"],Hd=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,$5);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"}))}),O5=["color"],I5=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,O5);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 du(e,t){if(typeof e!="object"||e===null)return e;if(Array.isArray(e))return e.map((r,o)=>du(r,o));const n=e.props.children?{...e.props,children:du(e.props.children)}:e.props;return Q.createElement(e.type,{...n,key:t})}function L5({hide:e}){const{banner:t}=ot(),n=p.useMemo(()=>{const r=(t==null?void 0:t.content)??"";if(!r)return null;if(typeof r!="string")return()=>du(r);const{default:o}=_5(r,{...Yy,Fragment:p.Fragment});return o},[t]);return n?x.jsx("div",{className:D(g5),style:Gt({[d5]:t==null?void 0:t.backgroundColor,[p5]:t==null?void 0:t.textColor}),children:x.jsxs("div",{className:D(v5),children:[x.jsx("div",{className:D(m5),children:x.jsx(n,{})}),(t==null?void 0:t.dismissable)!=="false"&&x.jsx("button",{className:D(h5),onClick:e,type:"button",children:x.jsx(P5,{width:14,height:14})})]})}):null}var D5="vocs_Content";function Xv({children:e,className:t}){return x.jsx("article",{className:D(t,D5),children:e})}function Jv({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&&Jv({items:o.items,pathname:t}).length>0)&&r.push(o.id);return r}function Hi({items:e,pathname:t}){return p.useMemo(()=>Jv({items:e,pathname:t}),[e,t])}function $r(){const e=p.useContext(e1);if(!e)throw new Error("`usePageData` must be used within `PageDataContext.Provider`.");return e}const e1=p.createContext(void 0);function Wl(){const{pathname:e}=Re(),t=ot(),{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 Or(){const e=Wl(),{frontmatter:t}=$r(),{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 N5(){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 M5="vocs_utils_visibleDark",j5="vocs_utils_visibleLight",t1="vocs_utils_visuallyHidden";function q(){return q=Object.assign?Object.assign.bind():function(e){for(var t=1;te.forEach(n=>F5(n,t))}function Ue(...e){return p.useCallback(n1(...e),e)}function kn(e,t=[]){let n=[];function r(i,a){const l=p.createContext(a),s=n.length;n=[...n,a];function u(c){const{scope:f,children:h,...y}=c,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(c,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(`\`${c}\` must be used within \`${i}\``)}return u.displayName=i+"Provider",[u,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,z5(o,...t)]}function z5(...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:u})=>{const c=s(i)[`__scope${u}`];return{...l,...c}},{});return p.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}const yn=globalThis!=null&&globalThis.document?p.useLayoutEffect:()=>{},U5=Al.useId||(()=>{});let V5=0;function on(e){const[t,n]=p.useState(U5());return yn(()=>{e||n(r=>r??String(V5++))},[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 ar({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,o]=B5({defaultProp:t,onChange:n}),i=e!==void 0,a=i?e:r,l=at(n),s=p.useCallback(u=>{if(i){const c=typeof u=="function"?u(e):u;c!==e&&l(c)}else o(u)},[i,e,o,l]);return[a,s]}function B5({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 ko=p.forwardRef((e,t)=>{const{children:n,...r}=e,o=p.Children.toArray(n),i=o.find(W5);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(fu,q({},r,{ref:t}),p.isValidElement(a)?p.cloneElement(a,void 0,l):null)}return p.createElement(fu,q({},r,{ref:t}),n)});ko.displayName="Slot";const fu=p.forwardRef((e,t)=>{const{children:n,...r}=e;return p.isValidElement(n)?p.cloneElement(n,{...K5(r,n.props),ref:t?n1(t,n.ref):n.ref}):p.Children.count(n)>1?p.Children.only(null):null});fu.displayName="SlotClone";const H5=({children:e})=>p.createElement(p.Fragment,null,e);function W5(e){return p.isValidElement(e)&&e.type===H5}function K5(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 G5=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],de=G5.reduce((e,t)=>{const n=p.forwardRef((r,o)=>{const{asChild:i,...a}=r,l=i?ko: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 pu(e,t){e&&So.flushSync(()=>e.dispatchEvent(t))}function q5(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 hu="dismissableLayer.update",Y5="dismissableLayer.pointerDownOutside",Q5="dismissableLayer.focusOutside";let oh;const Z5=p.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Wd=p.forwardRef((e,t)=>{var n;const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:o,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:l,onDismiss:s,...u}=e,d=p.useContext(Z5),[c,f]=p.useState(null),h=(n=c==null?void 0:c.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),_=c?w.indexOf(c):-1,E=d.layersWithOutsidePointerEventsDisabled.size>0,C=_>=v,k=X5(A=>{const T=A.target,O=[...d.branches].some(j=>j.contains(T));!C||O||(i==null||i(A),l==null||l(A),A.defaultPrevented||s==null||s())},h),P=J5(A=>{const T=A.target;[...d.branches].some(j=>j.contains(T))||(a==null||a(A),l==null||l(A),A.defaultPrevented||s==null||s())},h);return q5(A=>{_===d.layers.size-1&&(o==null||o(A),!A.defaultPrevented&&s&&(A.preventDefault(),s()))},h),p.useEffect(()=>{if(c)return r&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(oh=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(c)),d.layers.add(c),ih(),()=>{r&&d.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=oh)}},[c,h,r,d]),p.useEffect(()=>()=>{c&&(d.layers.delete(c),d.layersWithOutsidePointerEventsDisabled.delete(c),ih())},[c,d]),p.useEffect(()=>{const A=()=>y({});return document.addEventListener(hu,A),()=>document.removeEventListener(hu,A)},[]),p.createElement(de.div,q({},u,{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 X5(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 u=function(){r1(Y5,n,s,{discrete:!0})};const s={originalEvent:l};l.pointerType==="touch"?(t.removeEventListener("click",o.current),o.current=u,t.addEventListener("click",o.current,{once:!0})):u()}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 J5(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&&r1(Q5,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 ih(){const e=new CustomEvent(hu);document.dispatchEvent(e)}function r1(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?pu(o,i):o.dispatchEvent(i)}const Vs="focusScope.autoFocusOnMount",Bs="focusScope.autoFocusOnUnmount",ah={bubbles:!1,cancelable:!0},o1=p.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:i,...a}=e,[l,s]=p.useState(null),u=at(o),d=at(i),c=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)?c.current=E:Ln(c.current,{select:!0})},w=function(_){if(h.paused||!l)return;const E=_.relatedTarget;E!==null&&(l.contains(E)||Ln(c.current,{select:!0}))},m=function(_){if(document.activeElement===document.body)for(const C of _)C.removedNodes.length>0&&Ln(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){sh.add(h);const g=document.activeElement;if(!l.contains(g)){const m=new CustomEvent(Vs,ah);l.addEventListener(Vs,u),l.dispatchEvent(m),m.defaultPrevented||(eE(iE(i1(l)),{select:!0}),document.activeElement===g&&Ln(l))}return()=>{l.removeEventListener(Vs,u),setTimeout(()=>{const m=new CustomEvent(Bs,ah);l.addEventListener(Bs,d),l.dispatchEvent(m),m.defaultPrevented||Ln(g??document.body,{select:!0}),l.removeEventListener(Bs,d),sh.remove(h)},0)}}},[l,u,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]=tE(v);_&&E?!g.shiftKey&&m===E?(g.preventDefault(),n&&Ln(_,{select:!0})):g.shiftKey&&m===_&&(g.preventDefault(),n&&Ln(E,{select:!0})):m===v&&g.preventDefault()}},[n,r,h.paused]);return p.createElement(de.div,q({tabIndex:-1},a,{ref:f,onKeyDown:y}))});function eE(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(Ln(r,{select:t}),document.activeElement!==n)return}function tE(e){const t=i1(e),n=lh(t,e),r=lh(t.reverse(),e);return[n,r]}function i1(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 lh(e,t){for(const n of e)if(!nE(n,{upTo:t}))return n}function nE(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 rE(e){return e instanceof HTMLInputElement&&"select"in e}function Ln(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&rE(e)&&t&&e.select()}}const sh=oE();function oE(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=ch(e,t),e.unshift(t)},remove(t){var n;e=ch(e,t),(n=e[0])===null||n===void 0||n.resume()}}}function ch(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function iE(e){return e.filter(t=>t.tagName!=="A")}const a1=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?wv.createPortal(p.createElement(de.div,q({},o,{ref:t})),r):null});function aE(e,t){return p.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const bn=e=>{const{present:t,children:n}=e,r=lE(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};bn.displayName="Presence";function lE(e){const[t,n]=p.useState(),r=p.useRef({}),o=p.useRef(e),i=p.useRef("none"),a=e?"mounted":"unmounted",[l,s]=aE(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return p.useEffect(()=>{const u=ya(r.current);i.current=l==="mounted"?u:"none"},[l]),yn(()=>{const u=r.current,d=o.current;if(d!==e){const f=i.current,h=ya(u);e?s("MOUNT"):h==="none"||(u==null?void 0:u.display)==="none"?s("UNMOUNT"):s(d&&f!==h?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,s]),yn(()=>{if(t){const u=c=>{const h=ya(r.current).includes(c.animationName);c.target===t&&h&&So.flushSync(()=>s("ANIMATION_END"))},d=c=>{c.target===t&&(i.current=ya(r.current))};return t.addEventListener("animationstart",d),t.addEventListener("animationcancel",u),t.addEventListener("animationend",u),()=>{t.removeEventListener("animationstart",d),t.removeEventListener("animationcancel",u),t.removeEventListener("animationend",u)}}else s("ANIMATION_END")},[t,s]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:p.useCallback(u=>{u&&(r.current=getComputedStyle(u)),n(u)},[])}}function ya(e){return(e==null?void 0:e.animationName)||"none"}let Hs=0;function l1(){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:uh()),document.body.insertAdjacentElement("beforeend",(t=n[1])!==null&&t!==void 0?t:uh()),Hs++,()=>{Hs===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(r=>r.remove()),Hs--}},[])}function uh(){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 en=function(){return en=Object.assign||function(t){for(var n,r=1,o=arguments.length;r"u")return kE;var t=bE(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])}},PE=d1(),gl="data-scroll-locked",AE=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(cE,` { overflow: hidden `).concat(r,`; padding-right: `).concat(l,"px ").concat(r,`; } @@ -100,24 +100,24 @@ Error generating stack: `+i.message+` } body[`).concat(gl,`] { - `).concat(u7,": ").concat(l,`px; + `).concat(uE,": ").concat(l,`px; } -`)},S7=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r,i=p.useMemo(function(){return C7(o)},[o]);return p.useEffect(function(){return document.body.setAttribute(gl,""),function(){document.body.removeAttribute(gl)}},[]),p.createElement(P7,{styles:A7(i,!t,o,n?"":"!important")})},mu=!1;if(typeof window<"u")try{var xa=Object.defineProperty({},"passive",{get:function(){return mu=!0,!0}});window.addEventListener("test",xa,xa),window.removeEventListener("test",xa,xa)}catch{mu=!1}var Fr=mu?{passive:!1}:!1,T7=function(e){return e.tagName==="TEXTAREA"},f1=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!T7(e)&&n[t]==="visible")},R7=function(e){return f1(e,"overflowY")},$7=function(e){return f1(e,"overflowX")},fh=function(e,t){var n=t;do{typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&(n=n.host);var r=p1(e,n);if(r){var o=h1(e,n),i=o[1],a=o[2];if(i>a)return!0}n=n.parentNode}while(n&&n!==document.body);return!1},O7=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},I7=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},p1=function(e,t){return e==="v"?R7(t):$7(t)},h1=function(e,t){return e==="v"?O7(t):I7(t)},L7=function(e,t){return e==="h"&&t==="rtl"?-1:1},D7=function(e,t,n,r,o){var i=L7(e,window.getComputedStyle(t).direction),a=i*r,l=n.target,s=t.contains(l),u=!1,d=a>0,c=0,f=0;do{var h=h1(e,l),y=h[0],g=h[1],w=h[2],m=g-w-i*y;(y||m)&&p1(e,l)&&(c+=m,f+=y),l=l.parentNode}while(!s&&l!==document.body||s&&(t.contains(l)||t===l));return(d&&(o&&c===0||!o&&a>c)||!d&&(o&&f===0||!o&&-a>f))&&(u=!0),u},_a=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},ph=function(e){return[e.deltaX,e.deltaY]},hh=function(e){return e&&"current"in e?e.current:e},N7=function(e,t){return e[0]===t[0]&&e[1]===t[1]},M7=function(e){return` +`)},SE=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r,i=p.useMemo(function(){return CE(o)},[o]);return p.useEffect(function(){return document.body.setAttribute(gl,""),function(){document.body.removeAttribute(gl)}},[]),p.createElement(PE,{styles:AE(i,!t,o,n?"":"!important")})},mu=!1;if(typeof window<"u")try{var xa=Object.defineProperty({},"passive",{get:function(){return mu=!0,!0}});window.addEventListener("test",xa,xa),window.removeEventListener("test",xa,xa)}catch{mu=!1}var Fr=mu?{passive:!1}:!1,TE=function(e){return e.tagName==="TEXTAREA"},f1=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!TE(e)&&n[t]==="visible")},RE=function(e){return f1(e,"overflowY")},$E=function(e){return f1(e,"overflowX")},fh=function(e,t){var n=t;do{typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&(n=n.host);var r=p1(e,n);if(r){var o=h1(e,n),i=o[1],a=o[2];if(i>a)return!0}n=n.parentNode}while(n&&n!==document.body);return!1},OE=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},IE=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},p1=function(e,t){return e==="v"?RE(t):$E(t)},h1=function(e,t){return e==="v"?OE(t):IE(t)},LE=function(e,t){return e==="h"&&t==="rtl"?-1:1},DE=function(e,t,n,r,o){var i=LE(e,window.getComputedStyle(t).direction),a=i*r,l=n.target,s=t.contains(l),u=!1,d=a>0,c=0,f=0;do{var h=h1(e,l),y=h[0],g=h[1],w=h[2],m=g-w-i*y;(y||m)&&p1(e,l)&&(c+=m,f+=y),l=l.parentNode}while(!s&&l!==document.body||s&&(t.contains(l)||t===l));return(d&&(o&&c===0||!o&&a>c)||!d&&(o&&f===0||!o&&-a>f))&&(u=!0),u},_a=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},ph=function(e){return[e.deltaX,e.deltaY]},hh=function(e){return e&&"current"in e?e.current:e},NE=function(e,t){return e[0]===t[0]&&e[1]===t[1]},ME=function(e){return` .block-interactivity-`.concat(e,` {pointer-events: none;} .allow-interactivity-`).concat(e,` {pointer-events: all;} -`)},j7=0,zr=[];function F7(e){var t=p.useRef([]),n=p.useRef([0,0]),r=p.useRef(),o=p.useState(j7++)[0],i=p.useState(function(){return d1()})[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=s7([e.lockRef.current],(e.shards||[]).map(hh),!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=_a(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=fh(P,k);if(!A)return!0;if(A?C=P:(C=P==="v"?"h":"v",A=fh(P,k)),!A)return!1;if(!r.current&&"changedTouches"in g&&(_||E)&&(r.current=C),!C)return!0;var T=r.current||C;return D7(T,w,g,T==="h"?_:E,!0)},[]),s=p.useCallback(function(g){var w=g;if(!(!zr.length||zr[zr.length-1]!==i)){var m="deltaY"in w?ph(w):_a(w),v=t.current.filter(function(C){return C.name===w.type&&C.target===w.target&&N7(C.delta,m)})[0];if(v&&v.should){w.cancelable&&w.preventDefault();return}if(!v){var _=(a.current.shards||[]).map(hh).filter(Boolean).filter(function(C){return C.contains(w.target)}),E=_.length>0?l(w,_[0]):!a.current.noIsolation;E&&w.cancelable&&w.preventDefault()}}},[]),u=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=_a(g),r.current=void 0},[]),c=p.useCallback(function(g){u(g.type,ph(g),g.target,l(g,e.lockRef.current))},[]),f=p.useCallback(function(g){u(g.type,_a(g),g.target,l(g,e.lockRef.current))},[]);p.useEffect(function(){return zr.push(i),e.setCallbacks({onScrollCapture:c,onWheelCapture:c,onTouchMoveCapture:f}),document.addEventListener("wheel",s,Fr),document.addEventListener("touchmove",s,Fr),document.addEventListener("touchstart",d,Fr),function(){zr=zr.filter(function(g){return g!==i}),document.removeEventListener("wheel",s,Fr),document.removeEventListener("touchmove",s,Fr),document.removeEventListener("touchstart",d,Fr)}},[]);var h=e.removeScrollBar,y=e.inert;return p.createElement(p.Fragment,null,y?p.createElement(i,{styles:M7(o)}):null,h?p.createElement(S7,{gapMode:"margin"}):null)}const z7=v7(u1,F7);var m1=p.forwardRef(function(e,t){return p.createElement(Kl,en({},e,{ref:t,sideCar:z7}))});m1.classNames=Kl.classNames;const v1=m1;var U7=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Ur=new WeakMap,wa=new WeakMap,Ea={},qs=0,g1=function(e){return e&&(e.host||g1(e.parentNode))},V7=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=g1(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})},B7=function(e,t,n,r){var o=V7(t,Array.isArray(e)?e:[e]);Ea[n]||(Ea[n]=new WeakMap);var i=Ea[n],a=[],l=new Set,s=new Set(o),u=function(c){!c||l.has(c)||(l.add(c),u(c.parentNode))};o.forEach(u);var d=function(c){!c||s.has(c)||Array.prototype.forEach.call(c.children,function(f){if(l.has(f))d(f);else{var h=f.getAttribute(r),y=h!==null&&h!=="false",g=(Ur.get(f)||0)+1,w=(i.get(f)||0)+1;Ur.set(f,g),i.set(f,w),a.push(f),g===1&&y&&wa.set(f,!0),w===1&&f.setAttribute(n,"true"),y||f.setAttribute(r,"true")}})};return d(t),l.clear(),qs++,function(){a.forEach(function(c){var f=Ur.get(c)-1,h=i.get(c)-1;Ur.set(c,f),i.set(c,h),f||(wa.has(c)||c.removeAttribute(r),wa.delete(c)),h||c.removeAttribute(n)}),qs--,qs||(Ur=new WeakMap,Ur=new WeakMap,wa=new WeakMap,Ea={})}},y1=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||U7(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),B7(r,o,n,"aria-hidden")):function(){return null}};const x1="Dialog",[_1,xA]=kn(x1),[H7,Cn]=_1(x1),W7=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:a=!0}=e,l=p.useRef(null),s=p.useRef(null),[u=!1,d]=ar({prop:r,defaultProp:o,onChange:i});return p.createElement(H7,{scope:t,triggerRef:l,contentRef:s,contentId:on(),titleId:on(),descriptionId:on(),open:u,onOpenChange:d,onOpenToggle:p.useCallback(()=>d(c=>!c),[d]),modal:a},n)},K7="DialogTrigger",G7=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Cn(K7,n),i=Ue(t,o.triggerRef);return p.createElement(de.button,q({type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Kd(o.open)},r,{ref:i,onClick:le(e.onClick,o.onOpenToggle)}))}),w1="DialogPortal",[q7,E1]=_1(w1,{forceMount:void 0}),Y7=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,i=Cn(w1,t);return p.createElement(q7,{scope:t,forceMount:n},p.Children.map(r,a=>p.createElement(bn,{present:n||i.open},p.createElement(a1,{asChild:!0,container:o},a))))},vu="DialogOverlay",Q7=p.forwardRef((e,t)=>{const n=E1(vu,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=Cn(vu,e.__scopeDialog);return i.modal?p.createElement(bn,{present:r||i.open},p.createElement(Z7,q({},o,{ref:t}))):null}),Z7=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Cn(vu,n);return p.createElement(v1,{as:ko,allowPinchZoom:!0,shards:[o.contentRef]},p.createElement(de.div,q({"data-state":Kd(o.open)},r,{ref:t,style:{pointerEvents:"auto",...r.style}})))}),Oi="DialogContent",X7=p.forwardRef((e,t)=>{const n=E1(Oi,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=Cn(Oi,e.__scopeDialog);return p.createElement(bn,{present:r||i.open},i.modal?p.createElement(J7,q({},o,{ref:t})):p.createElement(e4,q({},o,{ref:t})))}),J7=p.forwardRef((e,t)=>{const n=Cn(Oi,e.__scopeDialog),r=p.useRef(null),o=Ue(t,n.contentRef,r);return p.useEffect(()=>{const i=r.current;if(i)return y1(i)},[]),p.createElement(k1,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())}))}),e4=p.forwardRef((e,t)=>{const n=Cn(Oi,e.__scopeDialog),r=p.useRef(!1),o=p.useRef(!1);return p.createElement(k1,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()}}))}),k1=p.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,...a}=e,l=Cn(Oi,n),s=p.useRef(null),u=Ue(t,s);return l1(),p.createElement(p.Fragment,null,p.createElement(o1,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},p.createElement(Wd,q({role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":Kd(l.open)},a,{ref:u,onDismiss:()=>l.onOpenChange(!1)}))),!1)}),t4="DialogTitle",n4=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Cn(t4,n);return p.createElement(de.h2,q({id:o.titleId},r,{ref:t}))});function Kd(e){return e?"open":"closed"}const b1=W7,C1=G7,r4=Y7,o4=Q7,i4=X7,a4=n4;var he=function(){return he=Object.assign||function(t){for(var n,r=1,o=arguments.length;r0&&i[i.length-1])&&(u[0]===6||u[0]===2)){n=0;continue}if(u[0]===3&&(!i||u[1]>i[0]&&u[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 c4="ENTRIES",P1="KEYS",A1="VALUES",Qe="",Ys=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=Vr(this._path),n=t.node,r=t.keys;if(Vr(r)===Qe)return{done:!1,value:this.result()};var o=n.get(Vr(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=Vr(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 Vr(n)}).filter(function(t){return t!==Qe}).join("")},e.prototype.value=function(){return Vr(this._path).node.get(Qe)},e.prototype.result=function(){switch(this._type){case A1:return this.value();case P1:return this.key();default:return[this.key(),this.value()]}},e.prototype[Symbol.iterator]=function(){return this},e}(),Vr=function(e){return e[e.length-1]},u4=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}S1(e.get(h),t,n,r,o,g,a,l+h)}}}catch(F){s={error:F}}finally{try{f&&!f.done&&(u=c.return)&&u.call(c)}finally{if(s)throw s.error}}},Qs=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(yl(this._tree,t.slice(this._prefix.length)),2),i=o[0],a=o[1];if(i===void 0){var l=Ne(Gd(a),2),s=l[0],u=l[1];try{for(var d=re(s.keys()),c=d.next();!c.done;c=d.next()){var f=c.value;if(f!==Qe&&f.startsWith(u)){var h=new Map;return h.set(f.slice(u.length),s.get(f)),new e(h,t)}}}catch(y){n={error:y}}finally{try{c&&!c.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,d4(this._tree,t)},e.prototype.entries=function(){return new Ys(this,c4)},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(u){n={error:u}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},e.prototype.fuzzyGet=function(t,n){return u4(this._tree,t,n)},e.prototype.get=function(t){var n=gu(this._tree,t);return n!==void 0?n.get(Qe):void 0},e.prototype.has=function(t){var n=gu(this._tree,t);return n!==void 0&&n.has(Qe)},e.prototype.keys=function(){return new Ys(this,P1)},e.prototype.set=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Zs(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=Zs(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=Zs(this._tree,t),o=r.get(Qe);return o===void 0&&r.set(Qe,o=n()),o},e.prototype.values=function(){return new Ys(this,A1)},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],u=l[1];o.set(s,u)}}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}(),yl=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]),yl(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]),yl(void 0,"",n)},gu=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 gu(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}}},Zs=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 Qs,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=xu,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 l4(this,void 0,void 0,function(){var r,o,i,a,l,s,u,d,c,f,h,y,g,w,m,v,_,E,C,k,P,A,T,O,j;return s4(this,function(N){switch(N.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(n))return[3,10];o=t.batchSize||yu.batchSize,i=t.batchWait||yu.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];u=Ne(s.value,2),d=u[0],c=u[1];try{for(f=(A=void 0,re(c)),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?c.delete(g):w.delete(E))}catch(F){O={error:F}}finally{try{v&&!v.done&&(j=m.return)&&j.call(m)}finally{if(O)throw O.error}}}}catch(F){A={error:F}}finally{try{h&&!h.done&&(T=f.return)&&T.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(F){return setTimeout(F,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||ec.minDirtCount,r=r||ec.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 u=Ne(s.value,2),d=u[0],c=u[1],f=c.score,h=c.terms,y=c.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(gh),a},e.prototype.autoSuggest=function(t,n){var r,o,i,a;n===void 0&&(n={}),n=he(he({},this._options.autoSuggestOptions),n);var l=new Map;try{for(var s=re(this.search(t,n)),u=s.next();!u.done;u=s.next()){var d=u.value,c=d.score,f=d.terms,h=f.join(" "),y=l.get(h);y!=null?(y.score+=c,y.count+=1):l.set(h,{score:c,terms:f,count:1})}}catch(C){r={error:C}}finally{try{u&&!u.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],c=_.score,f=_.terms,E=_.count;g.push({suggestion:y,terms:f,score:c/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(gh),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(Js.hasOwnProperty(t))return Xs(Js,t);throw new Error('MiniSearch: unknown option "'.concat(t,'"'))},e.loadJS=function(t,n){var r,o,i,a,l,s,u=t.index,d=t.documentCount,c=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=c,_._documentIds=ka(f),_._idToShortId=new Map,_._fieldIds=h,_._fieldLength=ka(y),_._avgFieldLength=g,_._storedFields=ka(w),_._dirtCount=m||0,_._index=new Qs;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(z){r={error:z}}finally{try{C&&!C.done&&(o=E.return)&&o.call(E)}finally{if(r)throw r.error}}try{for(var T=re(u),O=T.next();!O.done;O=T.next()){var j=Ne(O.value,2),N=j[0],F=j[1],$=new Map;try{for(var U=(l=void 0,re(Object.keys(F))),W=U.next();!W.done;W=U.next()){var V=W.value,L=F[V];v===1&&(L=L.ds),$.set(parseInt(V,10),ka(L))}}catch(z){l={error:z}}finally{try{W&&!W.done&&(s=U.return)&&s.call(U)}finally{if(l)throw l.error}}_._index.set(N,$)}}catch(z){i={error:z}}finally{try{O&&!O.done&&(a=T.return)&&a.call(T)}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=he(he(he({},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,u=a.searchOptions,d=he(he({tokenize:l,processTerm:s},u),n),c=d.tokenize,f=d.processTerm,h=c(t).flatMap(function(w){return f(w)}).filter(function(w){return!!w}),y=h.map(g4(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=he(he({},this._options.searchOptions),n),s=(l.fields||this._options.fields).reduce(function(V,L){var z;return he(he({},V),(z={},z[L]=Xs(l.boost,L)||1,z))},{}),u=l.boostDocument,d=l.weights,c=l.maxFuzzy,f=l.bm25,h=he(he({},mh.weights),d),y=h.fuzzy,g=h.prefix,w=this._index.get(t.term),m=this.termResults(t.term,t.term,1,w,s,u,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(c,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),T=A[0],O=A[1],j=T.length-t.term.length;if(j){_==null||_.delete(T);var N=g*T.length/(T.length+.3*j);this.termResults(t.term,T,N,O,s,u,f,m)}}}catch(V){r={error:V}}finally{try{P&&!P.done&&(o=k.return)&&o.call(k)}finally{if(r)throw r.error}}if(_)try{for(var F=re(_.keys()),$=F.next();!$.done;$=F.next()){var T=$.value,U=Ne(_.get(T),2),W=U[0],j=U[1];if(j){var N=y*T.length/(T.length+j);this.termResults(t.term,T,N,W,s,u,f,m)}}}catch(V){i={error:V}}finally{try{$&&!$.done&&(a=F.return)&&a.call(F)}finally{if(i)throw i.error}}return m},e.prototype.executeWildcardQuery=function(t){var n,r,o=new Map,i=he(he({},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),u=s[0],d=s[1],c=i.boostDocument?i.boostDocument(d,"",this._storedFields.get(u)):1;o.set(u,{score:c,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=qd),t.length===0)return new Map;var r=n.toLowerCase();return t.reduce(h4[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),u=s[0],d=s[1],c={};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];c[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([u,c])}}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 u,d,c,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=(c=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 T=a?a(this._documentIds.get(A),n,this._storedFields.get(A)):1;if(T){var O=_.get(A),j=this._fieldLength.get(A)[v],N=v4(O,E,this._documentCount,j,C,l),F=r*m*T*N,$=s.get(A);if($){$.score+=F,x4($.terms,t);var U=Xs($.match,n);U?U.push(w):$.match[n]=[w]}else s.set(A,{score:F,terms:[t],match:(h={},h[n]=[w],h)})}}}catch(W){c={error:W}}finally{try{P&&!P.done&&(f=k.return)&&f.call(k)}finally{if(c)throw c.error}}}}}catch(W){u={error:W}}finally{try{g&&!g.done&&(d=y.return)&&d.call(y)}finally{if(u)throw u.error}}return s},e.prototype.addTerm=function(t,n,r){var o=this._index.fetch(r,yh),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,yh),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(u){o={error:u}}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-8a46a6d9.json")).json());let tc;function O1(){const[e,t]=p.useState();return p.useEffect(()=>{(async()=>{tc||(tc=w4());const n=await tc,r=p4.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 E4="vocs_DesktopSearch_search",k4="vocs_DesktopSearch_searchCommand";const b4=p.forwardRef((e,t)=>p.createElement(de.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()}}))),C4=b4;var I1={exports:{}};/*!*************************************************** +`)},jE=0,zr=[];function FE(e){var t=p.useRef([]),n=p.useRef([0,0]),r=p.useRef(),o=p.useState(jE++)[0],i=p.useState(function(){return d1()})[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=sE([e.lockRef.current],(e.shards||[]).map(hh),!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=_a(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=fh(P,k);if(!A)return!0;if(A?C=P:(C=P==="v"?"h":"v",A=fh(P,k)),!A)return!1;if(!r.current&&"changedTouches"in g&&(_||E)&&(r.current=C),!C)return!0;var T=r.current||C;return DE(T,w,g,T==="h"?_:E,!0)},[]),s=p.useCallback(function(g){var w=g;if(!(!zr.length||zr[zr.length-1]!==i)){var m="deltaY"in w?ph(w):_a(w),v=t.current.filter(function(C){return C.name===w.type&&C.target===w.target&&NE(C.delta,m)})[0];if(v&&v.should){w.cancelable&&w.preventDefault();return}if(!v){var _=(a.current.shards||[]).map(hh).filter(Boolean).filter(function(C){return C.contains(w.target)}),E=_.length>0?l(w,_[0]):!a.current.noIsolation;E&&w.cancelable&&w.preventDefault()}}},[]),u=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=_a(g),r.current=void 0},[]),c=p.useCallback(function(g){u(g.type,ph(g),g.target,l(g,e.lockRef.current))},[]),f=p.useCallback(function(g){u(g.type,_a(g),g.target,l(g,e.lockRef.current))},[]);p.useEffect(function(){return zr.push(i),e.setCallbacks({onScrollCapture:c,onWheelCapture:c,onTouchMoveCapture:f}),document.addEventListener("wheel",s,Fr),document.addEventListener("touchmove",s,Fr),document.addEventListener("touchstart",d,Fr),function(){zr=zr.filter(function(g){return g!==i}),document.removeEventListener("wheel",s,Fr),document.removeEventListener("touchmove",s,Fr),document.removeEventListener("touchstart",d,Fr)}},[]);var h=e.removeScrollBar,y=e.inert;return p.createElement(p.Fragment,null,y?p.createElement(i,{styles:ME(o)}):null,h?p.createElement(SE,{gapMode:"margin"}):null)}const zE=vE(u1,FE);var m1=p.forwardRef(function(e,t){return p.createElement(Kl,en({},e,{ref:t,sideCar:zE}))});m1.classNames=Kl.classNames;const v1=m1;var UE=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Ur=new WeakMap,wa=new WeakMap,Ea={},qs=0,g1=function(e){return e&&(e.host||g1(e.parentNode))},VE=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=g1(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})},BE=function(e,t,n,r){var o=VE(t,Array.isArray(e)?e:[e]);Ea[n]||(Ea[n]=new WeakMap);var i=Ea[n],a=[],l=new Set,s=new Set(o),u=function(c){!c||l.has(c)||(l.add(c),u(c.parentNode))};o.forEach(u);var d=function(c){!c||s.has(c)||Array.prototype.forEach.call(c.children,function(f){if(l.has(f))d(f);else{var h=f.getAttribute(r),y=h!==null&&h!=="false",g=(Ur.get(f)||0)+1,w=(i.get(f)||0)+1;Ur.set(f,g),i.set(f,w),a.push(f),g===1&&y&&wa.set(f,!0),w===1&&f.setAttribute(n,"true"),y||f.setAttribute(r,"true")}})};return d(t),l.clear(),qs++,function(){a.forEach(function(c){var f=Ur.get(c)-1,h=i.get(c)-1;Ur.set(c,f),i.set(c,h),f||(wa.has(c)||c.removeAttribute(r),wa.delete(c)),h||c.removeAttribute(n)}),qs--,qs||(Ur=new WeakMap,Ur=new WeakMap,wa=new WeakMap,Ea={})}},y1=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||UE(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),BE(r,o,n,"aria-hidden")):function(){return null}};const x1="Dialog",[_1,xP]=kn(x1),[HE,Cn]=_1(x1),WE=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:a=!0}=e,l=p.useRef(null),s=p.useRef(null),[u=!1,d]=ar({prop:r,defaultProp:o,onChange:i});return p.createElement(HE,{scope:t,triggerRef:l,contentRef:s,contentId:on(),titleId:on(),descriptionId:on(),open:u,onOpenChange:d,onOpenToggle:p.useCallback(()=>d(c=>!c),[d]),modal:a},n)},KE="DialogTrigger",GE=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Cn(KE,n),i=Ue(t,o.triggerRef);return p.createElement(de.button,q({type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Kd(o.open)},r,{ref:i,onClick:le(e.onClick,o.onOpenToggle)}))}),w1="DialogPortal",[qE,E1]=_1(w1,{forceMount:void 0}),YE=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,i=Cn(w1,t);return p.createElement(qE,{scope:t,forceMount:n},p.Children.map(r,a=>p.createElement(bn,{present:n||i.open},p.createElement(a1,{asChild:!0,container:o},a))))},vu="DialogOverlay",QE=p.forwardRef((e,t)=>{const n=E1(vu,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=Cn(vu,e.__scopeDialog);return i.modal?p.createElement(bn,{present:r||i.open},p.createElement(ZE,q({},o,{ref:t}))):null}),ZE=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Cn(vu,n);return p.createElement(v1,{as:ko,allowPinchZoom:!0,shards:[o.contentRef]},p.createElement(de.div,q({"data-state":Kd(o.open)},r,{ref:t,style:{pointerEvents:"auto",...r.style}})))}),Oi="DialogContent",XE=p.forwardRef((e,t)=>{const n=E1(Oi,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=Cn(Oi,e.__scopeDialog);return p.createElement(bn,{present:r||i.open},i.modal?p.createElement(JE,q({},o,{ref:t})):p.createElement(e3,q({},o,{ref:t})))}),JE=p.forwardRef((e,t)=>{const n=Cn(Oi,e.__scopeDialog),r=p.useRef(null),o=Ue(t,n.contentRef,r);return p.useEffect(()=>{const i=r.current;if(i)return y1(i)},[]),p.createElement(k1,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())}))}),e3=p.forwardRef((e,t)=>{const n=Cn(Oi,e.__scopeDialog),r=p.useRef(!1),o=p.useRef(!1);return p.createElement(k1,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()}}))}),k1=p.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,...a}=e,l=Cn(Oi,n),s=p.useRef(null),u=Ue(t,s);return l1(),p.createElement(p.Fragment,null,p.createElement(o1,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},p.createElement(Wd,q({role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":Kd(l.open)},a,{ref:u,onDismiss:()=>l.onOpenChange(!1)}))),!1)}),t3="DialogTitle",n3=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Cn(t3,n);return p.createElement(de.h2,q({id:o.titleId},r,{ref:t}))});function Kd(e){return e?"open":"closed"}const b1=WE,C1=GE,r3=YE,o3=QE,i3=XE,a3=n3;var he=function(){return he=Object.assign||function(t){for(var n,r=1,o=arguments.length;r0&&i[i.length-1])&&(u[0]===6||u[0]===2)){n=0;continue}if(u[0]===3&&(!i||u[1]>i[0]&&u[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 c3="ENTRIES",P1="KEYS",A1="VALUES",Qe="",Ys=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=Vr(this._path),n=t.node,r=t.keys;if(Vr(r)===Qe)return{done:!1,value:this.result()};var o=n.get(Vr(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=Vr(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 Vr(n)}).filter(function(t){return t!==Qe}).join("")},e.prototype.value=function(){return Vr(this._path).node.get(Qe)},e.prototype.result=function(){switch(this._type){case A1:return this.value();case P1:return this.key();default:return[this.key(),this.value()]}},e.prototype[Symbol.iterator]=function(){return this},e}(),Vr=function(e){return e[e.length-1]},u3=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}S1(e.get(h),t,n,r,o,g,a,l+h)}}}catch(F){s={error:F}}finally{try{f&&!f.done&&(u=c.return)&&u.call(c)}finally{if(s)throw s.error}}},Qs=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(yl(this._tree,t.slice(this._prefix.length)),2),i=o[0],a=o[1];if(i===void 0){var l=Ne(Gd(a),2),s=l[0],u=l[1];try{for(var d=re(s.keys()),c=d.next();!c.done;c=d.next()){var f=c.value;if(f!==Qe&&f.startsWith(u)){var h=new Map;return h.set(f.slice(u.length),s.get(f)),new e(h,t)}}}catch(y){n={error:y}}finally{try{c&&!c.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,d3(this._tree,t)},e.prototype.entries=function(){return new Ys(this,c3)},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(u){n={error:u}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},e.prototype.fuzzyGet=function(t,n){return u3(this._tree,t,n)},e.prototype.get=function(t){var n=gu(this._tree,t);return n!==void 0?n.get(Qe):void 0},e.prototype.has=function(t){var n=gu(this._tree,t);return n!==void 0&&n.has(Qe)},e.prototype.keys=function(){return new Ys(this,P1)},e.prototype.set=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Zs(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=Zs(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=Zs(this._tree,t),o=r.get(Qe);return o===void 0&&r.set(Qe,o=n()),o},e.prototype.values=function(){return new Ys(this,A1)},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],u=l[1];o.set(s,u)}}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}(),yl=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]),yl(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]),yl(void 0,"",n)},gu=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 gu(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}}},Zs=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 Qs,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=xu,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 l3(this,void 0,void 0,function(){var r,o,i,a,l,s,u,d,c,f,h,y,g,w,m,v,_,E,C,k,P,A,T,O,j;return s3(this,function(N){switch(N.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(n))return[3,10];o=t.batchSize||yu.batchSize,i=t.batchWait||yu.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];u=Ne(s.value,2),d=u[0],c=u[1];try{for(f=(A=void 0,re(c)),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?c.delete(g):w.delete(E))}catch(F){O={error:F}}finally{try{v&&!v.done&&(j=m.return)&&j.call(m)}finally{if(O)throw O.error}}}}catch(F){A={error:F}}finally{try{h&&!h.done&&(T=f.return)&&T.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(F){return setTimeout(F,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||ec.minDirtCount,r=r||ec.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 u=Ne(s.value,2),d=u[0],c=u[1],f=c.score,h=c.terms,y=c.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(gh),a},e.prototype.autoSuggest=function(t,n){var r,o,i,a;n===void 0&&(n={}),n=he(he({},this._options.autoSuggestOptions),n);var l=new Map;try{for(var s=re(this.search(t,n)),u=s.next();!u.done;u=s.next()){var d=u.value,c=d.score,f=d.terms,h=f.join(" "),y=l.get(h);y!=null?(y.score+=c,y.count+=1):l.set(h,{score:c,terms:f,count:1})}}catch(C){r={error:C}}finally{try{u&&!u.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],c=_.score,f=_.terms,E=_.count;g.push({suggestion:y,terms:f,score:c/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(gh),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(Js.hasOwnProperty(t))return Xs(Js,t);throw new Error('MiniSearch: unknown option "'.concat(t,'"'))},e.loadJS=function(t,n){var r,o,i,a,l,s,u=t.index,d=t.documentCount,c=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=c,_._documentIds=ka(f),_._idToShortId=new Map,_._fieldIds=h,_._fieldLength=ka(y),_._avgFieldLength=g,_._storedFields=ka(w),_._dirtCount=m||0,_._index=new Qs;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(z){r={error:z}}finally{try{C&&!C.done&&(o=E.return)&&o.call(E)}finally{if(r)throw r.error}}try{for(var T=re(u),O=T.next();!O.done;O=T.next()){var j=Ne(O.value,2),N=j[0],F=j[1],$=new Map;try{for(var U=(l=void 0,re(Object.keys(F))),W=U.next();!W.done;W=U.next()){var V=W.value,L=F[V];v===1&&(L=L.ds),$.set(parseInt(V,10),ka(L))}}catch(z){l={error:z}}finally{try{W&&!W.done&&(s=U.return)&&s.call(U)}finally{if(l)throw l.error}}_._index.set(N,$)}}catch(z){i={error:z}}finally{try{O&&!O.done&&(a=T.return)&&a.call(T)}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=he(he(he({},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,u=a.searchOptions,d=he(he({tokenize:l,processTerm:s},u),n),c=d.tokenize,f=d.processTerm,h=c(t).flatMap(function(w){return f(w)}).filter(function(w){return!!w}),y=h.map(g3(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=he(he({},this._options.searchOptions),n),s=(l.fields||this._options.fields).reduce(function(V,L){var z;return he(he({},V),(z={},z[L]=Xs(l.boost,L)||1,z))},{}),u=l.boostDocument,d=l.weights,c=l.maxFuzzy,f=l.bm25,h=he(he({},mh.weights),d),y=h.fuzzy,g=h.prefix,w=this._index.get(t.term),m=this.termResults(t.term,t.term,1,w,s,u,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(c,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),T=A[0],O=A[1],j=T.length-t.term.length;if(j){_==null||_.delete(T);var N=g*T.length/(T.length+.3*j);this.termResults(t.term,T,N,O,s,u,f,m)}}}catch(V){r={error:V}}finally{try{P&&!P.done&&(o=k.return)&&o.call(k)}finally{if(r)throw r.error}}if(_)try{for(var F=re(_.keys()),$=F.next();!$.done;$=F.next()){var T=$.value,U=Ne(_.get(T),2),W=U[0],j=U[1];if(j){var N=y*T.length/(T.length+j);this.termResults(t.term,T,N,W,s,u,f,m)}}}catch(V){i={error:V}}finally{try{$&&!$.done&&(a=F.return)&&a.call(F)}finally{if(i)throw i.error}}return m},e.prototype.executeWildcardQuery=function(t){var n,r,o=new Map,i=he(he({},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),u=s[0],d=s[1],c=i.boostDocument?i.boostDocument(d,"",this._storedFields.get(u)):1;o.set(u,{score:c,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=qd),t.length===0)return new Map;var r=n.toLowerCase();return t.reduce(h3[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),u=s[0],d=s[1],c={};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];c[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([u,c])}}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 u,d,c,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=(c=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 T=a?a(this._documentIds.get(A),n,this._storedFields.get(A)):1;if(T){var O=_.get(A),j=this._fieldLength.get(A)[v],N=v3(O,E,this._documentCount,j,C,l),F=r*m*T*N,$=s.get(A);if($){$.score+=F,x3($.terms,t);var U=Xs($.match,n);U?U.push(w):$.match[n]=[w]}else s.set(A,{score:F,terms:[t],match:(h={},h[n]=[w],h)})}}}catch(W){c={error:W}}finally{try{P&&!P.done&&(f=k.return)&&f.call(k)}finally{if(c)throw c.error}}}}}catch(W){u={error:W}}finally{try{g&&!g.done&&(d=y.return)&&d.call(y)}finally{if(u)throw u.error}}return s},e.prototype.addTerm=function(t,n,r){var o=this._index.fetch(r,yh),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,yh),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(u){o={error:u}}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-e1175f97.json")).json());let tc;function O1(){const[e,t]=p.useState();return p.useEffect(()=>{(async()=>{tc||(tc=w3());const n=await tc,r=p3.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 E3="vocs_DesktopSearch_search",k3="vocs_DesktopSearch_searchCommand";const b3=p.forwardRef((e,t)=>p.createElement(de.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()}}))),C3=b3;var I1={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()})(Py,function(){var n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(u){return typeof u}:function(u){return u&&typeof Symbol=="function"&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u},r=function(u,d){if(!(u instanceof d))throw new TypeError("Cannot call a class as a function")},o=function(){function u(d,c){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,u),this.ctx=d,this.iframes=c,this.exclude=f,this.iframesTimeout=h}return o(u,[{key:"getContexts",value:function(){var c=void 0,f=[];return typeof this.ctx>"u"||!this.ctx?c=[]:NodeList.prototype.isPrototypeOf(this.ctx)?c=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?c=this.ctx:typeof this.ctx=="string"?c=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):c=[this.ctx],c.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(c,f){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},y=void 0;try{var g=c.contentWindow;if(y=g.document,!g||!y)throw new Error("iframe inaccessible")}catch{h()}y&&f(y)}},{key:"isIframeBlank",value:function(c){var f="about:blank",h=c.getAttribute("src").trim(),y=c.contentWindow.location.href;return y===f&&h!==f&&h}},{key:"observeIframeLoad",value:function(c,f,h){var y=this,g=!1,w=null,m=function v(){if(!g){g=!0,clearTimeout(w);try{y.isIframeBlank(c)||(c.removeEventListener("load",v),y.getIframeContents(c,f,h))}catch{h()}}};c.addEventListener("load",m),w=setTimeout(m,this.iframesTimeout)}},{key:"onIframeReady",value:function(c,f,h){try{c.contentWindow.document.readyState==="complete"?this.isIframeBlank(c)?this.observeIframeLoad(c,f,h):this.getIframeContents(c,f,h):this.observeIframeLoad(c,f,h)}catch{h()}}},{key:"waitForIframes",value:function(c,f){var h=this,y=0;this.forEachIframe(c,function(){return!0},function(g){y++,h.waitForIframes(g.querySelector("html"),function(){--y||f()})},function(g){g||f()})}},{key:"forEachIframe",value:function(c,f,h){var y=this,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},w=c.querySelectorAll("iframe"),m=w.length,v=0;w=Array.prototype.slice.call(w);var _=function(){--m<=0&&g(v)};m||_(),w.forEach(function(E){u.matches(E,y.exclude)?_():y.onIframeReady(E,function(C){f(E)&&(v++,h(C)),_()},_)})}},{key:"createIterator",value:function(c,f,h){return document.createNodeIterator(c,f,h,!1)}},{key:"createInstanceOnIframe",value:function(c){return new u(c.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(c,f,h){var y=c.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(c){var f=c.previousNode(),h=void 0;return f===null?h=c.nextNode():h=c.nextNode()&&c.nextNode(),{prevNode:f,node:h}}},{key:"checkIframeFilter",value:function(c,f,h,y){var g=!1,w=!1;return y.forEach(function(m,v){m.val===h&&(g=v,w=m.handled)}),this.compareNodeIframe(c,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(c,f,h,y){var g=this;c.forEach(function(w){w.handled||g.getIframeContents(w.val,function(m){g.createInstanceOnIframe(m).forEachNode(f,h,y)})})}},{key:"iterateThroughNodes",value:function(c,f,h,y,g){for(var w=this,m=this.createIterator(f,c,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(c,function(A){return _.push(A)},y)}),_.push(E);_.forEach(function(P){h(P)}),this.iframes&&this.handleOpenIframes(v,c,h,y),g()}},{key:"forEachNode",value:function(c,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(c,v,f,h,function(){--m<=0&&g()})};y.iframes?y.waitForIframes(v,_):_()})}}],[{key:"matches",value:function(c,f){var h=typeof f=="string"?[f]:f,y=c.matches||c.matchesSelector||c.msMatchesSelector||c.mozMatchesSelector||c.oMatchesSelector||c.webkitMatchesSelector;if(y){var g=!1;return h.every(function(w){return y.call(c,w)?(g=!0,!1):!0}),g}else return!1}}]),u}(),l=function(){function u(d){r(this,u),this.ctx=d,this.ie=!1;var c=window.navigator.userAgent;(c.indexOf("MSIE")>-1||c.indexOf("Trident")>-1)&&(this.ie=!0)}return o(u,[{key:"log",value:function(c){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: "+c)}},{key:"escapeStr",value:function(c){return c.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(c){return this.opt.wildcards!=="disabled"&&(c=this.setupWildcardsRegExp(c)),c=this.escapeStr(c),Object.keys(this.opt.synonyms).length&&(c=this.createSynonymsRegExp(c)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(c=this.setupIgnoreJoinersRegExp(c)),this.opt.diacritics&&(c=this.createDiacriticsRegExp(c)),c=this.createMergedBlanksRegExp(c),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(c=this.createJoinersRegExp(c)),this.opt.wildcards!=="disabled"&&(c=this.createWildcardsRegExp(c)),c=this.createAccuracyRegExp(c),c}},{key:"createSynonymsRegExp",value:function(c){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!==""&&(c=c.replace(new RegExp("("+this.escapeStr(m)+"|"+this.escapeStr(v)+")","gm"+h),y+("("+this.processSynomyms(m)+"|")+(this.processSynomyms(v)+")")+y))}return c}},{key:"processSynomyms",value:function(c){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(c=this.setupIgnoreJoinersRegExp(c)),c}},{key:"setupWildcardsRegExp",value:function(c){return c=c.replace(/(?:\\)*\?/g,function(f){return f.charAt(0)==="\\"?"?":""}),c.replace(/(?:\\)*\*/g,function(f){return f.charAt(0)==="\\"?"*":""})}},{key:"createWildcardsRegExp",value:function(c){var f=this.opt.wildcards==="withSpaces";return c.replace(/\u0001/g,f?"[\\S\\s]?":"\\S?").replace(/\u0002/g,f?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(c){return c.replace(/[^(|)\\]/g,function(f,h,y){var g=y.charAt(h+1);return/[(|)\\]/.test(g)||g===""?f:f+"\0"})}},{key:"createJoinersRegExp",value:function(c){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?c.split(/\u0000+/).join("["+f.join("")+"]*"):c}},{key:"createDiacriticsRegExp",value:function(c){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 c.split("").forEach(function(g){h.every(function(w){if(w.indexOf(g)!==-1){if(y.indexOf(w)>-1)return!1;c=c.replace(new RegExp("["+w+"]","gm"+f),"["+w+"]"),y.push(w)}return!0})}),c}},{key:"createMergedBlanksRegExp",value:function(c){return c.replace(/[\s]+/gmi,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(c){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"()("+c+")";case"complementary":return m="\\s"+(m||this.escapeStr(h)),"()([^"+m+"]*"+c+"[^"+m+"]*)";case"exactly":return"(^|\\s"+m+")("+c+")(?=$|\\s"+m+")"}}},{key:"getSeparatedKeywords",value:function(c){var f=this,h=[];return c.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(c){return Number(parseFloat(c))==c}},{key:"checkRanges",value:function(c){var f=this;if(!Array.isArray(c)||Object.prototype.toString.call(c[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(c),[];var h=[],y=0;return c.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(c,f){var h=void 0,y=void 0,g=!1;return c&&typeof c.start<"u"?(h=parseInt(c.start,10),y=h+parseInt(c.length,10),this.isNumeric(c.start)&&this.isNumeric(c.length)&&y-f>0&&y-h>0?g=!0:(this.log("Ignoring invalid or overlapping range: "+(""+JSON.stringify(c))),this.opt.noMatch(c))):(this.log("Ignoring invalid range: "+JSON.stringify(c)),this.opt.noMatch(c)),{start:h,end:y,valid:g}}},{key:"checkWhitespaceRanges",value:function(c,f,h){var y=void 0,g=!0,w=h.length,m=f-w,v=parseInt(c.start,10)-m;return v=v>w?w:v,y=v+parseInt(c.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(c)),this.opt.noMatch(c)):h.substring(v,y).replace(/\s+/g,"")===""&&(g=!1,this.log("Skipping whitespace only range: "+JSON.stringify(c)),this.opt.noMatch(c)),{start:v,end:y,valid:g}}},{key:"getTextNodes",value:function(c){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(){c({value:h,nodes:y})})}},{key:"matchesExclude",value:function(c){return a.matches(c,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(c,f,h){var y=this.opt.element?this.opt.element:"mark",g=c.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(c,f,h,y,g){var w=this;c.nodes.every(function(m,v){var _=c.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=c.value.substr(0,m.start),P=c.value.substr(C+m.start);if(m.node=w.wrapRangeInTextNode(m.node,E,C),c.value=k+P,c.nodes.forEach(function(A,T){T>=v&&(c.nodes[T].start>0&&T!==v&&(c.nodes[T].start-=C),c.nodes[T].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(c,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=c.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 _u(e,t){const[n,r]=p.useState();p.useEffect(()=>{const i=T4(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 T4(e){try{const t=localStorage.getItem(e);return typeof t=="string"?JSON.parse(t):void 0}catch{return}}var R4="vocs_Kbd";function L1(e){return x.jsx("kbd",{...e,className:D(e.className,R4)})}var $4="vocs_KeyboardShortcut_kbdGroup",O4="vocs_KeyboardShortcut";function ro(e){const{description:t,keys:n}=e;return x.jsxs("span",{className:O4,children:[t,x.jsx("span",{className:$4,children:n.map(r=>x.jsx(L1,{children:r},r))})]})}var I4="vocs_SearchDialog_content",xh="vocs_SearchDialog_excerpt",L4="vocs_SearchDialog_overlay",D4="vocs_SearchDialog_result",_h="vocs_SearchDialog_resultIcon",N4="vocs_SearchDialog_resultSelected",M4="vocs_SearchDialog_results",j4="vocs_SearchDialog",F4="vocs_SearchDialog_searchBox",z4="vocs_SearchDialog_searchInput",ba="vocs_SearchDialog_searchInputIcon",U4="vocs_SearchDialog_searchInputIconDesktop",V4="vocs_SearchDialog_searchInputIconMobile",B4="vocs_SearchDialog_searchShortcuts",wh="vocs_SearchDialog_title",H4="vocs_SearchDialog_titleIcon",W4="vocs_SearchDialog_titles";function D1(e){const t=Ud(),n=p.useRef(null),r=p.useRef(null),[o,i]=_u("filterText",""),a=S4(o,200),l=O1(),[s,u]=p.useState(-1),[d,c]=p.useState(!1),[f,h]=_u("showDetailView",!0),y=p.useMemo(()=>l?a?(u(0),l.search(a).slice(0,16)):(u(-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 T in A.match)v.add(T);const _=new A4(r.current);_.unmark({done(){_==null||_.markRegExp(K4(v))}});const E=r.current.querySelectorAll(`.${xh}`);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(),u(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}),c(!0);break}case"ArrowUp":{_.preventDefault(),u(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}),c(!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(r4,{children:[x.jsx(o4,{className:L4}),x.jsxs(i4,{onOpenAutoFocus:v=>{n.current&&(v.preventDefault(),n.current.focus()),m()},onCloseAutoFocus:()=>{u(0)},className:j4,"aria-describedby":void 0,children:[x.jsx(a4,{className:t1,children:"Search"}),x.jsxs("form",{className:F4,children:[x.jsx("button",{"aria-label":"Close search dialog",type:"button",onClick:()=>e.onClose(),className:V4,children:x.jsx(E8,{className:ba,height:20,width:20})}),x.jsx(C4,{htmlFor:"search-input",children:x.jsx(Hd,{"aria-label":"Search",className:D(ba,U4),height:20,width:20})}),x.jsx("input",{ref:n,tabIndex:0,className:z4,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(R8,{className:ba,height:20,width:20})}),x.jsx("button",{"aria-label":"Reset search",type:"button",className:ba,onClick:()=>{var v;i(""),(v=n.current)==null||v.focus()},children:"⌫"})]}),x.jsxs("ul",{className:M4,role:y.length?"listbox":void 0,onMouseMove:()=>c(!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(D4,_===s&&N4),"aria-selected":_===s,"aria-label":[...v.titles.filter(C=>!!C),v.title].join(" > "),children:x.jsxs(Fv,{to:v.href,onClick:C=>{C.metaKey||e.onClose()},onMouseEnter:()=>!d&&u(_),onFocus:()=>u(_),children:[x.jsxs("div",{className:W4,children:[v.isPage?x.jsx(S8,{className:_h}):x.jsx("span",{className:_h,children:"#"}),v.titles.filter(C=>!!C).map(C=>x.jsxs("span",{className:wh,children:[x.jsx("span",{dangerouslySetInnerHTML:{__html:C}}),x.jsx(b8,{className:H4})]},C)),x.jsx("span",{className:wh,children:x.jsx("span",{dangerouslySetInnerHTML:{__html:v.title}})})]}),f&&((E=v.text)==null?void 0:E.trim())&&x.jsx("div",{className:xh,children:x.jsx(Xv,{className:I4,children:x.jsx("div",{dangerouslySetInnerHTML:{__html:v.html}})})})]})},v.id)})]}),x.jsxs("div",{className:B4,children:[x.jsx(ro,{description:"Navigate",keys:["↑","↓"]}),x.jsx(ro,{description:"Select",keys:["enter"]}),x.jsx(ro,{description:"Close",keys:["esc"]}),x.jsx(ro,{description:"Reset",keys:["⌘","⌫"]})]})]})]})}function K4(e){return new RegExp([...e].sort((t,n)=>n.length-t.length).map(t=>`(${t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")})`).join("|"),"gi")}function G4(){O1();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(b1,{open:e,onOpenChange:t,children:[x.jsx(C1,{asChild:!0,children:x.jsxs("button",{className:E4,type:"button",children:[x.jsx(Hd,{style:{marginTop:2}}),"Search",x.jsx("div",{className:k4,children:x.jsx("div",{style:{background:"currentColor",transform:"rotate(45deg)",width:1.5,borderRadius:2,height:"100%"}})})]})}),x.jsx(D1,{open:e,onClose:()=>t(!1)})]})}var N1="vocs_DesktopTopNav_button",q4="vocs_DesktopTopNav_content",Y4="vocs_DesktopTopNav_curtain",Eh="vocs_DesktopTopNav_divider",nc="vocs_DesktopTopNav_group",Ca="vocs_DesktopTopNav_hideCompact",wu="vocs_DesktopTopNav_icon",xl="vocs_DesktopTopNav_item",Q4="vocs_DesktopTopNav_logo",Z4="vocs_DesktopTopNav_logoWrapper",X4="vocs_DesktopTopNav",kh="vocs_DesktopTopNav_section",J4="vocs_DesktopTopNav_withLogo",eE="vocs_Icon",Eu="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(eE,e),role:"img",style:{...o,...Gt({[Eu]:r})},children:x.jsx(n,{height:r,width:r})})}var tE="vocs_Logo_logoDark",nE="vocs_Logo_logoLight",rc="vocs_Logo";function rE({className:e}){const{logoUrl:t}=ot();return t?x.jsx(x.Fragment,{children:typeof t=="string"?x.jsx("img",{alt:"Logo",className:D(e,rc),src:t}):x.jsxs(x.Fragment,{children:[x.jsx("img",{alt:"Logo",className:D(e,rc,tE),src:t.dark}),x.jsx("img",{alt:"Logo",className:D(e,rc,nE),src:t.light})]})}):null}var oE="vocs_NavLogo_logoImage",iE="vocs_NavLogo_title";function Yd(){const e=ot();return e.logoUrl?x.jsx(rE,{className:oE}):x.jsx("div",{className:iE,children:e.title})}const aE=p.createContext(void 0);function Gl(e){const t=p.useContext(aE);return e||t||"ltr"}function ql(e){const t=e+"CollectionProvider",[n,r]=kn(t),[o,i]=n(t,{collectionRef:{current:null},itemMap:new Map}),a=h=>{const{scope:y,children:g}=h,w=Q.useRef(null),m=Q.useRef(new Map).current;return Q.createElement(o,{scope:y,itemMap:m,collectionRef:w},g)},l=e+"CollectionSlot",s=Q.forwardRef((h,y)=>{const{scope:g,children:w}=h,m=i(l,g),v=Ue(y,m.collectionRef);return Q.createElement(ko,{ref:v},w)}),u=e+"CollectionItemSlot",d="data-radix-collection-item",c=Q.forwardRef((h,y)=>{const{scope:g,children:w,...m}=h,v=Q.useRef(null),_=Ue(y,v),E=i(u,g);return Q.useEffect(()=>(E.itemMap.set(v,{ref:v,...m}),()=>void E.itemMap.delete(v))),Q.createElement(ko,{[d]:"",ref:_},w)});function f(h){const y=i(e+"CollectionConsumer",h);return Q.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:c},f,r]}function lE(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 sE=p.forwardRef((e,t)=>p.createElement(de.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}}))),cE=sE,Wi="NavigationMenu",[Qd,uE,dE]=ql(Wi),[ku,fE,pE]=ql(Wi),[Zd,_A]=kn(Wi,[dE,pE]),[hE,Ir]=Zd(Wi),[mE,wA]=Zd(Wi),vE=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,onValueChange:o,defaultValue:i,delayDuration:a=200,skipDelayDuration:l=300,orientation:s="horizontal",dir:u,...d}=e,[c,f]=p.useState(null),h=Ue(t,T=>f(T)),y=Gl(u),g=p.useRef(0),w=p.useRef(0),m=p.useRef(0),[v,_]=p.useState(!0),[E="",C]=ar({prop:r,onChange:T=>{const O=T!=="",j=l>0;O?(window.clearTimeout(m.current),j&&_(!1)):(window.clearTimeout(m.current),m.current=window.setTimeout(()=>_(!0),l)),o==null||o(T)},defaultProp:i}),k=p.useCallback(()=>{window.clearTimeout(w.current),w.current=window.setTimeout(()=>C(""),150)},[C]),P=p.useCallback(T=>{window.clearTimeout(w.current),C(T)},[C]),A=p.useCallback(T=>{E===T?window.clearTimeout(w.current):g.current=window.setTimeout(()=>{window.clearTimeout(w.current),C(T)},a)},[E,C,a]);return p.useEffect(()=>()=>{window.clearTimeout(g.current),window.clearTimeout(w.current),window.clearTimeout(m.current)},[]),p.createElement(gE,{scope:n,isRootMenu:!0,value:E,dir:y,orientation:s,rootNavigationMenu:c,onTriggerEnter:T=>{window.clearTimeout(g.current),v?A(T):P(T)},onTriggerLeave:()=>{window.clearTimeout(g.current),k()},onContentEnter:()=>window.clearTimeout(w.current),onContentLeave:k,onItemSelect:T=>{C(O=>O===T?"":T)},onItemDismiss:()=>C("")},p.createElement(de.nav,q({"aria-label":"Main","data-orientation":s,dir:y},d,{ref:h})))}),gE=e=>{const{scope:t,isRootMenu:n,rootNavigationMenu:r,dir:o,orientation:i,children:a,value:l,onItemSelect:s,onItemDismiss:u,onTriggerEnter:d,onTriggerLeave:c,onContentEnter:f,onContentLeave:h}=e,[y,g]=p.useState(null),[w,m]=p.useState(new Map),[v,_]=p.useState(null);return p.createElement(hE,{scope:t,isRootMenu:n,rootNavigationMenu:r,value:l,previousValue:lE(l),baseId:on(),dir:o,orientation:i,viewport:y,onViewportChange:g,indicatorTrack:v,onIndicatorTrackChange:_,onTriggerEnter:at(d),onTriggerLeave:at(c),onContentEnter:at(f),onContentLeave:at(h),onItemSelect:at(s),onItemDismiss:at(u),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(Qd.Provider,{scope:t},p.createElement(mE,{scope:t,items:w},a)))},yE="NavigationMenuList",xE=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Ir(yE,n),i=p.createElement(de.ul,q({"data-orientation":o.orientation},r,{ref:t}));return p.createElement(de.div,{style:{position:"relative"},ref:o.onIndicatorTrackChange},p.createElement(Qd.Slot,{scope:n},o.isRootMenu?p.createElement(j1,{asChild:!0},i):i))}),_E="NavigationMenuItem",[wE,M1]=Zd(_E),EE=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,...o}=e,i=on(),a=r||i||"LEGACY_REACT_AUTO_VALUE",l=p.useRef(null),s=p.useRef(null),u=p.useRef(null),d=p.useRef(()=>{}),c=p.useRef(!1),f=p.useCallback((y="start")=>{if(l.current){d.current();const g=bu(l.current);g.length&&Xd(y==="start"?g:g.reverse())}},[]),h=p.useCallback(()=>{if(l.current){const y=bu(l.current);y.length&&(d.current=RE(y))}},[]);return p.createElement(wE,{scope:n,value:a,triggerRef:s,contentRef:l,focusProxyRef:u,wasEscapeCloseRef:c,onEntryKeyDown:f,onFocusProxyEnter:f,onRootContentClose:h,onContentFocusOutside:h},p.createElement(de.li,q({},o,{ref:t})))}),bh="NavigationMenuTrigger",kE=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,disabled:r,...o}=e,i=Ir(bh,e.__scopeNavigationMenu),a=M1(bh,e.__scopeNavigationMenu),l=p.useRef(null),s=Ue(l,a.triggerRef,t),u=U1(i.baseId,a.value),d=V1(i.baseId,a.value),c=p.useRef(!1),f=p.useRef(!1),h=a.value===i.value;return p.createElement(p.Fragment,null,p.createElement(Qd.ItemSlot,{scope:n,value:a.value},p.createElement(F1,{asChild:!0},p.createElement(de.button,q({id:u,disabled:r,"data-disabled":r?"":void 0,"data-state":z1(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,Cu(()=>{r||f.current||a.wasEscapeCloseRef.current||c.current||(i.onTriggerEnter(a.value),c.current=!0)})),onPointerLeave:le(e.onPointerLeave,Cu(()=>{r||(i.onTriggerLeave(),c.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(cE,{"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})))}),Ch="navigationMenu.linkSelect",bE=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,active:r,onSelect:o,...i}=e;return p.createElement(F1,{asChild:!0},p.createElement(de.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(Ch,{bubbles:!0,cancelable:!0});if(l.addEventListener(Ch,u=>o==null?void 0:o(u),{once:!0}),pu(l,s),!s.defaultPrevented&&!a.metaKey){const u=new CustomEvent(Ba,{bubbles:!0,cancelable:!0});pu(l,u)}},{checkForDefaultPrevented:!1})})))}),_l="NavigationMenuContent",CE=p.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Ir(_l,e.__scopeNavigationMenu),i=M1(_l,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(PE,q({forceMount:n},s,{ref:a})):p.createElement(bn,{present:n||l},p.createElement(AE,q({"data-state":z1(l)},s,{ref:a,onPointerEnter:le(e.onPointerEnter,o.onContentEnter),onPointerLeave:le(e.onPointerLeave,Cu(o.onContentLeave)),style:{pointerEvents:!l&&o.isRootMenu?"none":void 0,...s.style}})))}),PE=p.forwardRef((e,t)=>{const n=Ir(_l,e.__scopeNavigationMenu),{onViewportContentChange:r,onViewportContentRemove:o}=n;return yn(()=>{r(e.value,{ref:t,...e})},[e,t,r]),yn(()=>()=>o(e.value),[e.value,o]),null}),Ba="navigationMenu.rootContentDismiss",AE=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,triggerRef:o,focusProxyRef:i,wasEscapeCloseRef:a,onRootContentClose:l,onContentFocusOutside:s,...u}=e,d=Ir(_l,n),c=p.useRef(null),f=Ue(c,t),h=U1(d.baseId,r),y=V1(d.baseId,r),g=uE(n),w=p.useRef(null),{onItemDismiss:m}=d;p.useEffect(()=>{const _=c.current;if(d.isRootMenu&&_){const E=()=>{var C;m(),l(),_.contains(document.activeElement)&&((C=o.current)===null||C===void 0||C.focus())};return _.addEventListener(Ba,E),()=>_.removeEventListener(Ba,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 T=(()=>{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=T,T},[d.previousValue,d.value,d.dir,g,r]);return p.createElement(j1,{asChild:!0},p.createElement(Wd,q({id:y,"aria-labelledby":h,"data-motion":v,"data-orientation":d.orientation},u,{ref:f,onDismiss:()=>{var _;const E=new Event(Ba,{bubbles:!0,cancelable:!0});(_=c.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 T;return(T=A.ref.current)===null||T===void 0?void 0:T.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=bu(_.currentTarget),A=document.activeElement,T=P.findIndex(N=>N===A),j=_.shiftKey?P.slice(0,T).reverse():P.slice(T+1,P.length);if(Xd(j))_.preventDefault();else{var k;(k=i.current)===null||k===void 0||k.focus()}}}),onEscapeKeyDown:le(e.onEscapeKeyDown,_=>{a.current=!0})})))}),SE="FocusGroup",j1=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Ir(SE,n);return p.createElement(ku.Provider,{scope:n},p.createElement(ku.Slot,{scope:n},p.createElement(de.div,q({dir:o.dir},r,{ref:t}))))}),Ph=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"],TE="FocusGroupItem",F1=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=fE(n),i=Ir(TE,n);return p.createElement(ku.ItemSlot,{scope:n},p.createElement(de.button,q({},r,{ref:t,onKeyDown:le(e.onKeyDown,a=>{if(["Home","End",...Ph].includes(a.key)){let s=o().map(c=>c.ref.current);if([i.dir==="rtl"?"ArrowRight":"ArrowLeft","ArrowUp","End"].includes(a.key)&&s.reverse(),Ph.includes(a.key)){const c=s.indexOf(a.currentTarget);s=s.slice(c+1)}setTimeout(()=>Xd(s)),a.preventDefault()}})})))});function bu(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 Xd(e){const t=document.activeElement;return e.some(n=>n===t?!0:(n.focus(),document.activeElement!==t))}function RE(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 z1(e){return e?"open":"closed"}function U1(e,t){return`${e}-trigger-${t}`}function V1(e,t){return`${e}-content-${t}`}function Cu(e){return t=>t.pointerType==="mouse"?e(t):void 0}const $E=vE,OE=xE,IE=EE,LE=kE,DE=bE,NE=CE;var ME="var(--vocs_NavigationMenu_chevronDownIcon)",jE="vocs_NavigationMenu_content",FE="vocs_NavigationMenu_item",zE="vocs_NavigationMenu_link",UE="vocs_NavigationMenu_list",VE="vocs_NavigationMenu",BE="vocs_NavigationMenu_trigger vocs_NavigationMenu_link";const B1=e=>x.jsx($E,{...e,className:D(e.className,VE)}),H1=e=>x.jsx(OE,{...e,className:D(e.className,UE)}),Yl=({active:e,children:t,className:n,href:r})=>x.jsx(DE,{asChild:!0,children:x.jsx(rn,{"data-active":e,className:D(n,zE),href:r,variant:"styleless",children:t})}),W1=e=>x.jsx(IE,{...e,className:D(e.className,FE)}),K1=({active:e,className:t,...n})=>{const{basePath:r}=ot(),o=r;return x.jsx(LE,{...n,"data-active":e,className:D(t,BE),style:Gt({[ME]:`url(${o}/.vocs/icons/chevron-down.svg)`})})},G1=e=>x.jsx(NE,{...e,className:D(e.className,jE)});function q1(){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 Y1(){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 HE(){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 WE(){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 Q1(){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 Z1(){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"})]})}Pu.Curtain=KE;function Pu(){var r,o,i,a;const e=ot(),{showLogo:t,showSidebar:n}=Or();return x.jsxs("div",{className:D(X4,t&&!n&&J4),children:[x.jsx(G4,{}),t&&x.jsx("div",{className:Z4,children:x.jsx("div",{className:Q4,children:x.jsx(Zn,{to:"/",style:{alignItems:"center",display:"flex",height:"56px",marginTop:"4px"},children:x.jsx(Yd,{})})})}),x.jsx("div",{className:kh}),x.jsxs("div",{className:kh,children:[(((r=e.topNav)==null?void 0:r.length)||0)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:nc,children:x.jsx(GE,{})}),x.jsx("div",{className:D(Eh,Ca)})]}),e.socials&&((o=e.socials)==null?void 0:o.length)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:D(nc,Ca),style:{marginLeft:"-8px",marginRight:"-8px"},children:e.socials.map((l,s)=>x.jsx("div",{className:xl,children:x.jsx(XE,{...l})},s))}),!((i=e.theme)!=null&&i.colorScheme)&&x.jsx("div",{className:D(Eh,Ca)})]}),!((a=e.theme)!=null&&a.colorScheme)&&x.jsx("div",{className:D(nc,Ca),style:{marginLeft:"-8px",marginRight:"-8px"},children:x.jsx("div",{className:xl,children:x.jsx(YE,{})})})]})]})}function KE(){return x.jsx("div",{className:Y4})}function GE(){const{topNav:e}=ot();if(!e)return null;const{pathname:t}=Re(),n=Hi({pathname:t,items:e});return x.jsx(B1,{delayDuration:0,children:x.jsx(H1,{children:e.map((r,o)=>r.link?x.jsx(Yl,{active:n.includes(r.id),className:xl,href:r.link,children:r.text},o):r.items?x.jsxs(W1,{className:xl,children:[x.jsx(K1,{active:n.includes(r.id),children:r.text}),x.jsx(G1,{className:q4,children:x.jsx(qE,{items:r.items})})]},o):null)})})}function qE({items:e}){const{pathname:t}=Re(),n=Hi({pathname:t,items:e});return x.jsx("ul",{children:e==null?void 0:e.map((r,o)=>x.jsx(Yl,{active:n.includes(r.id),href:r.link,children:r.text},o))})}function YE(){const{toggle:e}=N8();return x.jsxs("button",{className:N1,onClick:e,type:"button",children:[x.jsx(st,{className:D(wu,M8),size:"20px",label:"Light",icon:WE}),x.jsx(st,{className:D(wu,j8),size:"20px",label:"Dark",icon:HE,style:{marginTop:"-2px"}})]})}const QE={discord:q1,github:Y1,telegram:Q1,x:Z1},ZE={discord:"23px",github:"20px",telegram:"21px",x:"18px"};function XE({icon:e,label:t,link:n}){return x.jsx("a",{className:N1,href:n,target:"_blank",rel:"noopener noreferrer",children:x.jsx(st,{className:wu,label:t,icon:QE[e],size:ZE[e]||"20px"})})}function JE(){return x.jsx("div",{})}const e3=({children:e})=>e;function t3(){const e=$r(),t=ot();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 X1(){const[e,t]=p.useState(!1);return p.useEffect(()=>{t(!0)},[]),e}var n3="vocs_Footer_container",r3="vocs_Footer_editLink",o3="vocs_Footer_lastUpdated",i3="vocs_Footer_navigation",Ah="vocs_Footer_navigationIcon",a3="vocs_Footer_navigationIcon_left",l3="vocs_Footer_navigationIcon_right",Sh="vocs_Footer_navigationItem",s3="vocs_Footer_navigationItem_left",c3="vocs_Footer_navigationItem_right",Th="vocs_Footer_navigationText",Rh="vocs_Footer_navigationTextInner",u3="vocs_Footer";function d3(){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 f3(){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 p3(){const{layout:e}=Or(),t=X1(),n=$r(),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:u3,children:[e==="docs"&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{className:n3,children:[x.jsx(h3,{}),t&&n.lastUpdatedAt&&x.jsxs("div",{className:o3,children:["Last updated:"," ",x.jsx("time",{dateTime:o,children:new Intl.DateTimeFormat(void 0,{dateStyle:"short",timeStyle:"short"}).format(r)})]})]}),x.jsx(m3,{})]}),x.jsx(JE,{})]})}function h3(){const e=t3();return e.url?x.jsx("div",{children:x.jsxs(rn,{className:r3,href:e.url,children:[x.jsx(I8,{})," ",e.text]})}):null}function m3(){const e=X1(),t=Wl(),{pathname:n}=Re(),r=p.useMemo(()=>J1(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=Ud();return p.useEffect(()=>{let s=o,u=!1;const d=f=>{if(f.code==="ShiftLeft"&&(u=!0),u){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--)}},c=f=>{f.code==="ShiftLeft"&&(u=!1)};return window.addEventListener("keydown",d),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",d),window.removeEventListener("keyup",c)}},[]),e?x.jsxs("div",{className:i3,children:[i?x.jsxs(rn,{className:D(Sh,s3),href:i.link,variant:"styleless",children:[x.jsxs("div",{className:Th,children:[x.jsx("div",{className:D(Ah,a3),style:Gt({[Eu]:"0.75em"}),children:x.jsx(st,{label:"Previous",icon:d3})}),x.jsx("div",{className:Rh,children:i.text})]}),x.jsx(ro,{description:"Previous",keys:["shift","←"]})]}):x.jsx("div",{}),a?x.jsxs(rn,{className:D(Sh,c3),href:a.link,variant:"styleless",children:[x.jsxs("div",{className:Th,children:[x.jsx("div",{className:Rh,style:{textAlign:"right"},children:a.text}),x.jsx("div",{className:D(Ah,l3),style:Gt({[Eu]:"0.75em"}),children:x.jsx(st,{label:"Next",icon:f3})})]}),x.jsx(ro,{description:"Next",keys:["shift","→"]})]}):x.jsx("div",{})]}):null}function J1(e){const t=[];for(const n of e){if(n.items){t.push(...J1(n.items));continue}t.push(n)}return t}const eg="Collapsible",[v3,tg]=kn(eg),[g3,Jd]=v3(eg),y3=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,open:r,defaultOpen:o,disabled:i,onOpenChange:a,...l}=e,[s=!1,u]=ar({prop:r,defaultProp:o,onChange:a});return p.createElement(g3,{scope:n,disabled:i,contentId:on(),open:s,onOpenToggle:p.useCallback(()=>u(d=>!d),[u])},p.createElement(de.div,q({"data-state":ef(s),"data-disabled":i?"":void 0},l,{ref:t})))}),x3="CollapsibleTrigger",_3=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,...r}=e,o=Jd(x3,n);return p.createElement(de.button,q({type:"button","aria-controls":o.contentId,"aria-expanded":o.open||!1,"data-state":ef(o.open),"data-disabled":o.disabled?"":void 0,disabled:o.disabled},r,{ref:t,onClick:le(e.onClick,o.onOpenToggle)}))}),ng="CollapsibleContent",w3=p.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Jd(ng,e.__scopeCollapsible);return p.createElement(bn,{present:n||o.open},({present:i})=>p.createElement(E3,q({},r,{ref:t,present:i})))}),E3=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,present:r,children:o,...i}=e,a=Jd(ng,n),[l,s]=p.useState(r),u=p.useRef(null),d=Ue(t,u),c=p.useRef(0),f=c.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)},[]),yn(()=>{const v=u.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();c.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(de.div,q({"data-state":ef(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 ef(e){return e?"open":"closed"}const k3=y3,b3=_3,C3=w3,Lr="Accordion",P3=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[tf,A3,S3]=ql(Lr),[Ql,EA]=kn(Lr,[S3,tg]),nf=tg(),rg=Q.forwardRef((e,t)=>{const{type:n,...r}=e,o=r,i=r;return Q.createElement(tf.Provider,{scope:e.__scopeAccordion},n==="multiple"?Q.createElement(O3,q({},i,{ref:t})):Q.createElement($3,q({},o,{ref:t})))});rg.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[og,T3]=Ql(Lr),[ig,R3]=Ql(Lr,{collapsible:!1}),$3=Q.forwardRef((e,t)=>{const{value:n,defaultValue:r,onValueChange:o=()=>{},collapsible:i=!1,...a}=e,[l,s]=ar({prop:n,defaultProp:r,onChange:o});return Q.createElement(og,{scope:e.__scopeAccordion,value:l?[l]:[],onItemOpen:s,onItemClose:Q.useCallback(()=>i&&s(""),[i,s])},Q.createElement(ig,{scope:e.__scopeAccordion,collapsible:i},Q.createElement(ag,q({},a,{ref:t}))))}),O3=Q.forwardRef((e,t)=>{const{value:n,defaultValue:r,onValueChange:o=()=>{},...i}=e,[a=[],l]=ar({prop:n,defaultProp:r,onChange:o}),s=Q.useCallback(d=>l((c=[])=>[...c,d]),[l]),u=Q.useCallback(d=>l((c=[])=>c.filter(f=>f!==d)),[l]);return Q.createElement(og,{scope:e.__scopeAccordion,value:a,onItemOpen:s,onItemClose:u},Q.createElement(ig,{scope:e.__scopeAccordion,collapsible:!0},Q.createElement(ag,q({},i,{ref:t}))))}),[I3,rf]=Ql(Lr),ag=Q.forwardRef((e,t)=>{const{__scopeAccordion:n,disabled:r,dir:o,orientation:i="vertical",...a}=e,l=Q.useRef(null),s=Ue(l,t),u=A3(n),c=Gl(o)==="ltr",f=le(e.onKeyDown,h=>{var y;if(!P3.includes(h.key))return;const g=h.target,w=u().filter(T=>{var O;return!((O=T.ref.current)!==null&&O!==void 0&&O.disabled)}),m=w.findIndex(T=>T.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=rf(Au,n),a=T3(Au,n),l=nf(n),s=on(),u=r&&a.value.includes(r)||!1,d=i.disabled||e.disabled;return Q.createElement(L3,{scope:n,open:u,disabled:d,triggerId:s},Q.createElement(k3,q({"data-orientation":i.orientation,"data-state":F3(u)},l,o,{ref:t,disabled:d,open:u,onOpenChange:c=>{c?a.onItemOpen(r):a.onItemClose(r)}})))}),$h="AccordionTrigger",N3=Q.forwardRef((e,t)=>{const{__scopeAccordion:n,...r}=e,o=rf(Lr,n),i=lg($h,n),a=R3($h,n),l=nf(n);return Q.createElement(tf.ItemSlot,{scope:n},Q.createElement(b3,q({"aria-disabled":i.open&&!a.collapsible||void 0,"data-orientation":o.orientation,id:i.triggerId},l,r,{ref:t})))}),M3="AccordionContent",j3=Q.forwardRef((e,t)=>{const{__scopeAccordion:n,...r}=e,o=rf(Lr,n),i=lg(M3,n),a=nf(n);return Q.createElement(C3,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 F3(e){return e?"open":"closed"}const z3=rg,U3=D3,V3=N3,B3=j3;var H3="vocs_MobileSearch_searchButton";function W3(){const[e,t]=p.useState(!1);return x.jsxs(b1,{open:e,onOpenChange:t,children:[x.jsx(C1,{asChild:!0,children:x.jsx("button",{className:H3,type:"button","aria-label":"Search",children:x.jsx(Hd,{height:21,width:21})})}),x.jsx(D1,{open:e,onClose:()=>t(!1)})]})}var K3="vocs_MobileTopNav_button",G3="var(--vocs_MobileTopNav_chevronDownIcon)",q3="var(--vocs_MobileTopNav_chevronUpIcon)",Y3="vocs_MobileTopNav_content",Q3="vocs_MobileTopNav_curtain",Oh="vocs_MobileTopNav_curtainGroup",oc="vocs_MobileTopNav_curtainItem",Z3="vocs_MobileTopNav_divider",Pa="vocs_MobileTopNav_group",X3="vocs_MobileTopNav_icon",J3="vocs_MobileTopNav_item",e5="vocs_MobileTopNav_logo",t5="vocs_MobileTopNav_menuTitle",sg="vocs_MobileTopNav_menuTrigger",cg="vocs_MobileTopNav_navigation",n5="vocs_MobileTopNav_navigationContent",Yo="vocs_MobileTopNav_navigationItem",r5="vocs_MobileTopNav_trigger",o5="vocs_MobileTopNav_navigation_compact",i5="vocs_MobileTopNav_outlinePopover",Ih="vocs_MobileTopNav_outlineTrigger",a5="vocs_MobileTopNav",Lh="vocs_MobileTopNav_section",l5="vocs_MobileTopNav_separator",s5="vocs_MobileTopNav_sidebarPopover",c5="vocs_MobileTopNav_topNavPopover";function u5(e,t){let n=!1;return()=>{n=!0,setTimeout(()=>{n&&e(),n=!1},t)}}var d5="vocs_Outline_heading",f5="vocs_Outline_item",p5="vocs_Outline_items",h5="vocs_Outline_link",m5="vocs_Outline_nav",v5="vocs_Outline";function ug({minLevel:e=2,maxLevel:t=3,highlightActive:n=!0,onClickItem:r,showTitle:o=!0}={}){const{showOutline:i}=Or(),a=typeof i=="number"?e+i-1:t,l=p.useRef(!0),{pathname:s,hash:u}=Re(),[d,c]=p.useState([]);p.useEffect(()=>{if(typeof window>"u")return;const w=Array.from(document.querySelectorAll(`.${qv}`));c(w)},[s]);const f=p.useMemo(()=>d?d.map(w=>{const m=w.querySelector(`.${Yv}`);if(!m)return null;const v=m.getBoundingClientRect(),_=m.id,E=Number(w.tagName[1]),C=w.textContent,k=window.scrollY+v.top;return Ea?null:{id:_,level:E,slugTargetElement:m,text:C,topOffset:k}}).filter(Boolean):[],[d,a,e]),[h,y]=p.useState(u.replace("#",""));if(p.useEffect(()=>{if(typeof window>"u")return;const w=new IntersectionObserver(([m])=>{var _;if(!l.current)return;const v=m.target.id;if(m.isIntersecting)y(v);else{if(!(m.target.getBoundingClientRect().top>0))return;const k=f.findIndex(A=>A.id===h),P=(_=f[k-1])==null?void 0:_.id;y(P)}},{rootMargin:"0px 0px -95% 0px"});for(const m of f)w.observe(m.slugTargetElement);return()=>w.disconnect()},[h,f]),p.useEffect(()=>{if(typeof window>"u")return;const w=new IntersectionObserver(([m])=>{var _;if(!l.current)return;const v=(_=f[f.length-1])==null?void 0:_.id;m.isIntersecting?y(v):h===v&&y(f[f.length-2].id)});return w.observe(document.querySelector("[data-bottom-observer]")),()=>w.disconnect()},[h,f]),p.useEffect(()=>{if(typeof window>"u")return;const w=u5(()=>{var m,v,_;if(l.current){if(window.scrollY===0){y((m=f[0])==null?void 0:m.id);return}if(window.scrollY+document.documentElement.clientHeight>=document.documentElement.scrollHeight){y((v=f[f.length-1])==null?void 0:v.id);return}for(let E=0;Ewindow.removeEventListener("scroll",w)},[f]),f.length===0)return null;const g=f.filter(w=>w.level===e);return x.jsx("aside",{className:v5,children:x.jsxs("nav",{className:m5,children:[o&&x.jsx("h2",{className:d5,children:"On this page"}),x.jsx(dg,{activeId:n?h:null,items:f,onClickItem:()=>{r==null||r(),l.current=!1,setTimeout(()=>{l.current=!0},500)},levelItems:g,setActiveId:y})]})})}function dg({activeId:e,items:t,levelItems:n,onClickItem:r,setActiveId:o}){const{pathname:i}=Re();return x.jsx("ul",{className:p5,children:n.map(({id:a,level:l,text:s})=>{const u=`#${a}`,d=e===a,c=(()=>{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:h5,children:s})}),c&&x.jsx(dg,{activeId:e,levelItems:c,items:t,onClickItem:r,setActiveId:o})]},a)})})}const g5=["top","right","bottom","left"],Xn=Math.min,_t=Math.max,wl=Math.round,Aa=Math.floor,Jn=e=>({x:e,y:e}),y5={left:"right",right:"left",bottom:"top",top:"bottom"},x5={start:"end",end:"start"};function Su(e,t,n){return _t(e,Xn(t,n))}function xn(e,t){return typeof e=="function"?e(t):e}function _n(e){return e.split("-")[0]}function $o(e){return e.split("-")[1]}function of(e){return e==="x"?"y":"x"}function af(e){return e==="y"?"height":"width"}function Oo(e){return["top","bottom"].includes(_n(e))?"y":"x"}function lf(e){return of(Oo(e))}function _5(e,t,n){n===void 0&&(n=!1);const r=$o(e),o=lf(e),i=af(o);let a=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=El(a)),[a,El(a)]}function w5(e){const t=El(e);return[Tu(e),t,Tu(t)]}function Tu(e){return e.replace(/start|end/g,t=>x5[t])}function E5(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 k5(e,t,n,r){const o=$o(e);let i=E5(_n(e),n==="start",r);return o&&(i=i.map(a=>a+"-"+o),t&&(i=i.concat(i.map(Tu)))),i}function El(e){return e.replace(/left|right|bottom|top/g,t=>y5[t])}function b5(e){return{top:0,right:0,bottom:0,left:0,...e}}function fg(e){return typeof e!="number"?b5(e):{top:e,right:e,bottom:e,left:e}}function kl(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function Dh(e,t,n){let{reference:r,floating:o}=e;const i=Oo(t),a=lf(t),l=af(a),s=_n(t),u=i==="y",d=r.x+r.width/2-o.width/2,c=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:c};break;case"left":h={x:r.x-o.width,y:c};break;default:h={x:r.x,y:r.y}}switch($o(t)){case"start":h[a]-=f*(n&&u?-1:1);break;case"end":h[a]+=f*(n&&u?-1:1);break}return h}const C5=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 u=await a.getElementRects({reference:e,floating:t,strategy:o}),{x:d,y:c}=Dh(u,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:u,padding:d=0}=xn(e,t)||{};if(u==null)return{};const c=fg(d),f={x:n,y:r},h=lf(o),y=af(h),g=await a.getDimensions(u),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(u));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,T=P/2-g[y]/2-1,O=Xn(c[m],T),j=Xn(c[v],T),N=O,F=P-g[y]-j,$=P/2-g[y]/2+A,U=Su(N,$,F),W=!s.arrow&&$o(o)!=null&&$!==U&&i.reference[y]/2-($N<=0)){var T,O;const N=(((T=i.flip)==null?void 0:T.index)||0)+1,F=C[N];if(F)return{data:{index:N,overflows:A},reset:{placement:F}};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(V=>V>0).reduce((V,L)=>V+L,0)]).sort((W,V)=>W[1]-V[1])[0])==null?void 0:j[0];U&&($=U);break}case"initialPlacement":$=l;break}if(o!==$)return{reset:{placement:$}}}return{}}}};function Nh(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Mh(e){return g5.some(t=>e[t]>=0)}const S5=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=xn(e,t);switch(r){case"referenceHidden":{const i=await Ii(t,{...o,elementContext:"reference"}),a=Nh(i,n.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:Mh(a)}}}case"escaped":{const i=await Ii(t,{...o,altBoundary:!0}),a=Nh(i,n.floating);return{data:{escapedOffsets:a,escaped:Mh(a)}}}default:return{}}}}};async function T5(e,t){const{placement:n,platform:r,elements:o}=e,i=await(r.isRTL==null?void 0:r.isRTL(o.floating)),a=_n(n),l=$o(n),s=Oo(n)==="y",u=["left","top"].includes(a)?-1:1,d=i&&s?-1:1,c=xn(t,e);let{mainAxis:f,crossAxis:h,alignmentAxis:y}=typeof c=="number"?{mainAxis:c,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...c};return l&&typeof y=="number"&&(h=l==="end"?y*-1:y),s?{x:h*d,y:f*u}:{x:f*u,y:h*d}}const pg=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 T5(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}}}}},R5=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}=xn(e,t),u={x:n,y:r},d=await Ii(t,s),c=Oo(_n(o)),f=of(c);let h=u[f],y=u[c];if(i){const w=f==="y"?"top":"left",m=f==="y"?"bottom":"right",v=h+d[w],_=h-d[m];h=Su(v,h,_)}if(a){const w=c==="y"?"top":"left",m=c==="y"?"bottom":"right",v=y+d[w],_=y-d[m];y=Su(v,y,_)}const g=l.fn({...t,[f]:h,[c]:y});return{...g,data:{x:g.x-n,y:g.y-r}}}}},$5=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:u=!0}=xn(e,t),d={x:n,y:r},c=Oo(o),f=of(c);let h=d[f],y=d[c];const g=xn(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(u){var m,v;const _=f==="y"?"width":"height",E=["top","left"].includes(_n(o)),C=i.reference[c]-i.floating[_]+(E&&((m=a.offset)==null?void 0:m[c])||0)+(E?0:w.crossAxis),k=i.reference[c]+i.reference[_]+(E?0:((v=a.offset)==null?void 0:v[c])||0)-(E?w.crossAxis:0);yk&&(y=k)}return{[f]:h,[c]:y}}}},O5=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}=xn(e,t),s=await Ii(t,l),u=_n(n),d=$o(n),c=Oo(n)==="y",{width:f,height:h}=r.floating;let y,g;u==="top"||u==="bottom"?(y=u,g=d===(await(o.isRTL==null?void 0:o.isRTL(i.floating))?"start":"end")?"left":"right"):(g=u,y=d==="end"?"top":"bottom");const w=h-s[y],m=f-s[g],v=!t.middlewareData.shift;let _=w,E=m;if(c){const k=f-s.left-s.right;E=d||v?Xn(m,k):k}else{const k=h-s.top-s.bottom;_=d||v?Xn(w,k):k}if(v&&!d){const k=_t(s.left,0),P=_t(s.right,0),A=_t(s.top,0),T=_t(s.bottom,0);c?E=f-2*(k!==0||P!==0?k+P:_t(s.left,s.right)):_=h-2*(A!==0||T!==0?A+T:_t(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 er(e){return hg(e)?(e.nodeName||"").toLowerCase():"#document"}function kt(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Pn(e){var t;return(t=(hg(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function hg(e){return e instanceof Node||e instanceof kt(e).Node}function nt(e){return e instanceof Element||e instanceof kt(e).Element}function an(e){return e instanceof HTMLElement||e instanceof kt(e).HTMLElement}function Ru(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof kt(e).ShadowRoot}function Ki(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=Dt(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function I5(e){return["table","td","th"].includes(er(e))}function sf(e){const t=cf(),n=Dt(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 L5(e){let t=bo(e);for(;an(t)&&!Zl(t);){if(sf(t))return t;t=bo(t)}return null}function cf(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Zl(e){return["html","body","#document"].includes(er(e))}function Dt(e){return kt(e).getComputedStyle(e)}function Xl(e){return nt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function bo(e){if(er(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Ru(e)&&e.host||Pn(e);return Ru(t)?t.host:t}function mg(e){const t=bo(e);return Zl(t)?e.ownerDocument?e.ownerDocument.body:e.body:an(t)&&Ki(t)?t:mg(t)}function Li(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const o=mg(e),i=o===((r=e.ownerDocument)==null?void 0:r.body),a=kt(o);return i?t.concat(a,a.visualViewport||[],Ki(o)?o:[],a.frameElement&&n?Li(a.frameElement):[]):t.concat(o,Li(o,[],n))}function vg(e){const t=Dt(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=an(e),i=o?e.offsetWidth:n,a=o?e.offsetHeight:r,l=wl(n)!==i||wl(r)!==a;return l&&(n=i,r=a),{width:n,height:r,$:l}}function uf(e){return nt(e)?e:e.contextElement}function uo(e){const t=uf(e);if(!an(t))return Jn(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:i}=vg(t);let a=(i?wl(n.width):n.width)/r,l=(i?wl(n.height):n.height)/o;return(!a||!Number.isFinite(a))&&(a=1),(!l||!Number.isFinite(l))&&(l=1),{x:a,y:l}}const D5=Jn(0);function gg(e){const t=kt(e);return!cf()||!t.visualViewport?D5:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function N5(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==kt(e)?!1:t}function Cr(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),i=uf(e);let a=Jn(1);t&&(r?nt(r)&&(a=uo(r)):a=uo(e));const l=N5(i,n,r)?gg(i):Jn(0);let s=(o.left+l.x)/a.x,u=(o.top+l.y)/a.y,d=o.width/a.x,c=o.height/a.y;if(i){const f=kt(i),h=r&&nt(r)?kt(r):r;let y=f,g=y.frameElement;for(;g&&r&&h!==y;){const w=uo(g),m=g.getBoundingClientRect(),v=Dt(g),_=m.left+(g.clientLeft+parseFloat(v.paddingLeft))*w.x,E=m.top+(g.clientTop+parseFloat(v.paddingTop))*w.y;s*=w.x,u*=w.y,d*=w.x,c*=w.y,s+=_,u+=E,y=kt(g),g=y.frameElement}}return kl({width:d,height:c,x:s,y:u})}const M5=[":popover-open",":modal"];function yg(e){return M5.some(t=>{try{return e.matches(t)}catch{return!1}})}function j5(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const i=o==="fixed",a=Pn(r),l=t?yg(t.floating):!1;if(r===a||l&&i)return n;let s={scrollLeft:0,scrollTop:0},u=Jn(1);const d=Jn(0),c=an(r);if((c||!c&&!i)&&((er(r)!=="body"||Ki(a))&&(s=Xl(r)),an(r))){const f=Cr(r);u=uo(r),d.x=f.x+r.clientLeft,d.y=f.y+r.clientTop}return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-s.scrollLeft*u.x+d.x,y:n.y*u.y-s.scrollTop*u.y+d.y}}function F5(e){return Array.from(e.getClientRects())}function xg(e){return Cr(Pn(e)).left+Xl(e).scrollLeft}function z5(e){const t=Pn(e),n=Xl(e),r=e.ownerDocument.body,o=_t(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=_t(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let a=-n.scrollLeft+xg(e);const l=-n.scrollTop;return Dt(r).direction==="rtl"&&(a+=_t(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:a,y:l}}function U5(e,t){const n=kt(e),r=Pn(e),o=n.visualViewport;let i=r.clientWidth,a=r.clientHeight,l=0,s=0;if(o){i=o.width,a=o.height;const u=cf();(!u||u&&t==="fixed")&&(l=o.offsetLeft,s=o.offsetTop)}return{width:i,height:a,x:l,y:s}}function V5(e,t){const n=Cr(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=an(e)?uo(e):Jn(1),a=e.clientWidth*i.x,l=e.clientHeight*i.y,s=o*i.x,u=r*i.y;return{width:a,height:l,x:s,y:u}}function jh(e,t,n){let r;if(t==="viewport")r=U5(e,n);else if(t==="document")r=z5(Pn(e));else if(nt(t))r=V5(t,n);else{const o=gg(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return kl(r)}function _g(e,t){const n=bo(e);return n===t||!nt(n)||Zl(n)?!1:Dt(n).position==="fixed"||_g(n,t)}function B5(e,t){const n=t.get(e);if(n)return n;let r=Li(e,[],!1).filter(l=>nt(l)&&er(l)!=="body"),o=null;const i=Dt(e).position==="fixed";let a=i?bo(e):e;for(;nt(a)&&!Zl(a);){const l=Dt(a),s=sf(a);!s&&l.position==="fixed"&&(o=null),(i?!s&&!o:!s&&l.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||Ki(a)&&!s&&_g(e,a))?r=r.filter(d=>d!==a):o=l,a=bo(a)}return t.set(e,r),r}function H5(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[...n==="clippingAncestors"?B5(t,this._c):[].concat(n),r],l=a[0],s=a.reduce((u,d)=>{const c=jh(t,d,o);return u.top=_t(c.top,u.top),u.right=Xn(c.right,u.right),u.bottom=Xn(c.bottom,u.bottom),u.left=_t(c.left,u.left),u},jh(t,l,o));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function W5(e){const{width:t,height:n}=vg(e);return{width:t,height:n}}function K5(e,t,n){const r=an(t),o=Pn(t),i=n==="fixed",a=Cr(e,!0,i,t);let l={scrollLeft:0,scrollTop:0};const s=Jn(0);if(r||!r&&!i)if((er(t)!=="body"||Ki(o))&&(l=Xl(t)),r){const c=Cr(t,!0,i,t);s.x=c.x+t.clientLeft,s.y=c.y+t.clientTop}else o&&(s.x=xg(o));const u=a.left+l.scrollLeft-s.x,d=a.top+l.scrollTop-s.y;return{x:u,y:d,width:a.width,height:a.height}}function Fh(e,t){return!an(e)||Dt(e).position==="fixed"?null:t?t(e):e.offsetParent}function wg(e,t){const n=kt(e);if(!an(e)||yg(e))return n;let r=Fh(e,t);for(;r&&I5(r)&&Dt(r).position==="static";)r=Fh(r,t);return r&&(er(r)==="html"||er(r)==="body"&&Dt(r).position==="static"&&!sf(r))?n:r||L5(e)||n}const G5=async function(e){const t=this.getOffsetParent||wg,n=this.getDimensions;return{reference:K5(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}};function q5(e){return Dt(e).direction==="rtl"}const Eg={convertOffsetParentRelativeRectToViewportRelativeRect:j5,getDocumentElement:Pn,getClippingRect:H5,getOffsetParent:wg,getElementRects:G5,getClientRects:F5,getDimensions:W5,getScale:uo,isElement:nt,isRTL:q5};function Y5(e,t){let n=null,r;const o=Pn(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:u,top:d,width:c,height:f}=e.getBoundingClientRect();if(l||t(),!c||!f)return;const h=Aa(d),y=Aa(o.clientWidth-(u+c)),g=Aa(o.clientHeight-(d+f)),w=Aa(u),v={rootMargin:-h+"px "+-y+"px "+-g+"px "+-w+"px",threshold:_t(0,Xn(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 Q5(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,u=uf(e),d=o||i?[...u?Li(u):[],...Li(t)]:[];d.forEach(m=>{o&&m.addEventListener("scroll",n,{passive:!0}),i&&m.addEventListener("resize",n)});const c=u&&l?Y5(u,n):null;let f=-1,h=null;a&&(h=new ResizeObserver(m=>{let[v]=m;v&&v.target===u&&h&&(h.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var _;(_=h)==null||_.observe(t)})),n()}),u&&!s&&h.observe(u),h.observe(t));let y,g=s?Cr(e):null;s&&w();function w(){const m=Cr(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)}),c==null||c(),(m=h)==null||m.disconnect(),h=null,s&&cancelAnimationFrame(y)}}const kg=R5,Z5=A5,X5=O5,J5=S5,zh=P5,ek=$5,tk=(e,t,n)=>{const r=new Map,o={platform:Eg,...n},i={...o.platform,_c:r};return C5(e,t,{...o,platform:i})},bg=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?zh({element:r.current,padding:o}).fn(n):{}:r?zh({element:r,padding:o}).fn(n):{}}}};var Ha=typeof document<"u"?p.useLayoutEffect:p.useEffect;function bl(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(!bl(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)&&!bl(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function Cg(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Uh(e,t){const n=Cg(e);return Math.round(t*n)/n}function Vh(e){const t=p.useRef(e);return Ha(()=>{t.current=e}),t}function Pg(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:u}=e,[d,c]=p.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,h]=p.useState(r);bl(f,r)||h(r);const[y,g]=p.useState(null),[w,m]=p.useState(null),v=p.useCallback(V=>{V!==k.current&&(k.current=V,g(V))},[]),_=p.useCallback(V=>{V!==P.current&&(P.current=V,m(V))},[]),E=i||y,C=a||w,k=p.useRef(null),P=p.useRef(null),A=p.useRef(d),T=s!=null,O=Vh(s),j=Vh(o),N=p.useCallback(()=>{if(!k.current||!P.current)return;const V={placement:t,strategy:n,middleware:f};j.current&&(V.platform=j.current),tk(k.current,P.current,V).then(L=>{const z={...L,isPositioned:!0};F.current&&!bl(A.current,z)&&(A.current=z,So.flushSync(()=>{c(z)}))})},[f,t,n,j]);Ha(()=>{u===!1&&A.current.isPositioned&&(A.current.isPositioned=!1,c(V=>({...V,isPositioned:!1})))},[u]);const F=p.useRef(!1);Ha(()=>(F.current=!0,()=>{F.current=!1}),[]),Ha(()=>{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,T]);const $=p.useMemo(()=>({reference:k,floating:P,setReference:v,setFloating:_}),[v,_]),U=p.useMemo(()=>({reference:E,floating:C}),[E,C]),W=p.useMemo(()=>{const V={position:n,left:0,top:0};if(!U.floating)return V;const L=Uh(U.floating,d.x),z=Uh(U.floating,d.y);return l?{...V,transform:"translate("+L+"px, "+z+"px)",...Cg(U.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:L,top:z}},[n,l,U.floating,d.x,d.y]);return p.useMemo(()=>({...d,update:N,refs:$,elements:U,floatingStyles:W}),[d,N,$,U,W])}function nk(e){const[t,n]=p.useState(void 0);return yn(()=>{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,u=Array.isArray(s)?s[0]:s;a=u.inlineSize,l=u.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 Ag="Popper",[Sg,Tg]=kn(Ag),[rk,Rg]=Sg(Ag),ok=e=>{const{__scopePopper:t,children:n}=e,[r,o]=p.useState(null);return p.createElement(rk,{scope:t,anchor:r,onAnchorChange:o},n)},ik="PopperAnchor",ak=p.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...o}=e,i=Rg(ik,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(de.div,q({},o,{ref:l}))}),$g="PopperContent",[lk,kA]=Sg($g),sk=p.forwardRef((e,t)=>{var n,r,o,i,a,l,s,u;const{__scopePopper:d,side:c="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=Rg($g,d),[T,O]=p.useState(null),j=Ue(t,yt=>O(yt)),[N,F]=p.useState(null),$=nk(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,V=c+(h!=="center"?"-"+h:""),L=typeof v=="number"?v:{top:0,right:0,bottom:0,left:0,...v},z=Array.isArray(m)?m:[m],K=z.length>0,J={padding:L,boundary:z.filter(ck),altBoundary:K},{refs:ce,floatingStyles:Ve,placement:ye,isPositioned:$e,middlewareData:xe}=Pg({strategy:"fixed",placement:V,whileElementsMounted:(...yt)=>Q5(...yt,{animationFrame:C==="always"}),elements:{reference:A.anchor},middleware:[pg({mainAxis:f+W,alignmentAxis:y}),w&&kg({mainAxis:!0,crossAxis:!1,limiter:_==="partial"?ek():void 0,...J}),w&&Z5({...J}),X5({...J,apply:({elements:yt,rects:qi,availableWidth:es,availableHeight:ts})=>{const{width:ns,height:rs}=qi.reference,qt=yt.floating.style;qt.setProperty("--radix-popper-available-width",`${es}px`),qt.setProperty("--radix-popper-available-height",`${ts}px`),qt.setProperty("--radix-popper-anchor-width",`${ns}px`),qt.setProperty("--radix-popper-anchor-height",`${rs}px`)}}),N&&bg({element:N,padding:g}),uk({arrowWidth:U,arrowHeight:W}),E&&J5({strategy:"referenceHidden",...J})]}),[Be,_e]=Og(ye),Ce=at(k);yn(()=>{$e&&(Ce==null||Ce())},[$e,Ce]);const Nt=(o=xe.arrow)===null||o===void 0?void 0:o.x,Pe=(i=xe.arrow)===null||i===void 0?void 0:i.y,dt=((a=xe.arrow)===null||a===void 0?void 0:a.centerOffset)!==0,[Gi,Jl]=p.useState();return yn(()=>{T&&Jl(window.getComputedStyle(T).zIndex)},[T]),p.createElement("div",{ref:ce.setFloating,"data-radix-popper-content-wrapper":"",style:{...Ve,transform:$e?Ve.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Gi,"--radix-popper-transform-origin":[(l=xe.transformOrigin)===null||l===void 0?void 0:l.x,(s=xe.transformOrigin)===null||s===void 0?void 0:s.y].join(" ")},dir:e.dir},p.createElement(lk,{scope:d,placedSide:Be,onArrowChange:F,arrowX:Nt,arrowY:Pe,shouldHideArrow:dt},p.createElement(de.div,q({"data-side":Be,"data-align":_e},P,{ref:j,style:{...P.style,animation:$e?void 0:"none",opacity:(u=xe.hide)!==null&&u!==void 0&&u.referenceHidden?0:void 0}}))))});function ck(e){return e!==null}const uk=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,i,a;const{placement:l,rects:s,middlewareData:u}=t,c=((n=u.arrow)===null||n===void 0?void 0:n.centerOffset)!==0,f=c?0:e.arrowWidth,h=c?0:e.arrowHeight,[y,g]=Og(l),w={start:"0%",center:"50%",end:"100%"}[g],m=((r=(o=u.arrow)===null||o===void 0?void 0:o.x)!==null&&r!==void 0?r:0)+f/2,v=((i=(a=u.arrow)===null||a===void 0?void 0:a.y)!==null&&i!==void 0?i:0)+h/2;let _="",E="";return y==="bottom"?(_=c?w:`${m}px`,E=`${-h}px`):y==="top"?(_=c?w:`${m}px`,E=`${s.floating.height+h}px`):y==="right"?(_=`${-h}px`,E=c?w:`${v}px`):y==="left"&&(_=`${s.floating.width+h}px`,E=c?w:`${v}px`),{data:{x:_,y:E}}}});function Og(e){const[t,n="center"]=e.split("-");return[t,n]}const dk=ok,fk=ak,pk=sk,Ig="Popover",[Lg,bA]=kn(Ig,[Tg]),df=Tg(),[hk,Io]=Lg(Ig),mk=e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:a=!1}=e,l=df(t),s=p.useRef(null),[u,d]=p.useState(!1),[c=!1,f]=ar({prop:r,defaultProp:o,onChange:i});return p.createElement(dk,l,p.createElement(hk,{scope:t,contentId:on(),triggerRef:s,open:c,onOpenChange:f,onOpenToggle:p.useCallback(()=>f(h=>!h),[f]),hasCustomAnchor:u,onCustomAnchorAdd:p.useCallback(()=>d(!0),[]),onCustomAnchorRemove:p.useCallback(()=>d(!1),[]),modal:a},n))},vk="PopoverTrigger",gk=p.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,o=Io(vk,n),i=df(n),a=Ue(t,o.triggerRef),l=p.createElement(de.button,q({type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Mg(o.open)},r,{ref:a,onClick:le(e.onClick,o.onOpenToggle)}));return o.hasCustomAnchor?l:p.createElement(fk,q({asChild:!0},i),l)}),Dg="PopoverPortal",[yk,xk]=Lg(Dg,{forceMount:void 0}),_k=e=>{const{__scopePopover:t,forceMount:n,children:r,container:o}=e,i=Io(Dg,t);return p.createElement(yk,{scope:t,forceMount:n},p.createElement(bn,{present:n||i.open},p.createElement(a1,{asChild:!0,container:o},r)))},Di="PopoverContent",wk=p.forwardRef((e,t)=>{const n=xk(Di,e.__scopePopover),{forceMount:r=n.forceMount,...o}=e,i=Io(Di,e.__scopePopover);return p.createElement(bn,{present:r||i.open},i.modal?p.createElement(Ek,q({},o,{ref:t})):p.createElement(kk,q({},o,{ref:t})))}),Ek=p.forwardRef((e,t)=>{const n=Io(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 y1(a)},[]),p.createElement(v1,{as:ko,allowPinchZoom:!0},p.createElement(Ng,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,u=l.button===2||s;i.current=u},{checkForDefaultPrevented:!1}),onFocusOutside:le(e.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})))}),kk=p.forwardRef((e,t)=>{const n=Io(Di,e.__scopePopover),r=p.useRef(!1),o=p.useRef(!1);return p.createElement(Ng,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()}}))}),Ng=p.forwardRef((e,t)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEscapeKeyDown:l,onPointerDownOutside:s,onFocusOutside:u,onInteractOutside:d,...c}=e,f=Io(Di,n),h=df(n);return l1(),p.createElement(o1,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},p.createElement(Wd,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:d,onEscapeKeyDown:l,onPointerDownOutside:s,onFocusOutside:u,onDismiss:()=>f.onOpenChange(!1)},p.createElement(pk,q({"data-state":Mg(f.open),role:"dialog",id:f.contentId},h,c,{ref:t,style:{...c.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 Mg(e){return e?"open":"closed"}const bk=mk,Ck=gk,Pk=_k,Ak=wk;var Sk="vocs_Popover";Vt.Root=bk;Vt.Trigger=Ck;function Vt({children:e,className:t}){return x.jsx(Pk,{children:x.jsx(Ak,{className:D(Sk,t),sideOffset:12,children:e})})}var Tk="vocs_Sidebar_backLink",Rk="vocs_Sidebar_divider",$k="vocs_Sidebar_group",ni="vocs_Sidebar_item",jg="vocs_Sidebar_items",Ok="vocs_Sidebar_level",Ik="vocs_Sidebar_levelCollapsed",Lk="vocs_Sidebar_levelInset",Dk="vocs_Sidebar_logo",Nk="vocs_Sidebar_logoWrapper",Mk="vocs_Sidebar_navigation",jk="vocs_Sidebar",Fg="vocs_Sidebar_section",Fk="vocs_Sidebar_sectionCollapse",zk="vocs_Sidebar_sectionCollapseActive",Uk="vocs_Sidebar_sectionHeader",Vk="vocs_Sidebar_sectionHeaderActive",Bh="vocs_Sidebar_sectionTitle";function zg(){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 Ug(e){const{className:t,onClickItem:n}=e,{previousPath:r}=$r(),o=p.useRef(null),i=Wl(),[a,l]=p.useState("/");if(p.useEffect(()=>{typeof window>"u"||r&&l(r)},[i.key,i.backLink]),!i)return null;const s=Bk(i.items);return x.jsxs("aside",{ref:o,className:D(jk,t),children:[x.jsxs("div",{className:Nk,children:[x.jsx("div",{className:Dk,children:x.jsx(Zn,{to:"/",style:{alignItems:"center",display:"flex",height:"100%"},children:x.jsx(Yd,{})})}),x.jsx("div",{className:Rk})]}),x.jsx("nav",{className:Mk,children:x.jsxs("div",{className:$k,children:[i.backLink&&x.jsx("section",{className:Fg,children:x.jsx("div",{className:jg,children:x.jsxs(Zn,{className:D(ni,Tk),to:a,children:["←"," ",typeof history<"u"&&history.state.key&&a!=="/"?"Back":"Home"]})})}),s.map((u,d)=>x.jsx(Bg,{depth:0,item:u,onClick:n,sidebarRef:o},`${u.text}${d}`))]})})]},i.key)}function Bk(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 Vg(e,t){return e.find(n=>Bl(t,n.link??"")||n.link===t?!0:n.items?Vg(n.items,t):!1)}function Bg(e){const{depth:t,item:n,onClick:r,sidebarRef:o}=e,i=p.useRef(null),{pathname:a}=Re(),l=B2(n.link??""),s=p.useMemo(()=>n.items?!!Vg(n.items,a):!1,[n.items,a]),[u,d]=p.useState(()=>l||!n.items||s?!1:!!n.collapsed),c=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,!Bl(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(Bg,{depth:t+1,item:g,onClick:r,sidebarRef:o},`${g.text}${w}`))})]}):x.jsx(x.Fragment,{children:n.link?x.jsx(Zn,{ref:i,"data-active":!!l,onClick:r,className:ni,to:n.link,children:n.text}):x.jsx("div",{className:ni,children:n.text})})}function Hk(){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 Wk(){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 Kk(){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"})]})}$u.Curtain=Jk;function $u(){var n,r;const e=ot(),{showLogo:t}=Or();return x.jsxs("div",{className:a5,children:[x.jsxs("div",{className:Lh,children:[t&&x.jsx("div",{className:Pa,children:x.jsx("div",{className:e5,children:x.jsx(Zn,{to:"/",style:{alignItems:"center",display:"flex",height:"100%"},children:x.jsx(Yd,{})})})}),e.topNav&&x.jsx(x.Fragment,{children:x.jsxs("div",{className:Pa,children:[x.jsx(Gk,{items:e.topNav}),x.jsx(Yk,{items:e.topNav})]})})]}),x.jsxs("div",{className:Lh,children:[x.jsx("div",{className:Pa,style:{marginRight:"-8px"},children:x.jsx(W3,{})}),e.socials&&((n=e.socials)==null?void 0:n.length)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:Z3}),x.jsx("div",{className:Pa,style:{marginLeft:"-8px"},children:(r=e.socials)==null?void 0:r.map((o,i)=>x.jsx(Xk,{...o},i))})]})]})]})}function Gk({items:e}){const{pathname:t}=Re(),n=Hi({pathname:t,items:e});return x.jsx(B1,{className:cg,children:x.jsx(H1,{children:e.map((r,o)=>r!=null&&r.link?x.jsx(Yl,{active:n==null?void 0:n.includes(r.id),href:r.link,children:r.text},o):x.jsxs(W1,{className:J3,children:[x.jsx(K1,{active:n==null?void 0:n.includes(r.id),children:r.text}),x.jsx(G1,{className:Y3,children:x.jsx(qk,{items:r.items||[]})})]},o))})})}function qk({items:e}){const{pathname:t}=Re(),n=Hi({pathname:t,items:e});return x.jsx("ul",{children:e==null?void 0:e.map((r,o)=>x.jsx(Yl,{active:n.includes(r.id),href:r.link,children:r.text},o))})}function Yk({items:e}){var s;const[t,n]=p.useState(!1),{pathname:r}=Re(),o=Hi({pathname:r,items:e}),i=e.filter(u=>u.id===o[0])[0],{basePath:a}=ot(),l=a;return x.jsx("div",{className:D(cg,o5),children:i?x.jsxs(Vt.Root,{modal:!0,open:t,onOpenChange:n,children:[x.jsxs(Vt.Trigger,{className:D(sg,Yo),children:[i.text,x.jsx(st,{label:"Menu",icon:Hk,size:"11px"})]}),x.jsx(Vt,{className:c5,children:x.jsx(z3,{type:"single",collapsible:!0,style:{display:"flex",flexDirection:"column"},children:e.map((u,d)=>{var c;return u!=null&&u.link?x.jsx(rn,{"data-active":o.includes(u.id),className:Yo,href:u.link,onClick:()=>n(!1),variant:"styleless",children:u.text},d):x.jsxs(U3,{value:d.toString(),children:[x.jsx(V3,{className:D(Yo,r5),"data-active":o.includes(u.id),style:Gt({[G3]:`url(${l}/.vocs/icons/chevron-down.svg)`,[q3]:`url(${l}/.vocs/icons/chevron-up.svg)`}),children:u.text}),x.jsx(B3,{className:n5,children:(c=u.items)==null?void 0:c.map((f,h)=>x.jsx(rn,{className:Yo,href:f.link,onClick:()=>n(!1),variant:"styleless",children:f.text},h))})]},d)})})})]}):(s=e[0])!=null&&s.link?x.jsx(rn,{className:Yo,href:e[0].link,variant:"styleless",children:e[0].text}):null})}const Qk={discord:q1,github:Y1,telegram:Q1,x:Z1},Zk={discord:"21px",github:"18px",telegram:"21px",x:"16px"};function Xk({icon:e,label:t,link:n,type:r}){return x.jsx("a",{className:K3,href:n,target:"_blank",rel:"noopener noreferrer",children:x.jsx(st,{className:X3,label:t,icon:Qk[e],size:Zk[r]||"18px"})})}function Jk({enableScrollToTop:e}){const{pathname:t}=Re(),{layout:n,showSidebar:r}=Or(),{frontmatter:o={}}=$r(),i=Wl(),[a,l]=p.useState(!1),[s,u]=p.useState(!1),d=p.useMemo(()=>{if(!i||n==="minimal")return;const h=Hg({sidebarItems:i.items,pathname:t});return h==null?void 0:h.text},[n,t,i]),c=p.useMemo(()=>{var h;if(!(typeof window>"u"))return(h=document.querySelector(".vocs_Content h1"))==null?void 0:h.textContent},[]),f=d||o.title||c;return x.jsxs("div",{className:Q3,children:[x.jsx("div",{className:Oh,children:x.jsx("div",{className:oc,children:r?x.jsxs(Vt.Root,{modal:!0,open:s,onOpenChange:u,children:[x.jsxs(Vt.Trigger,{className:sg,children:[x.jsx(st,{label:"Menu",icon:Kk,size:"13px"}),x.jsx("div",{className:t5,children:f})]}),x.jsx(Vt,{className:s5,children:x.jsx(Ug,{onClickItem:()=>u(!1)})})]}):f})}),x.jsxs("div",{className:Oh,children:[e&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:oc,children:x.jsxs("button",{className:Ih,onClick:()=>window.scrollTo({behavior:"smooth",top:0}),type:"button",children:["Top",x.jsx(st,{label:"Scroll to top",icon:Wk,size:"10px"})]})}),x.jsx("div",{className:l5})]}),n==="docs"&&x.jsx("div",{className:oc,children:x.jsxs(Vt.Root,{modal:!0,open:a,onOpenChange:l,children:[x.jsxs(Vt.Trigger,{className:Ih,children:["On this page",x.jsx(st,{label:"On this page",icon:zg,size:"10px"})]}),x.jsx(Vt,{className:i5,children:x.jsx(ug,{onClickItem:()=>l(!1),showTitle:!1})})]})})]})]})}function Hg({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=Hg({sidebarItems:r.items,pathname:n});if(o)return o}}}var e6="vocs_SkipLink";const Wg="vocs-content";function t6(){const{pathname:e}=Re();return x.jsx("a",{className:D(e6,t1),href:`${e}#${Wg}`,children:"Skip to content"})}var n6="vocs_DocsLayout_content",r6="vocs_DocsLayout_content_withSidebar",o6="vocs_DocsLayout_content_withTopNav",i6="vocs_DocsLayout_gutterLeft",a6="vocs_DocsLayout_gutterRight",l6="vocs_DocsLayout_gutterRight_withSidebar",s6="vocs_DocsLayout_gutterTop",c6="vocs_DocsLayout_gutterTopCurtain",u6="vocs_DocsLayout_gutterTopCurtain_hidden",d6="vocs_DocsLayout_gutterTopCurtain_withSidebar",f6="vocs_DocsLayout_gutterTop_offsetLeftGutter",p6="vocs_DocsLayout_gutterTop_sticky",h6="vocs_DocsLayout",m6="vocs_DocsLayout_sidebar";function Ou({children:e}){const{banner:t,font:n}=ot(),{frontmatter:r={}}=$r(),{content:o}=r,{layout:i,showOutline:a,showSidebar:l,showTopNav:s}=Or(),{ref:u,inView:d}=Gv({initialInView:!0,rootMargin:"100px 0px 0px 0px"}),[c,f]=_u("banner",!0);return x.jsxs("div",{className:h6,"data-layout":i,style:Gt({[f8]:c?t==null?void 0:t.height:void 0,[qw.default]:n!=null&&n.google?`${n.google}, ${Gw.default}`:void 0}),children:[x.jsx(t6,{}),c&&x.jsx(L8,{hide:()=>f(!1)}),l&&x.jsx("div",{className:i6,children:x.jsx(Ug,{className:m6})}),s&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{ref:u,className:D(s6,l&&f6,(i==="minimal"||i==="landing")&&p6),children:[x.jsx(Pu,{}),x.jsx($u,{})]}),x.jsxs("div",{className:D(c6,l&&d6,(i==="minimal"||i==="landing")&&u6),children:[x.jsx(Pu.Curtain,{}),x.jsx($u.Curtain,{enableScrollToTop:!d})]})]}),a&&x.jsx("div",{className:D(a6,l&&l6),children:x.jsx(ug,{})}),x.jsxs("div",{id:Wg,className:D(n6,l&&r6,s&&o6),style:Gt({[zs.horizontalPadding]:o==null?void 0:o.horizontalPadding,[zs.width]:o==null?void 0:o.width,[zs.verticalPadding]:o==null?void 0:o.verticalPadding}),children:[x.jsx(Xv,{children:e}),x.jsx(p3,{})]}),x.jsx("div",{"data-bottom-observer":!0})]})}const Iu={},Kg=Q.createContext(Iu);function v6(e){const t=Q.useContext(Kg);return Q.useMemo(function(){return typeof e=="function"?e(t):{...t,...e}},[t,e])}function g6(e){let t;return e.disableParentContext?t=typeof e.components=="function"?e.components(Iu):e.components||Iu:t=v6(e.components),Q.createElement(Kg.Provider,{value:t},e.children)}var Gg={exports:{}},y6="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",x6=y6,_6=x6;function qg(){}function Yg(){}Yg.resetWarningCache=qg;var w6=function(){function e(r,o,i,a,l,s){if(s!==_6){var u=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 u.name="Invariant Violation",u}}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:Yg,resetWarningCache:qg};return n.PropTypes=n,n};Gg.exports=w6();var E6=Gg.exports;const Ee=tr(E6);function k6(e){return e&&typeof e=="object"&&"default"in e?e.default:e}var Qg=p,b6=k6(Qg);function Hh(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C6(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var P6=!!(typeof window<"u"&&window.document&&window.document.createElement);function A6(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})),u.canUseDOM?t(l):n&&(l=n(l))}var u=function(d){C6(c,d);function c(){return d.apply(this,arguments)||this}c.peek=function(){return l},c.rewind=function(){if(c.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=c.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 b6.createElement(i,this.props)},c}(Qg.PureComponent);return Hh(u,"displayName","SideEffect("+r(i)+")"),Hh(u,"canUseDOM",P6),u}}var S6=A6;const T6=tr(S6);var R6=typeof Element<"u",$6=typeof Map=="function",O6=typeof Set=="function",I6=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Wa(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(!Wa(e[r],t[r]))return!1;return!0}var i;if($6&&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(!Wa(r.value[1],t.get(r.value[0])))return!1;return!0}if(O6&&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(I6&&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(R6&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((o[r]==="_owner"||o[r]==="__v"||o[r]==="__o")&&e.$$typeof)&&!Wa(e[o[r]],t[o[r]]))return!1;return!0}return e!==e&&t!==t}var L6=function(t,n){try{return Wa(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 D6=tr(L6);/* +*****************************************************/(function(e,t){(function(n,r){e.exports=r()})(Py,function(){var n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(u){return typeof u}:function(u){return u&&typeof Symbol=="function"&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u},r=function(u,d){if(!(u instanceof d))throw new TypeError("Cannot call a class as a function")},o=function(){function u(d,c){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,u),this.ctx=d,this.iframes=c,this.exclude=f,this.iframesTimeout=h}return o(u,[{key:"getContexts",value:function(){var c=void 0,f=[];return typeof this.ctx>"u"||!this.ctx?c=[]:NodeList.prototype.isPrototypeOf(this.ctx)?c=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?c=this.ctx:typeof this.ctx=="string"?c=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):c=[this.ctx],c.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(c,f){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},y=void 0;try{var g=c.contentWindow;if(y=g.document,!g||!y)throw new Error("iframe inaccessible")}catch{h()}y&&f(y)}},{key:"isIframeBlank",value:function(c){var f="about:blank",h=c.getAttribute("src").trim(),y=c.contentWindow.location.href;return y===f&&h!==f&&h}},{key:"observeIframeLoad",value:function(c,f,h){var y=this,g=!1,w=null,m=function v(){if(!g){g=!0,clearTimeout(w);try{y.isIframeBlank(c)||(c.removeEventListener("load",v),y.getIframeContents(c,f,h))}catch{h()}}};c.addEventListener("load",m),w=setTimeout(m,this.iframesTimeout)}},{key:"onIframeReady",value:function(c,f,h){try{c.contentWindow.document.readyState==="complete"?this.isIframeBlank(c)?this.observeIframeLoad(c,f,h):this.getIframeContents(c,f,h):this.observeIframeLoad(c,f,h)}catch{h()}}},{key:"waitForIframes",value:function(c,f){var h=this,y=0;this.forEachIframe(c,function(){return!0},function(g){y++,h.waitForIframes(g.querySelector("html"),function(){--y||f()})},function(g){g||f()})}},{key:"forEachIframe",value:function(c,f,h){var y=this,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},w=c.querySelectorAll("iframe"),m=w.length,v=0;w=Array.prototype.slice.call(w);var _=function(){--m<=0&&g(v)};m||_(),w.forEach(function(E){u.matches(E,y.exclude)?_():y.onIframeReady(E,function(C){f(E)&&(v++,h(C)),_()},_)})}},{key:"createIterator",value:function(c,f,h){return document.createNodeIterator(c,f,h,!1)}},{key:"createInstanceOnIframe",value:function(c){return new u(c.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(c,f,h){var y=c.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(c){var f=c.previousNode(),h=void 0;return f===null?h=c.nextNode():h=c.nextNode()&&c.nextNode(),{prevNode:f,node:h}}},{key:"checkIframeFilter",value:function(c,f,h,y){var g=!1,w=!1;return y.forEach(function(m,v){m.val===h&&(g=v,w=m.handled)}),this.compareNodeIframe(c,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(c,f,h,y){var g=this;c.forEach(function(w){w.handled||g.getIframeContents(w.val,function(m){g.createInstanceOnIframe(m).forEachNode(f,h,y)})})}},{key:"iterateThroughNodes",value:function(c,f,h,y,g){for(var w=this,m=this.createIterator(f,c,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(c,function(A){return _.push(A)},y)}),_.push(E);_.forEach(function(P){h(P)}),this.iframes&&this.handleOpenIframes(v,c,h,y),g()}},{key:"forEachNode",value:function(c,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(c,v,f,h,function(){--m<=0&&g()})};y.iframes?y.waitForIframes(v,_):_()})}}],[{key:"matches",value:function(c,f){var h=typeof f=="string"?[f]:f,y=c.matches||c.matchesSelector||c.msMatchesSelector||c.mozMatchesSelector||c.oMatchesSelector||c.webkitMatchesSelector;if(y){var g=!1;return h.every(function(w){return y.call(c,w)?(g=!0,!1):!0}),g}else return!1}}]),u}(),l=function(){function u(d){r(this,u),this.ctx=d,this.ie=!1;var c=window.navigator.userAgent;(c.indexOf("MSIE")>-1||c.indexOf("Trident")>-1)&&(this.ie=!0)}return o(u,[{key:"log",value:function(c){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: "+c)}},{key:"escapeStr",value:function(c){return c.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(c){return this.opt.wildcards!=="disabled"&&(c=this.setupWildcardsRegExp(c)),c=this.escapeStr(c),Object.keys(this.opt.synonyms).length&&(c=this.createSynonymsRegExp(c)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(c=this.setupIgnoreJoinersRegExp(c)),this.opt.diacritics&&(c=this.createDiacriticsRegExp(c)),c=this.createMergedBlanksRegExp(c),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(c=this.createJoinersRegExp(c)),this.opt.wildcards!=="disabled"&&(c=this.createWildcardsRegExp(c)),c=this.createAccuracyRegExp(c),c}},{key:"createSynonymsRegExp",value:function(c){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!==""&&(c=c.replace(new RegExp("("+this.escapeStr(m)+"|"+this.escapeStr(v)+")","gm"+h),y+("("+this.processSynomyms(m)+"|")+(this.processSynomyms(v)+")")+y))}return c}},{key:"processSynomyms",value:function(c){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(c=this.setupIgnoreJoinersRegExp(c)),c}},{key:"setupWildcardsRegExp",value:function(c){return c=c.replace(/(?:\\)*\?/g,function(f){return f.charAt(0)==="\\"?"?":""}),c.replace(/(?:\\)*\*/g,function(f){return f.charAt(0)==="\\"?"*":""})}},{key:"createWildcardsRegExp",value:function(c){var f=this.opt.wildcards==="withSpaces";return c.replace(/\u0001/g,f?"[\\S\\s]?":"\\S?").replace(/\u0002/g,f?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(c){return c.replace(/[^(|)\\]/g,function(f,h,y){var g=y.charAt(h+1);return/[(|)\\]/.test(g)||g===""?f:f+"\0"})}},{key:"createJoinersRegExp",value:function(c){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?c.split(/\u0000+/).join("["+f.join("")+"]*"):c}},{key:"createDiacriticsRegExp",value:function(c){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 c.split("").forEach(function(g){h.every(function(w){if(w.indexOf(g)!==-1){if(y.indexOf(w)>-1)return!1;c=c.replace(new RegExp("["+w+"]","gm"+f),"["+w+"]"),y.push(w)}return!0})}),c}},{key:"createMergedBlanksRegExp",value:function(c){return c.replace(/[\s]+/gmi,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(c){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"()("+c+")";case"complementary":return m="\\s"+(m||this.escapeStr(h)),"()([^"+m+"]*"+c+"[^"+m+"]*)";case"exactly":return"(^|\\s"+m+")("+c+")(?=$|\\s"+m+")"}}},{key:"getSeparatedKeywords",value:function(c){var f=this,h=[];return c.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(c){return Number(parseFloat(c))==c}},{key:"checkRanges",value:function(c){var f=this;if(!Array.isArray(c)||Object.prototype.toString.call(c[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(c),[];var h=[],y=0;return c.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(c,f){var h=void 0,y=void 0,g=!1;return c&&typeof c.start<"u"?(h=parseInt(c.start,10),y=h+parseInt(c.length,10),this.isNumeric(c.start)&&this.isNumeric(c.length)&&y-f>0&&y-h>0?g=!0:(this.log("Ignoring invalid or overlapping range: "+(""+JSON.stringify(c))),this.opt.noMatch(c))):(this.log("Ignoring invalid range: "+JSON.stringify(c)),this.opt.noMatch(c)),{start:h,end:y,valid:g}}},{key:"checkWhitespaceRanges",value:function(c,f,h){var y=void 0,g=!0,w=h.length,m=f-w,v=parseInt(c.start,10)-m;return v=v>w?w:v,y=v+parseInt(c.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(c)),this.opt.noMatch(c)):h.substring(v,y).replace(/\s+/g,"")===""&&(g=!1,this.log("Skipping whitespace only range: "+JSON.stringify(c)),this.opt.noMatch(c)),{start:v,end:y,valid:g}}},{key:"getTextNodes",value:function(c){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(){c({value:h,nodes:y})})}},{key:"matchesExclude",value:function(c){return a.matches(c,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(c,f,h){var y=this.opt.element?this.opt.element:"mark",g=c.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(c,f,h,y,g){var w=this;c.nodes.every(function(m,v){var _=c.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=c.value.substr(0,m.start),P=c.value.substr(C+m.start);if(m.node=w.wrapRangeInTextNode(m.node,E,C),c.value=k+P,c.nodes.forEach(function(A,T){T>=v&&(c.nodes[T].start>0&&T!==v&&(c.nodes[T].start-=C),c.nodes[T].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(c,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=c.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 _u(e,t){const[n,r]=p.useState();p.useEffect(()=>{const i=T3(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 T3(e){try{const t=localStorage.getItem(e);return typeof t=="string"?JSON.parse(t):void 0}catch{return}}var R3="vocs_Kbd";function L1(e){return x.jsx("kbd",{...e,className:D(e.className,R3)})}var $3="vocs_KeyboardShortcut_kbdGroup",O3="vocs_KeyboardShortcut";function ro(e){const{description:t,keys:n}=e;return x.jsxs("span",{className:O3,children:[t,x.jsx("span",{className:$3,children:n.map(r=>x.jsx(L1,{children:r},r))})]})}var I3="vocs_SearchDialog_content",xh="vocs_SearchDialog_excerpt",L3="vocs_SearchDialog_overlay",D3="vocs_SearchDialog_result",_h="vocs_SearchDialog_resultIcon",N3="vocs_SearchDialog_resultSelected",M3="vocs_SearchDialog_results",j3="vocs_SearchDialog",F3="vocs_SearchDialog_searchBox",z3="vocs_SearchDialog_searchInput",ba="vocs_SearchDialog_searchInputIcon",U3="vocs_SearchDialog_searchInputIconDesktop",V3="vocs_SearchDialog_searchInputIconMobile",B3="vocs_SearchDialog_searchShortcuts",wh="vocs_SearchDialog_title",H3="vocs_SearchDialog_titleIcon",W3="vocs_SearchDialog_titles";function D1(e){const t=Ud(),n=p.useRef(null),r=p.useRef(null),[o,i]=_u("filterText",""),a=S3(o,200),l=O1(),[s,u]=p.useState(-1),[d,c]=p.useState(!1),[f,h]=_u("showDetailView",!0),y=p.useMemo(()=>l?a?(u(0),l.search(a).slice(0,16)):(u(-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 T in A.match)v.add(T);const _=new A3(r.current);_.unmark({done(){_==null||_.markRegExp(K3(v))}});const E=r.current.querySelectorAll(`.${xh}`);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(),u(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}),c(!0);break}case"ArrowUp":{_.preventDefault(),u(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}),c(!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(r3,{children:[x.jsx(o3,{className:L3}),x.jsxs(i3,{onOpenAutoFocus:v=>{n.current&&(v.preventDefault(),n.current.focus()),m()},onCloseAutoFocus:()=>{u(0)},className:j3,"aria-describedby":void 0,children:[x.jsx(a3,{className:t1,children:"Search"}),x.jsxs("form",{className:F3,children:[x.jsx("button",{"aria-label":"Close search dialog",type:"button",onClick:()=>e.onClose(),className:V3,children:x.jsx(E5,{className:ba,height:20,width:20})}),x.jsx(C3,{htmlFor:"search-input",children:x.jsx(Hd,{"aria-label":"Search",className:D(ba,U3),height:20,width:20})}),x.jsx("input",{ref:n,tabIndex:0,className:z3,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(R5,{className:ba,height:20,width:20})}),x.jsx("button",{"aria-label":"Reset search",type:"button",className:ba,onClick:()=>{var v;i(""),(v=n.current)==null||v.focus()},children:"⌫"})]}),x.jsxs("ul",{className:M3,role:y.length?"listbox":void 0,onMouseMove:()=>c(!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(D3,_===s&&N3),"aria-selected":_===s,"aria-label":[...v.titles.filter(C=>!!C),v.title].join(" > "),children:x.jsxs(Fv,{to:v.href,onClick:C=>{C.metaKey||e.onClose()},onMouseEnter:()=>!d&&u(_),onFocus:()=>u(_),children:[x.jsxs("div",{className:W3,children:[v.isPage?x.jsx(S5,{className:_h}):x.jsx("span",{className:_h,children:"#"}),v.titles.filter(C=>!!C).map(C=>x.jsxs("span",{className:wh,children:[x.jsx("span",{dangerouslySetInnerHTML:{__html:C}}),x.jsx(b5,{className:H3})]},C)),x.jsx("span",{className:wh,children:x.jsx("span",{dangerouslySetInnerHTML:{__html:v.title}})})]}),f&&((E=v.text)==null?void 0:E.trim())&&x.jsx("div",{className:xh,children:x.jsx(Xv,{className:I3,children:x.jsx("div",{dangerouslySetInnerHTML:{__html:v.html}})})})]})},v.id)})]}),x.jsxs("div",{className:B3,children:[x.jsx(ro,{description:"Navigate",keys:["↑","↓"]}),x.jsx(ro,{description:"Select",keys:["enter"]}),x.jsx(ro,{description:"Close",keys:["esc"]}),x.jsx(ro,{description:"Reset",keys:["⌘","⌫"]})]})]})]})}function K3(e){return new RegExp([...e].sort((t,n)=>n.length-t.length).map(t=>`(${t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")})`).join("|"),"gi")}function G3(){O1();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(b1,{open:e,onOpenChange:t,children:[x.jsx(C1,{asChild:!0,children:x.jsxs("button",{className:E3,type:"button",children:[x.jsx(Hd,{style:{marginTop:2}}),"Search",x.jsx("div",{className:k3,children:x.jsx("div",{style:{background:"currentColor",transform:"rotate(45deg)",width:1.5,borderRadius:2,height:"100%"}})})]})}),x.jsx(D1,{open:e,onClose:()=>t(!1)})]})}var N1="vocs_DesktopTopNav_button",q3="vocs_DesktopTopNav_content",Y3="vocs_DesktopTopNav_curtain",Eh="vocs_DesktopTopNav_divider",nc="vocs_DesktopTopNav_group",Ca="vocs_DesktopTopNav_hideCompact",wu="vocs_DesktopTopNav_icon",xl="vocs_DesktopTopNav_item",Q3="vocs_DesktopTopNav_logo",Z3="vocs_DesktopTopNav_logoWrapper",X3="vocs_DesktopTopNav",kh="vocs_DesktopTopNav_section",J3="vocs_DesktopTopNav_withLogo",e8="vocs_Icon",Eu="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(e8,e),role:"img",style:{...o,...Gt({[Eu]:r})},children:x.jsx(n,{height:r,width:r})})}var t8="vocs_Logo_logoDark",n8="vocs_Logo_logoLight",rc="vocs_Logo";function r8({className:e}){const{logoUrl:t}=ot();return t?x.jsx(x.Fragment,{children:typeof t=="string"?x.jsx("img",{alt:"Logo",className:D(e,rc),src:t}):x.jsxs(x.Fragment,{children:[x.jsx("img",{alt:"Logo",className:D(e,rc,t8),src:t.dark}),x.jsx("img",{alt:"Logo",className:D(e,rc,n8),src:t.light})]})}):null}var o8="vocs_NavLogo_logoImage",i8="vocs_NavLogo_title";function Yd(){const e=ot();return e.logoUrl?x.jsx(r8,{className:o8}):x.jsx("div",{className:i8,children:e.title})}const a8=p.createContext(void 0);function Gl(e){const t=p.useContext(a8);return e||t||"ltr"}function ql(e){const t=e+"CollectionProvider",[n,r]=kn(t),[o,i]=n(t,{collectionRef:{current:null},itemMap:new Map}),a=h=>{const{scope:y,children:g}=h,w=Q.useRef(null),m=Q.useRef(new Map).current;return Q.createElement(o,{scope:y,itemMap:m,collectionRef:w},g)},l=e+"CollectionSlot",s=Q.forwardRef((h,y)=>{const{scope:g,children:w}=h,m=i(l,g),v=Ue(y,m.collectionRef);return Q.createElement(ko,{ref:v},w)}),u=e+"CollectionItemSlot",d="data-radix-collection-item",c=Q.forwardRef((h,y)=>{const{scope:g,children:w,...m}=h,v=Q.useRef(null),_=Ue(y,v),E=i(u,g);return Q.useEffect(()=>(E.itemMap.set(v,{ref:v,...m}),()=>void E.itemMap.delete(v))),Q.createElement(ko,{[d]:"",ref:_},w)});function f(h){const y=i(e+"CollectionConsumer",h);return Q.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:c},f,r]}function l8(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 s8=p.forwardRef((e,t)=>p.createElement(de.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}}))),c8=s8,Wi="NavigationMenu",[Qd,u8,d8]=ql(Wi),[ku,f8,p8]=ql(Wi),[Zd,_P]=kn(Wi,[d8,p8]),[h8,Ir]=Zd(Wi),[m8,wP]=Zd(Wi),v8=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,onValueChange:o,defaultValue:i,delayDuration:a=200,skipDelayDuration:l=300,orientation:s="horizontal",dir:u,...d}=e,[c,f]=p.useState(null),h=Ue(t,T=>f(T)),y=Gl(u),g=p.useRef(0),w=p.useRef(0),m=p.useRef(0),[v,_]=p.useState(!0),[E="",C]=ar({prop:r,onChange:T=>{const O=T!=="",j=l>0;O?(window.clearTimeout(m.current),j&&_(!1)):(window.clearTimeout(m.current),m.current=window.setTimeout(()=>_(!0),l)),o==null||o(T)},defaultProp:i}),k=p.useCallback(()=>{window.clearTimeout(w.current),w.current=window.setTimeout(()=>C(""),150)},[C]),P=p.useCallback(T=>{window.clearTimeout(w.current),C(T)},[C]),A=p.useCallback(T=>{E===T?window.clearTimeout(w.current):g.current=window.setTimeout(()=>{window.clearTimeout(w.current),C(T)},a)},[E,C,a]);return p.useEffect(()=>()=>{window.clearTimeout(g.current),window.clearTimeout(w.current),window.clearTimeout(m.current)},[]),p.createElement(g8,{scope:n,isRootMenu:!0,value:E,dir:y,orientation:s,rootNavigationMenu:c,onTriggerEnter:T=>{window.clearTimeout(g.current),v?A(T):P(T)},onTriggerLeave:()=>{window.clearTimeout(g.current),k()},onContentEnter:()=>window.clearTimeout(w.current),onContentLeave:k,onItemSelect:T=>{C(O=>O===T?"":T)},onItemDismiss:()=>C("")},p.createElement(de.nav,q({"aria-label":"Main","data-orientation":s,dir:y},d,{ref:h})))}),g8=e=>{const{scope:t,isRootMenu:n,rootNavigationMenu:r,dir:o,orientation:i,children:a,value:l,onItemSelect:s,onItemDismiss:u,onTriggerEnter:d,onTriggerLeave:c,onContentEnter:f,onContentLeave:h}=e,[y,g]=p.useState(null),[w,m]=p.useState(new Map),[v,_]=p.useState(null);return p.createElement(h8,{scope:t,isRootMenu:n,rootNavigationMenu:r,value:l,previousValue:l8(l),baseId:on(),dir:o,orientation:i,viewport:y,onViewportChange:g,indicatorTrack:v,onIndicatorTrackChange:_,onTriggerEnter:at(d),onTriggerLeave:at(c),onContentEnter:at(f),onContentLeave:at(h),onItemSelect:at(s),onItemDismiss:at(u),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(Qd.Provider,{scope:t},p.createElement(m8,{scope:t,items:w},a)))},y8="NavigationMenuList",x8=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Ir(y8,n),i=p.createElement(de.ul,q({"data-orientation":o.orientation},r,{ref:t}));return p.createElement(de.div,{style:{position:"relative"},ref:o.onIndicatorTrackChange},p.createElement(Qd.Slot,{scope:n},o.isRootMenu?p.createElement(j1,{asChild:!0},i):i))}),_8="NavigationMenuItem",[w8,M1]=Zd(_8),E8=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,...o}=e,i=on(),a=r||i||"LEGACY_REACT_AUTO_VALUE",l=p.useRef(null),s=p.useRef(null),u=p.useRef(null),d=p.useRef(()=>{}),c=p.useRef(!1),f=p.useCallback((y="start")=>{if(l.current){d.current();const g=bu(l.current);g.length&&Xd(y==="start"?g:g.reverse())}},[]),h=p.useCallback(()=>{if(l.current){const y=bu(l.current);y.length&&(d.current=R8(y))}},[]);return p.createElement(w8,{scope:n,value:a,triggerRef:s,contentRef:l,focusProxyRef:u,wasEscapeCloseRef:c,onEntryKeyDown:f,onFocusProxyEnter:f,onRootContentClose:h,onContentFocusOutside:h},p.createElement(de.li,q({},o,{ref:t})))}),bh="NavigationMenuTrigger",k8=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,disabled:r,...o}=e,i=Ir(bh,e.__scopeNavigationMenu),a=M1(bh,e.__scopeNavigationMenu),l=p.useRef(null),s=Ue(l,a.triggerRef,t),u=U1(i.baseId,a.value),d=V1(i.baseId,a.value),c=p.useRef(!1),f=p.useRef(!1),h=a.value===i.value;return p.createElement(p.Fragment,null,p.createElement(Qd.ItemSlot,{scope:n,value:a.value},p.createElement(F1,{asChild:!0},p.createElement(de.button,q({id:u,disabled:r,"data-disabled":r?"":void 0,"data-state":z1(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,Cu(()=>{r||f.current||a.wasEscapeCloseRef.current||c.current||(i.onTriggerEnter(a.value),c.current=!0)})),onPointerLeave:le(e.onPointerLeave,Cu(()=>{r||(i.onTriggerLeave(),c.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(c8,{"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})))}),Ch="navigationMenu.linkSelect",b8=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,active:r,onSelect:o,...i}=e;return p.createElement(F1,{asChild:!0},p.createElement(de.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(Ch,{bubbles:!0,cancelable:!0});if(l.addEventListener(Ch,u=>o==null?void 0:o(u),{once:!0}),pu(l,s),!s.defaultPrevented&&!a.metaKey){const u=new CustomEvent(Ba,{bubbles:!0,cancelable:!0});pu(l,u)}},{checkForDefaultPrevented:!1})})))}),_l="NavigationMenuContent",C8=p.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Ir(_l,e.__scopeNavigationMenu),i=M1(_l,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(P8,q({forceMount:n},s,{ref:a})):p.createElement(bn,{present:n||l},p.createElement(A8,q({"data-state":z1(l)},s,{ref:a,onPointerEnter:le(e.onPointerEnter,o.onContentEnter),onPointerLeave:le(e.onPointerLeave,Cu(o.onContentLeave)),style:{pointerEvents:!l&&o.isRootMenu?"none":void 0,...s.style}})))}),P8=p.forwardRef((e,t)=>{const n=Ir(_l,e.__scopeNavigationMenu),{onViewportContentChange:r,onViewportContentRemove:o}=n;return yn(()=>{r(e.value,{ref:t,...e})},[e,t,r]),yn(()=>()=>o(e.value),[e.value,o]),null}),Ba="navigationMenu.rootContentDismiss",A8=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,triggerRef:o,focusProxyRef:i,wasEscapeCloseRef:a,onRootContentClose:l,onContentFocusOutside:s,...u}=e,d=Ir(_l,n),c=p.useRef(null),f=Ue(c,t),h=U1(d.baseId,r),y=V1(d.baseId,r),g=u8(n),w=p.useRef(null),{onItemDismiss:m}=d;p.useEffect(()=>{const _=c.current;if(d.isRootMenu&&_){const E=()=>{var C;m(),l(),_.contains(document.activeElement)&&((C=o.current)===null||C===void 0||C.focus())};return _.addEventListener(Ba,E),()=>_.removeEventListener(Ba,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 T=(()=>{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=T,T},[d.previousValue,d.value,d.dir,g,r]);return p.createElement(j1,{asChild:!0},p.createElement(Wd,q({id:y,"aria-labelledby":h,"data-motion":v,"data-orientation":d.orientation},u,{ref:f,onDismiss:()=>{var _;const E=new Event(Ba,{bubbles:!0,cancelable:!0});(_=c.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 T;return(T=A.ref.current)===null||T===void 0?void 0:T.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=bu(_.currentTarget),A=document.activeElement,T=P.findIndex(N=>N===A),j=_.shiftKey?P.slice(0,T).reverse():P.slice(T+1,P.length);if(Xd(j))_.preventDefault();else{var k;(k=i.current)===null||k===void 0||k.focus()}}}),onEscapeKeyDown:le(e.onEscapeKeyDown,_=>{a.current=!0})})))}),S8="FocusGroup",j1=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Ir(S8,n);return p.createElement(ku.Provider,{scope:n},p.createElement(ku.Slot,{scope:n},p.createElement(de.div,q({dir:o.dir},r,{ref:t}))))}),Ph=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"],T8="FocusGroupItem",F1=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=f8(n),i=Ir(T8,n);return p.createElement(ku.ItemSlot,{scope:n},p.createElement(de.button,q({},r,{ref:t,onKeyDown:le(e.onKeyDown,a=>{if(["Home","End",...Ph].includes(a.key)){let s=o().map(c=>c.ref.current);if([i.dir==="rtl"?"ArrowRight":"ArrowLeft","ArrowUp","End"].includes(a.key)&&s.reverse(),Ph.includes(a.key)){const c=s.indexOf(a.currentTarget);s=s.slice(c+1)}setTimeout(()=>Xd(s)),a.preventDefault()}})})))});function bu(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 Xd(e){const t=document.activeElement;return e.some(n=>n===t?!0:(n.focus(),document.activeElement!==t))}function R8(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 z1(e){return e?"open":"closed"}function U1(e,t){return`${e}-trigger-${t}`}function V1(e,t){return`${e}-content-${t}`}function Cu(e){return t=>t.pointerType==="mouse"?e(t):void 0}const $8=v8,O8=x8,I8=E8,L8=k8,D8=b8,N8=C8;var M8="var(--vocs_NavigationMenu_chevronDownIcon)",j8="vocs_NavigationMenu_content",F8="vocs_NavigationMenu_item",z8="vocs_NavigationMenu_link",U8="vocs_NavigationMenu_list",V8="vocs_NavigationMenu",B8="vocs_NavigationMenu_trigger vocs_NavigationMenu_link";const B1=e=>x.jsx($8,{...e,className:D(e.className,V8)}),H1=e=>x.jsx(O8,{...e,className:D(e.className,U8)}),Yl=({active:e,children:t,className:n,href:r})=>x.jsx(D8,{asChild:!0,children:x.jsx(rn,{"data-active":e,className:D(n,z8),href:r,variant:"styleless",children:t})}),W1=e=>x.jsx(I8,{...e,className:D(e.className,F8)}),K1=({active:e,className:t,...n})=>{const{basePath:r}=ot(),o=r;return x.jsx(L8,{...n,"data-active":e,className:D(t,B8),style:Gt({[M8]:`url(${o}/.vocs/icons/chevron-down.svg)`})})},G1=e=>x.jsx(N8,{...e,className:D(e.className,j8)});function q1(){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 Y1(){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 H8(){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 W8(){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 Q1(){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 Z1(){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"})]})}Pu.Curtain=K8;function Pu(){var r,o,i,a;const e=ot(),{showLogo:t,showSidebar:n}=Or();return x.jsxs("div",{className:D(X3,t&&!n&&J3),children:[x.jsx(G3,{}),t&&x.jsx("div",{className:Z3,children:x.jsx("div",{className:Q3,children:x.jsx(Zn,{to:"/",style:{alignItems:"center",display:"flex",height:"56px",marginTop:"4px"},children:x.jsx(Yd,{})})})}),x.jsx("div",{className:kh}),x.jsxs("div",{className:kh,children:[(((r=e.topNav)==null?void 0:r.length)||0)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:nc,children:x.jsx(G8,{})}),x.jsx("div",{className:D(Eh,Ca)})]}),e.socials&&((o=e.socials)==null?void 0:o.length)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:D(nc,Ca),style:{marginLeft:"-8px",marginRight:"-8px"},children:e.socials.map((l,s)=>x.jsx("div",{className:xl,children:x.jsx(X8,{...l})},s))}),!((i=e.theme)!=null&&i.colorScheme)&&x.jsx("div",{className:D(Eh,Ca)})]}),!((a=e.theme)!=null&&a.colorScheme)&&x.jsx("div",{className:D(nc,Ca),style:{marginLeft:"-8px",marginRight:"-8px"},children:x.jsx("div",{className:xl,children:x.jsx(Y8,{})})})]})]})}function K8(){return x.jsx("div",{className:Y3})}function G8(){const{topNav:e}=ot();if(!e)return null;const{pathname:t}=Re(),n=Hi({pathname:t,items:e});return x.jsx(B1,{delayDuration:0,children:x.jsx(H1,{children:e.map((r,o)=>r.link?x.jsx(Yl,{active:n.includes(r.id),className:xl,href:r.link,children:r.text},o):r.items?x.jsxs(W1,{className:xl,children:[x.jsx(K1,{active:n.includes(r.id),children:r.text}),x.jsx(G1,{className:q3,children:x.jsx(q8,{items:r.items})})]},o):null)})})}function q8({items:e}){const{pathname:t}=Re(),n=Hi({pathname:t,items:e});return x.jsx("ul",{children:e==null?void 0:e.map((r,o)=>x.jsx(Yl,{active:n.includes(r.id),href:r.link,children:r.text},o))})}function Y8(){const{toggle:e}=N5();return x.jsxs("button",{className:N1,onClick:e,type:"button",children:[x.jsx(st,{className:D(wu,M5),size:"20px",label:"Light",icon:W8}),x.jsx(st,{className:D(wu,j5),size:"20px",label:"Dark",icon:H8,style:{marginTop:"-2px"}})]})}const Q8={discord:q1,github:Y1,telegram:Q1,x:Z1},Z8={discord:"23px",github:"20px",telegram:"21px",x:"18px"};function X8({icon:e,label:t,link:n}){return x.jsx("a",{className:N1,href:n,target:"_blank",rel:"noopener noreferrer",children:x.jsx(st,{className:wu,label:t,icon:Q8[e],size:Z8[e]||"20px"})})}function J8(){return x.jsx("div",{})}const e7=({children:e})=>e;function t7(){const e=$r(),t=ot();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 X1(){const[e,t]=p.useState(!1);return p.useEffect(()=>{t(!0)},[]),e}var n7="vocs_Footer_container",r7="vocs_Footer_editLink",o7="vocs_Footer_lastUpdated",i7="vocs_Footer_navigation",Ah="vocs_Footer_navigationIcon",a7="vocs_Footer_navigationIcon_left",l7="vocs_Footer_navigationIcon_right",Sh="vocs_Footer_navigationItem",s7="vocs_Footer_navigationItem_left",c7="vocs_Footer_navigationItem_right",Th="vocs_Footer_navigationText",Rh="vocs_Footer_navigationTextInner",u7="vocs_Footer";function d7(){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 f7(){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 p7(){const{layout:e}=Or(),t=X1(),n=$r(),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:u7,children:[e==="docs"&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{className:n7,children:[x.jsx(h7,{}),t&&n.lastUpdatedAt&&x.jsxs("div",{className:o7,children:["Last updated:"," ",x.jsx("time",{dateTime:o,children:new Intl.DateTimeFormat(void 0,{dateStyle:"short",timeStyle:"short"}).format(r)})]})]}),x.jsx(m7,{})]}),x.jsx(J8,{})]})}function h7(){const e=t7();return e.url?x.jsx("div",{children:x.jsxs(rn,{className:r7,href:e.url,children:[x.jsx(I5,{})," ",e.text]})}):null}function m7(){const e=X1(),t=Wl(),{pathname:n}=Re(),r=p.useMemo(()=>J1(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=Ud();return p.useEffect(()=>{let s=o,u=!1;const d=f=>{if(f.code==="ShiftLeft"&&(u=!0),u){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--)}},c=f=>{f.code==="ShiftLeft"&&(u=!1)};return window.addEventListener("keydown",d),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",d),window.removeEventListener("keyup",c)}},[]),e?x.jsxs("div",{className:i7,children:[i?x.jsxs(rn,{className:D(Sh,s7),href:i.link,variant:"styleless",children:[x.jsxs("div",{className:Th,children:[x.jsx("div",{className:D(Ah,a7),style:Gt({[Eu]:"0.75em"}),children:x.jsx(st,{label:"Previous",icon:d7})}),x.jsx("div",{className:Rh,children:i.text})]}),x.jsx(ro,{description:"Previous",keys:["shift","←"]})]}):x.jsx("div",{}),a?x.jsxs(rn,{className:D(Sh,c7),href:a.link,variant:"styleless",children:[x.jsxs("div",{className:Th,children:[x.jsx("div",{className:Rh,style:{textAlign:"right"},children:a.text}),x.jsx("div",{className:D(Ah,l7),style:Gt({[Eu]:"0.75em"}),children:x.jsx(st,{label:"Next",icon:f7})})]}),x.jsx(ro,{description:"Next",keys:["shift","→"]})]}):x.jsx("div",{})]}):null}function J1(e){const t=[];for(const n of e){if(n.items){t.push(...J1(n.items));continue}t.push(n)}return t}const eg="Collapsible",[v7,tg]=kn(eg),[g7,Jd]=v7(eg),y7=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,open:r,defaultOpen:o,disabled:i,onOpenChange:a,...l}=e,[s=!1,u]=ar({prop:r,defaultProp:o,onChange:a});return p.createElement(g7,{scope:n,disabled:i,contentId:on(),open:s,onOpenToggle:p.useCallback(()=>u(d=>!d),[u])},p.createElement(de.div,q({"data-state":ef(s),"data-disabled":i?"":void 0},l,{ref:t})))}),x7="CollapsibleTrigger",_7=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,...r}=e,o=Jd(x7,n);return p.createElement(de.button,q({type:"button","aria-controls":o.contentId,"aria-expanded":o.open||!1,"data-state":ef(o.open),"data-disabled":o.disabled?"":void 0,disabled:o.disabled},r,{ref:t,onClick:le(e.onClick,o.onOpenToggle)}))}),ng="CollapsibleContent",w7=p.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Jd(ng,e.__scopeCollapsible);return p.createElement(bn,{present:n||o.open},({present:i})=>p.createElement(E7,q({},r,{ref:t,present:i})))}),E7=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,present:r,children:o,...i}=e,a=Jd(ng,n),[l,s]=p.useState(r),u=p.useRef(null),d=Ue(t,u),c=p.useRef(0),f=c.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)},[]),yn(()=>{const v=u.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();c.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(de.div,q({"data-state":ef(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 ef(e){return e?"open":"closed"}const k7=y7,b7=_7,C7=w7,Lr="Accordion",P7=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[tf,A7,S7]=ql(Lr),[Ql,EP]=kn(Lr,[S7,tg]),nf=tg(),rg=Q.forwardRef((e,t)=>{const{type:n,...r}=e,o=r,i=r;return Q.createElement(tf.Provider,{scope:e.__scopeAccordion},n==="multiple"?Q.createElement(O7,q({},i,{ref:t})):Q.createElement($7,q({},o,{ref:t})))});rg.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[og,T7]=Ql(Lr),[ig,R7]=Ql(Lr,{collapsible:!1}),$7=Q.forwardRef((e,t)=>{const{value:n,defaultValue:r,onValueChange:o=()=>{},collapsible:i=!1,...a}=e,[l,s]=ar({prop:n,defaultProp:r,onChange:o});return Q.createElement(og,{scope:e.__scopeAccordion,value:l?[l]:[],onItemOpen:s,onItemClose:Q.useCallback(()=>i&&s(""),[i,s])},Q.createElement(ig,{scope:e.__scopeAccordion,collapsible:i},Q.createElement(ag,q({},a,{ref:t}))))}),O7=Q.forwardRef((e,t)=>{const{value:n,defaultValue:r,onValueChange:o=()=>{},...i}=e,[a=[],l]=ar({prop:n,defaultProp:r,onChange:o}),s=Q.useCallback(d=>l((c=[])=>[...c,d]),[l]),u=Q.useCallback(d=>l((c=[])=>c.filter(f=>f!==d)),[l]);return Q.createElement(og,{scope:e.__scopeAccordion,value:a,onItemOpen:s,onItemClose:u},Q.createElement(ig,{scope:e.__scopeAccordion,collapsible:!0},Q.createElement(ag,q({},i,{ref:t}))))}),[I7,rf]=Ql(Lr),ag=Q.forwardRef((e,t)=>{const{__scopeAccordion:n,disabled:r,dir:o,orientation:i="vertical",...a}=e,l=Q.useRef(null),s=Ue(l,t),u=A7(n),c=Gl(o)==="ltr",f=le(e.onKeyDown,h=>{var y;if(!P7.includes(h.key))return;const g=h.target,w=u().filter(T=>{var O;return!((O=T.ref.current)!==null&&O!==void 0&&O.disabled)}),m=w.findIndex(T=>T.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=rf(Au,n),a=T7(Au,n),l=nf(n),s=on(),u=r&&a.value.includes(r)||!1,d=i.disabled||e.disabled;return Q.createElement(L7,{scope:n,open:u,disabled:d,triggerId:s},Q.createElement(k7,q({"data-orientation":i.orientation,"data-state":F7(u)},l,o,{ref:t,disabled:d,open:u,onOpenChange:c=>{c?a.onItemOpen(r):a.onItemClose(r)}})))}),$h="AccordionTrigger",N7=Q.forwardRef((e,t)=>{const{__scopeAccordion:n,...r}=e,o=rf(Lr,n),i=lg($h,n),a=R7($h,n),l=nf(n);return Q.createElement(tf.ItemSlot,{scope:n},Q.createElement(b7,q({"aria-disabled":i.open&&!a.collapsible||void 0,"data-orientation":o.orientation,id:i.triggerId},l,r,{ref:t})))}),M7="AccordionContent",j7=Q.forwardRef((e,t)=>{const{__scopeAccordion:n,...r}=e,o=rf(Lr,n),i=lg(M7,n),a=nf(n);return Q.createElement(C7,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 F7(e){return e?"open":"closed"}const z7=rg,U7=D7,V7=N7,B7=j7;var H7="vocs_MobileSearch_searchButton";function W7(){const[e,t]=p.useState(!1);return x.jsxs(b1,{open:e,onOpenChange:t,children:[x.jsx(C1,{asChild:!0,children:x.jsx("button",{className:H7,type:"button","aria-label":"Search",children:x.jsx(Hd,{height:21,width:21})})}),x.jsx(D1,{open:e,onClose:()=>t(!1)})]})}var K7="vocs_MobileTopNav_button",G7="var(--vocs_MobileTopNav_chevronDownIcon)",q7="var(--vocs_MobileTopNav_chevronUpIcon)",Y7="vocs_MobileTopNav_content",Q7="vocs_MobileTopNav_curtain",Oh="vocs_MobileTopNav_curtainGroup",oc="vocs_MobileTopNav_curtainItem",Z7="vocs_MobileTopNav_divider",Pa="vocs_MobileTopNav_group",X7="vocs_MobileTopNav_icon",J7="vocs_MobileTopNav_item",e4="vocs_MobileTopNav_logo",t4="vocs_MobileTopNav_menuTitle",sg="vocs_MobileTopNav_menuTrigger",cg="vocs_MobileTopNav_navigation",n4="vocs_MobileTopNav_navigationContent",Yo="vocs_MobileTopNav_navigationItem",r4="vocs_MobileTopNav_trigger",o4="vocs_MobileTopNav_navigation_compact",i4="vocs_MobileTopNav_outlinePopover",Ih="vocs_MobileTopNav_outlineTrigger",a4="vocs_MobileTopNav",Lh="vocs_MobileTopNav_section",l4="vocs_MobileTopNav_separator",s4="vocs_MobileTopNav_sidebarPopover",c4="vocs_MobileTopNav_topNavPopover";function u4(e,t){let n=!1;return()=>{n=!0,setTimeout(()=>{n&&e(),n=!1},t)}}var d4="vocs_Outline_heading",f4="vocs_Outline_item",p4="vocs_Outline_items",h4="vocs_Outline_link",m4="vocs_Outline_nav",v4="vocs_Outline";function ug({minLevel:e=2,maxLevel:t=3,highlightActive:n=!0,onClickItem:r,showTitle:o=!0}={}){const{showOutline:i}=Or(),a=typeof i=="number"?e+i-1:t,l=p.useRef(!0),{pathname:s,hash:u}=Re(),[d,c]=p.useState([]);p.useEffect(()=>{if(typeof window>"u")return;const w=Array.from(document.querySelectorAll(`.${qv}`));c(w)},[s]);const f=p.useMemo(()=>d?d.map(w=>{const m=w.querySelector(`.${Yv}`);if(!m)return null;const v=m.getBoundingClientRect(),_=m.id,E=Number(w.tagName[1]),C=w.textContent,k=window.scrollY+v.top;return Ea?null:{id:_,level:E,slugTargetElement:m,text:C,topOffset:k}}).filter(Boolean):[],[d,a,e]),[h,y]=p.useState(u.replace("#",""));if(p.useEffect(()=>{if(typeof window>"u")return;const w=new IntersectionObserver(([m])=>{var _;if(!l.current)return;const v=m.target.id;if(m.isIntersecting)y(v);else{if(!(m.target.getBoundingClientRect().top>0))return;const k=f.findIndex(A=>A.id===h),P=(_=f[k-1])==null?void 0:_.id;y(P)}},{rootMargin:"0px 0px -95% 0px"});for(const m of f)w.observe(m.slugTargetElement);return()=>w.disconnect()},[h,f]),p.useEffect(()=>{if(typeof window>"u")return;const w=new IntersectionObserver(([m])=>{var _;if(!l.current)return;const v=(_=f[f.length-1])==null?void 0:_.id;m.isIntersecting?y(v):h===v&&y(f[f.length-2].id)});return w.observe(document.querySelector("[data-bottom-observer]")),()=>w.disconnect()},[h,f]),p.useEffect(()=>{if(typeof window>"u")return;const w=u4(()=>{var m,v,_;if(l.current){if(window.scrollY===0){y((m=f[0])==null?void 0:m.id);return}if(window.scrollY+document.documentElement.clientHeight>=document.documentElement.scrollHeight){y((v=f[f.length-1])==null?void 0:v.id);return}for(let E=0;Ewindow.removeEventListener("scroll",w)},[f]),f.length===0)return null;const g=f.filter(w=>w.level===e);return x.jsx("aside",{className:v4,children:x.jsxs("nav",{className:m4,children:[o&&x.jsx("h2",{className:d4,children:"On this page"}),x.jsx(dg,{activeId:n?h:null,items:f,onClickItem:()=>{r==null||r(),l.current=!1,setTimeout(()=>{l.current=!0},500)},levelItems:g,setActiveId:y})]})})}function dg({activeId:e,items:t,levelItems:n,onClickItem:r,setActiveId:o}){const{pathname:i}=Re();return x.jsx("ul",{className:p4,children:n.map(({id:a,level:l,text:s})=>{const u=`#${a}`,d=e===a,c=(()=>{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:h4,children:s})}),c&&x.jsx(dg,{activeId:e,levelItems:c,items:t,onClickItem:r,setActiveId:o})]},a)})})}const g4=["top","right","bottom","left"],Xn=Math.min,_t=Math.max,wl=Math.round,Aa=Math.floor,Jn=e=>({x:e,y:e}),y4={left:"right",right:"left",bottom:"top",top:"bottom"},x4={start:"end",end:"start"};function Su(e,t,n){return _t(e,Xn(t,n))}function xn(e,t){return typeof e=="function"?e(t):e}function _n(e){return e.split("-")[0]}function $o(e){return e.split("-")[1]}function of(e){return e==="x"?"y":"x"}function af(e){return e==="y"?"height":"width"}function Oo(e){return["top","bottom"].includes(_n(e))?"y":"x"}function lf(e){return of(Oo(e))}function _4(e,t,n){n===void 0&&(n=!1);const r=$o(e),o=lf(e),i=af(o);let a=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=El(a)),[a,El(a)]}function w4(e){const t=El(e);return[Tu(e),t,Tu(t)]}function Tu(e){return e.replace(/start|end/g,t=>x4[t])}function E4(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 k4(e,t,n,r){const o=$o(e);let i=E4(_n(e),n==="start",r);return o&&(i=i.map(a=>a+"-"+o),t&&(i=i.concat(i.map(Tu)))),i}function El(e){return e.replace(/left|right|bottom|top/g,t=>y4[t])}function b4(e){return{top:0,right:0,bottom:0,left:0,...e}}function fg(e){return typeof e!="number"?b4(e):{top:e,right:e,bottom:e,left:e}}function kl(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function Dh(e,t,n){let{reference:r,floating:o}=e;const i=Oo(t),a=lf(t),l=af(a),s=_n(t),u=i==="y",d=r.x+r.width/2-o.width/2,c=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:c};break;case"left":h={x:r.x-o.width,y:c};break;default:h={x:r.x,y:r.y}}switch($o(t)){case"start":h[a]-=f*(n&&u?-1:1);break;case"end":h[a]+=f*(n&&u?-1:1);break}return h}const C4=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 u=await a.getElementRects({reference:e,floating:t,strategy:o}),{x:d,y:c}=Dh(u,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:u,padding:d=0}=xn(e,t)||{};if(u==null)return{};const c=fg(d),f={x:n,y:r},h=lf(o),y=af(h),g=await a.getDimensions(u),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(u));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,T=P/2-g[y]/2-1,O=Xn(c[m],T),j=Xn(c[v],T),N=O,F=P-g[y]-j,$=P/2-g[y]/2+A,U=Su(N,$,F),W=!s.arrow&&$o(o)!=null&&$!==U&&i.reference[y]/2-($N<=0)){var T,O;const N=(((T=i.flip)==null?void 0:T.index)||0)+1,F=C[N];if(F)return{data:{index:N,overflows:A},reset:{placement:F}};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(V=>V>0).reduce((V,L)=>V+L,0)]).sort((W,V)=>W[1]-V[1])[0])==null?void 0:j[0];U&&($=U);break}case"initialPlacement":$=l;break}if(o!==$)return{reset:{placement:$}}}return{}}}};function Nh(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Mh(e){return g4.some(t=>e[t]>=0)}const S4=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=xn(e,t);switch(r){case"referenceHidden":{const i=await Ii(t,{...o,elementContext:"reference"}),a=Nh(i,n.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:Mh(a)}}}case"escaped":{const i=await Ii(t,{...o,altBoundary:!0}),a=Nh(i,n.floating);return{data:{escapedOffsets:a,escaped:Mh(a)}}}default:return{}}}}};async function T4(e,t){const{placement:n,platform:r,elements:o}=e,i=await(r.isRTL==null?void 0:r.isRTL(o.floating)),a=_n(n),l=$o(n),s=Oo(n)==="y",u=["left","top"].includes(a)?-1:1,d=i&&s?-1:1,c=xn(t,e);let{mainAxis:f,crossAxis:h,alignmentAxis:y}=typeof c=="number"?{mainAxis:c,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...c};return l&&typeof y=="number"&&(h=l==="end"?y*-1:y),s?{x:h*d,y:f*u}:{x:f*u,y:h*d}}const pg=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 T4(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}}}}},R4=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}=xn(e,t),u={x:n,y:r},d=await Ii(t,s),c=Oo(_n(o)),f=of(c);let h=u[f],y=u[c];if(i){const w=f==="y"?"top":"left",m=f==="y"?"bottom":"right",v=h+d[w],_=h-d[m];h=Su(v,h,_)}if(a){const w=c==="y"?"top":"left",m=c==="y"?"bottom":"right",v=y+d[w],_=y-d[m];y=Su(v,y,_)}const g=l.fn({...t,[f]:h,[c]:y});return{...g,data:{x:g.x-n,y:g.y-r}}}}},$4=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:u=!0}=xn(e,t),d={x:n,y:r},c=Oo(o),f=of(c);let h=d[f],y=d[c];const g=xn(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(u){var m,v;const _=f==="y"?"width":"height",E=["top","left"].includes(_n(o)),C=i.reference[c]-i.floating[_]+(E&&((m=a.offset)==null?void 0:m[c])||0)+(E?0:w.crossAxis),k=i.reference[c]+i.reference[_]+(E?0:((v=a.offset)==null?void 0:v[c])||0)-(E?w.crossAxis:0);yk&&(y=k)}return{[f]:h,[c]:y}}}},O4=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}=xn(e,t),s=await Ii(t,l),u=_n(n),d=$o(n),c=Oo(n)==="y",{width:f,height:h}=r.floating;let y,g;u==="top"||u==="bottom"?(y=u,g=d===(await(o.isRTL==null?void 0:o.isRTL(i.floating))?"start":"end")?"left":"right"):(g=u,y=d==="end"?"top":"bottom");const w=h-s[y],m=f-s[g],v=!t.middlewareData.shift;let _=w,E=m;if(c){const k=f-s.left-s.right;E=d||v?Xn(m,k):k}else{const k=h-s.top-s.bottom;_=d||v?Xn(w,k):k}if(v&&!d){const k=_t(s.left,0),P=_t(s.right,0),A=_t(s.top,0),T=_t(s.bottom,0);c?E=f-2*(k!==0||P!==0?k+P:_t(s.left,s.right)):_=h-2*(A!==0||T!==0?A+T:_t(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 er(e){return hg(e)?(e.nodeName||"").toLowerCase():"#document"}function kt(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Pn(e){var t;return(t=(hg(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function hg(e){return e instanceof Node||e instanceof kt(e).Node}function nt(e){return e instanceof Element||e instanceof kt(e).Element}function an(e){return e instanceof HTMLElement||e instanceof kt(e).HTMLElement}function Ru(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof kt(e).ShadowRoot}function Ki(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=Dt(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function I4(e){return["table","td","th"].includes(er(e))}function sf(e){const t=cf(),n=Dt(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 L4(e){let t=bo(e);for(;an(t)&&!Zl(t);){if(sf(t))return t;t=bo(t)}return null}function cf(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Zl(e){return["html","body","#document"].includes(er(e))}function Dt(e){return kt(e).getComputedStyle(e)}function Xl(e){return nt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function bo(e){if(er(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Ru(e)&&e.host||Pn(e);return Ru(t)?t.host:t}function mg(e){const t=bo(e);return Zl(t)?e.ownerDocument?e.ownerDocument.body:e.body:an(t)&&Ki(t)?t:mg(t)}function Li(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const o=mg(e),i=o===((r=e.ownerDocument)==null?void 0:r.body),a=kt(o);return i?t.concat(a,a.visualViewport||[],Ki(o)?o:[],a.frameElement&&n?Li(a.frameElement):[]):t.concat(o,Li(o,[],n))}function vg(e){const t=Dt(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=an(e),i=o?e.offsetWidth:n,a=o?e.offsetHeight:r,l=wl(n)!==i||wl(r)!==a;return l&&(n=i,r=a),{width:n,height:r,$:l}}function uf(e){return nt(e)?e:e.contextElement}function uo(e){const t=uf(e);if(!an(t))return Jn(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:i}=vg(t);let a=(i?wl(n.width):n.width)/r,l=(i?wl(n.height):n.height)/o;return(!a||!Number.isFinite(a))&&(a=1),(!l||!Number.isFinite(l))&&(l=1),{x:a,y:l}}const D4=Jn(0);function gg(e){const t=kt(e);return!cf()||!t.visualViewport?D4:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function N4(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==kt(e)?!1:t}function Cr(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),i=uf(e);let a=Jn(1);t&&(r?nt(r)&&(a=uo(r)):a=uo(e));const l=N4(i,n,r)?gg(i):Jn(0);let s=(o.left+l.x)/a.x,u=(o.top+l.y)/a.y,d=o.width/a.x,c=o.height/a.y;if(i){const f=kt(i),h=r&&nt(r)?kt(r):r;let y=f,g=y.frameElement;for(;g&&r&&h!==y;){const w=uo(g),m=g.getBoundingClientRect(),v=Dt(g),_=m.left+(g.clientLeft+parseFloat(v.paddingLeft))*w.x,E=m.top+(g.clientTop+parseFloat(v.paddingTop))*w.y;s*=w.x,u*=w.y,d*=w.x,c*=w.y,s+=_,u+=E,y=kt(g),g=y.frameElement}}return kl({width:d,height:c,x:s,y:u})}const M4=[":popover-open",":modal"];function yg(e){return M4.some(t=>{try{return e.matches(t)}catch{return!1}})}function j4(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const i=o==="fixed",a=Pn(r),l=t?yg(t.floating):!1;if(r===a||l&&i)return n;let s={scrollLeft:0,scrollTop:0},u=Jn(1);const d=Jn(0),c=an(r);if((c||!c&&!i)&&((er(r)!=="body"||Ki(a))&&(s=Xl(r)),an(r))){const f=Cr(r);u=uo(r),d.x=f.x+r.clientLeft,d.y=f.y+r.clientTop}return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-s.scrollLeft*u.x+d.x,y:n.y*u.y-s.scrollTop*u.y+d.y}}function F4(e){return Array.from(e.getClientRects())}function xg(e){return Cr(Pn(e)).left+Xl(e).scrollLeft}function z4(e){const t=Pn(e),n=Xl(e),r=e.ownerDocument.body,o=_t(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=_t(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let a=-n.scrollLeft+xg(e);const l=-n.scrollTop;return Dt(r).direction==="rtl"&&(a+=_t(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:a,y:l}}function U4(e,t){const n=kt(e),r=Pn(e),o=n.visualViewport;let i=r.clientWidth,a=r.clientHeight,l=0,s=0;if(o){i=o.width,a=o.height;const u=cf();(!u||u&&t==="fixed")&&(l=o.offsetLeft,s=o.offsetTop)}return{width:i,height:a,x:l,y:s}}function V4(e,t){const n=Cr(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=an(e)?uo(e):Jn(1),a=e.clientWidth*i.x,l=e.clientHeight*i.y,s=o*i.x,u=r*i.y;return{width:a,height:l,x:s,y:u}}function jh(e,t,n){let r;if(t==="viewport")r=U4(e,n);else if(t==="document")r=z4(Pn(e));else if(nt(t))r=V4(t,n);else{const o=gg(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return kl(r)}function _g(e,t){const n=bo(e);return n===t||!nt(n)||Zl(n)?!1:Dt(n).position==="fixed"||_g(n,t)}function B4(e,t){const n=t.get(e);if(n)return n;let r=Li(e,[],!1).filter(l=>nt(l)&&er(l)!=="body"),o=null;const i=Dt(e).position==="fixed";let a=i?bo(e):e;for(;nt(a)&&!Zl(a);){const l=Dt(a),s=sf(a);!s&&l.position==="fixed"&&(o=null),(i?!s&&!o:!s&&l.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||Ki(a)&&!s&&_g(e,a))?r=r.filter(d=>d!==a):o=l,a=bo(a)}return t.set(e,r),r}function H4(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[...n==="clippingAncestors"?B4(t,this._c):[].concat(n),r],l=a[0],s=a.reduce((u,d)=>{const c=jh(t,d,o);return u.top=_t(c.top,u.top),u.right=Xn(c.right,u.right),u.bottom=Xn(c.bottom,u.bottom),u.left=_t(c.left,u.left),u},jh(t,l,o));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function W4(e){const{width:t,height:n}=vg(e);return{width:t,height:n}}function K4(e,t,n){const r=an(t),o=Pn(t),i=n==="fixed",a=Cr(e,!0,i,t);let l={scrollLeft:0,scrollTop:0};const s=Jn(0);if(r||!r&&!i)if((er(t)!=="body"||Ki(o))&&(l=Xl(t)),r){const c=Cr(t,!0,i,t);s.x=c.x+t.clientLeft,s.y=c.y+t.clientTop}else o&&(s.x=xg(o));const u=a.left+l.scrollLeft-s.x,d=a.top+l.scrollTop-s.y;return{x:u,y:d,width:a.width,height:a.height}}function Fh(e,t){return!an(e)||Dt(e).position==="fixed"?null:t?t(e):e.offsetParent}function wg(e,t){const n=kt(e);if(!an(e)||yg(e))return n;let r=Fh(e,t);for(;r&&I4(r)&&Dt(r).position==="static";)r=Fh(r,t);return r&&(er(r)==="html"||er(r)==="body"&&Dt(r).position==="static"&&!sf(r))?n:r||L4(e)||n}const G4=async function(e){const t=this.getOffsetParent||wg,n=this.getDimensions;return{reference:K4(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}};function q4(e){return Dt(e).direction==="rtl"}const Eg={convertOffsetParentRelativeRectToViewportRelativeRect:j4,getDocumentElement:Pn,getClippingRect:H4,getOffsetParent:wg,getElementRects:G4,getClientRects:F4,getDimensions:W4,getScale:uo,isElement:nt,isRTL:q4};function Y4(e,t){let n=null,r;const o=Pn(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:u,top:d,width:c,height:f}=e.getBoundingClientRect();if(l||t(),!c||!f)return;const h=Aa(d),y=Aa(o.clientWidth-(u+c)),g=Aa(o.clientHeight-(d+f)),w=Aa(u),v={rootMargin:-h+"px "+-y+"px "+-g+"px "+-w+"px",threshold:_t(0,Xn(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 Q4(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,u=uf(e),d=o||i?[...u?Li(u):[],...Li(t)]:[];d.forEach(m=>{o&&m.addEventListener("scroll",n,{passive:!0}),i&&m.addEventListener("resize",n)});const c=u&&l?Y4(u,n):null;let f=-1,h=null;a&&(h=new ResizeObserver(m=>{let[v]=m;v&&v.target===u&&h&&(h.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var _;(_=h)==null||_.observe(t)})),n()}),u&&!s&&h.observe(u),h.observe(t));let y,g=s?Cr(e):null;s&&w();function w(){const m=Cr(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)}),c==null||c(),(m=h)==null||m.disconnect(),h=null,s&&cancelAnimationFrame(y)}}const kg=R4,Z4=A4,X4=O4,J4=S4,zh=P4,ek=$4,tk=(e,t,n)=>{const r=new Map,o={platform:Eg,...n},i={...o.platform,_c:r};return C4(e,t,{...o,platform:i})},bg=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?zh({element:r.current,padding:o}).fn(n):{}:r?zh({element:r,padding:o}).fn(n):{}}}};var Ha=typeof document<"u"?p.useLayoutEffect:p.useEffect;function bl(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(!bl(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)&&!bl(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function Cg(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Uh(e,t){const n=Cg(e);return Math.round(t*n)/n}function Vh(e){const t=p.useRef(e);return Ha(()=>{t.current=e}),t}function Pg(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:u}=e,[d,c]=p.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,h]=p.useState(r);bl(f,r)||h(r);const[y,g]=p.useState(null),[w,m]=p.useState(null),v=p.useCallback(V=>{V!==k.current&&(k.current=V,g(V))},[]),_=p.useCallback(V=>{V!==P.current&&(P.current=V,m(V))},[]),E=i||y,C=a||w,k=p.useRef(null),P=p.useRef(null),A=p.useRef(d),T=s!=null,O=Vh(s),j=Vh(o),N=p.useCallback(()=>{if(!k.current||!P.current)return;const V={placement:t,strategy:n,middleware:f};j.current&&(V.platform=j.current),tk(k.current,P.current,V).then(L=>{const z={...L,isPositioned:!0};F.current&&!bl(A.current,z)&&(A.current=z,So.flushSync(()=>{c(z)}))})},[f,t,n,j]);Ha(()=>{u===!1&&A.current.isPositioned&&(A.current.isPositioned=!1,c(V=>({...V,isPositioned:!1})))},[u]);const F=p.useRef(!1);Ha(()=>(F.current=!0,()=>{F.current=!1}),[]),Ha(()=>{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,T]);const $=p.useMemo(()=>({reference:k,floating:P,setReference:v,setFloating:_}),[v,_]),U=p.useMemo(()=>({reference:E,floating:C}),[E,C]),W=p.useMemo(()=>{const V={position:n,left:0,top:0};if(!U.floating)return V;const L=Uh(U.floating,d.x),z=Uh(U.floating,d.y);return l?{...V,transform:"translate("+L+"px, "+z+"px)",...Cg(U.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:L,top:z}},[n,l,U.floating,d.x,d.y]);return p.useMemo(()=>({...d,update:N,refs:$,elements:U,floatingStyles:W}),[d,N,$,U,W])}function nk(e){const[t,n]=p.useState(void 0);return yn(()=>{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,u=Array.isArray(s)?s[0]:s;a=u.inlineSize,l=u.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 Ag="Popper",[Sg,Tg]=kn(Ag),[rk,Rg]=Sg(Ag),ok=e=>{const{__scopePopper:t,children:n}=e,[r,o]=p.useState(null);return p.createElement(rk,{scope:t,anchor:r,onAnchorChange:o},n)},ik="PopperAnchor",ak=p.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...o}=e,i=Rg(ik,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(de.div,q({},o,{ref:l}))}),$g="PopperContent",[lk,kP]=Sg($g),sk=p.forwardRef((e,t)=>{var n,r,o,i,a,l,s,u;const{__scopePopper:d,side:c="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=Rg($g,d),[T,O]=p.useState(null),j=Ue(t,yt=>O(yt)),[N,F]=p.useState(null),$=nk(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,V=c+(h!=="center"?"-"+h:""),L=typeof v=="number"?v:{top:0,right:0,bottom:0,left:0,...v},z=Array.isArray(m)?m:[m],K=z.length>0,J={padding:L,boundary:z.filter(ck),altBoundary:K},{refs:ce,floatingStyles:Ve,placement:ye,isPositioned:$e,middlewareData:xe}=Pg({strategy:"fixed",placement:V,whileElementsMounted:(...yt)=>Q4(...yt,{animationFrame:C==="always"}),elements:{reference:A.anchor},middleware:[pg({mainAxis:f+W,alignmentAxis:y}),w&&kg({mainAxis:!0,crossAxis:!1,limiter:_==="partial"?ek():void 0,...J}),w&&Z4({...J}),X4({...J,apply:({elements:yt,rects:qi,availableWidth:es,availableHeight:ts})=>{const{width:ns,height:rs}=qi.reference,qt=yt.floating.style;qt.setProperty("--radix-popper-available-width",`${es}px`),qt.setProperty("--radix-popper-available-height",`${ts}px`),qt.setProperty("--radix-popper-anchor-width",`${ns}px`),qt.setProperty("--radix-popper-anchor-height",`${rs}px`)}}),N&&bg({element:N,padding:g}),uk({arrowWidth:U,arrowHeight:W}),E&&J4({strategy:"referenceHidden",...J})]}),[Be,_e]=Og(ye),Ce=at(k);yn(()=>{$e&&(Ce==null||Ce())},[$e,Ce]);const Nt=(o=xe.arrow)===null||o===void 0?void 0:o.x,Pe=(i=xe.arrow)===null||i===void 0?void 0:i.y,dt=((a=xe.arrow)===null||a===void 0?void 0:a.centerOffset)!==0,[Gi,Jl]=p.useState();return yn(()=>{T&&Jl(window.getComputedStyle(T).zIndex)},[T]),p.createElement("div",{ref:ce.setFloating,"data-radix-popper-content-wrapper":"",style:{...Ve,transform:$e?Ve.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Gi,"--radix-popper-transform-origin":[(l=xe.transformOrigin)===null||l===void 0?void 0:l.x,(s=xe.transformOrigin)===null||s===void 0?void 0:s.y].join(" ")},dir:e.dir},p.createElement(lk,{scope:d,placedSide:Be,onArrowChange:F,arrowX:Nt,arrowY:Pe,shouldHideArrow:dt},p.createElement(de.div,q({"data-side":Be,"data-align":_e},P,{ref:j,style:{...P.style,animation:$e?void 0:"none",opacity:(u=xe.hide)!==null&&u!==void 0&&u.referenceHidden?0:void 0}}))))});function ck(e){return e!==null}const uk=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,i,a;const{placement:l,rects:s,middlewareData:u}=t,c=((n=u.arrow)===null||n===void 0?void 0:n.centerOffset)!==0,f=c?0:e.arrowWidth,h=c?0:e.arrowHeight,[y,g]=Og(l),w={start:"0%",center:"50%",end:"100%"}[g],m=((r=(o=u.arrow)===null||o===void 0?void 0:o.x)!==null&&r!==void 0?r:0)+f/2,v=((i=(a=u.arrow)===null||a===void 0?void 0:a.y)!==null&&i!==void 0?i:0)+h/2;let _="",E="";return y==="bottom"?(_=c?w:`${m}px`,E=`${-h}px`):y==="top"?(_=c?w:`${m}px`,E=`${s.floating.height+h}px`):y==="right"?(_=`${-h}px`,E=c?w:`${v}px`):y==="left"&&(_=`${s.floating.width+h}px`,E=c?w:`${v}px`),{data:{x:_,y:E}}}});function Og(e){const[t,n="center"]=e.split("-");return[t,n]}const dk=ok,fk=ak,pk=sk,Ig="Popover",[Lg,bP]=kn(Ig,[Tg]),df=Tg(),[hk,Io]=Lg(Ig),mk=e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:a=!1}=e,l=df(t),s=p.useRef(null),[u,d]=p.useState(!1),[c=!1,f]=ar({prop:r,defaultProp:o,onChange:i});return p.createElement(dk,l,p.createElement(hk,{scope:t,contentId:on(),triggerRef:s,open:c,onOpenChange:f,onOpenToggle:p.useCallback(()=>f(h=>!h),[f]),hasCustomAnchor:u,onCustomAnchorAdd:p.useCallback(()=>d(!0),[]),onCustomAnchorRemove:p.useCallback(()=>d(!1),[]),modal:a},n))},vk="PopoverTrigger",gk=p.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,o=Io(vk,n),i=df(n),a=Ue(t,o.triggerRef),l=p.createElement(de.button,q({type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Mg(o.open)},r,{ref:a,onClick:le(e.onClick,o.onOpenToggle)}));return o.hasCustomAnchor?l:p.createElement(fk,q({asChild:!0},i),l)}),Dg="PopoverPortal",[yk,xk]=Lg(Dg,{forceMount:void 0}),_k=e=>{const{__scopePopover:t,forceMount:n,children:r,container:o}=e,i=Io(Dg,t);return p.createElement(yk,{scope:t,forceMount:n},p.createElement(bn,{present:n||i.open},p.createElement(a1,{asChild:!0,container:o},r)))},Di="PopoverContent",wk=p.forwardRef((e,t)=>{const n=xk(Di,e.__scopePopover),{forceMount:r=n.forceMount,...o}=e,i=Io(Di,e.__scopePopover);return p.createElement(bn,{present:r||i.open},i.modal?p.createElement(Ek,q({},o,{ref:t})):p.createElement(kk,q({},o,{ref:t})))}),Ek=p.forwardRef((e,t)=>{const n=Io(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 y1(a)},[]),p.createElement(v1,{as:ko,allowPinchZoom:!0},p.createElement(Ng,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,u=l.button===2||s;i.current=u},{checkForDefaultPrevented:!1}),onFocusOutside:le(e.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})))}),kk=p.forwardRef((e,t)=>{const n=Io(Di,e.__scopePopover),r=p.useRef(!1),o=p.useRef(!1);return p.createElement(Ng,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()}}))}),Ng=p.forwardRef((e,t)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEscapeKeyDown:l,onPointerDownOutside:s,onFocusOutside:u,onInteractOutside:d,...c}=e,f=Io(Di,n),h=df(n);return l1(),p.createElement(o1,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},p.createElement(Wd,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:d,onEscapeKeyDown:l,onPointerDownOutside:s,onFocusOutside:u,onDismiss:()=>f.onOpenChange(!1)},p.createElement(pk,q({"data-state":Mg(f.open),role:"dialog",id:f.contentId},h,c,{ref:t,style:{...c.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 Mg(e){return e?"open":"closed"}const bk=mk,Ck=gk,Pk=_k,Ak=wk;var Sk="vocs_Popover";Vt.Root=bk;Vt.Trigger=Ck;function Vt({children:e,className:t}){return x.jsx(Pk,{children:x.jsx(Ak,{className:D(Sk,t),sideOffset:12,children:e})})}var Tk="vocs_Sidebar_backLink",Rk="vocs_Sidebar_divider",$k="vocs_Sidebar_group",ni="vocs_Sidebar_item",jg="vocs_Sidebar_items",Ok="vocs_Sidebar_level",Ik="vocs_Sidebar_levelCollapsed",Lk="vocs_Sidebar_levelInset",Dk="vocs_Sidebar_logo",Nk="vocs_Sidebar_logoWrapper",Mk="vocs_Sidebar_navigation",jk="vocs_Sidebar",Fg="vocs_Sidebar_section",Fk="vocs_Sidebar_sectionCollapse",zk="vocs_Sidebar_sectionCollapseActive",Uk="vocs_Sidebar_sectionHeader",Vk="vocs_Sidebar_sectionHeaderActive",Bh="vocs_Sidebar_sectionTitle";function zg(){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 Ug(e){const{className:t,onClickItem:n}=e,{previousPath:r}=$r(),o=p.useRef(null),i=Wl(),[a,l]=p.useState("/");if(p.useEffect(()=>{typeof window>"u"||r&&l(r)},[i.key,i.backLink]),!i)return null;const s=Bk(i.items);return x.jsxs("aside",{ref:o,className:D(jk,t),children:[x.jsxs("div",{className:Nk,children:[x.jsx("div",{className:Dk,children:x.jsx(Zn,{to:"/",style:{alignItems:"center",display:"flex",height:"100%"},children:x.jsx(Yd,{})})}),x.jsx("div",{className:Rk})]}),x.jsx("nav",{className:Mk,children:x.jsxs("div",{className:$k,children:[i.backLink&&x.jsx("section",{className:Fg,children:x.jsx("div",{className:jg,children:x.jsxs(Zn,{className:D(ni,Tk),to:a,children:["←"," ",typeof history<"u"&&history.state.key&&a!=="/"?"Back":"Home"]})})}),s.map((u,d)=>x.jsx(Bg,{depth:0,item:u,onClick:n,sidebarRef:o},`${u.text}${d}`))]})})]},i.key)}function Bk(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 Vg(e,t){return e.find(n=>Bl(t,n.link??"")||n.link===t?!0:n.items?Vg(n.items,t):!1)}function Bg(e){const{depth:t,item:n,onClick:r,sidebarRef:o}=e,i=p.useRef(null),{pathname:a}=Re(),l=B_(n.link??""),s=p.useMemo(()=>n.items?!!Vg(n.items,a):!1,[n.items,a]),[u,d]=p.useState(()=>l||!n.items||s?!1:!!n.collapsed),c=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,!Bl(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(Bg,{depth:t+1,item:g,onClick:r,sidebarRef:o},`${g.text}${w}`))})]}):x.jsx(x.Fragment,{children:n.link?x.jsx(Zn,{ref:i,"data-active":!!l,onClick:r,className:ni,to:n.link,children:n.text}):x.jsx("div",{className:ni,children:n.text})})}function Hk(){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 Wk(){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 Kk(){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"})]})}$u.Curtain=Jk;function $u(){var n,r;const e=ot(),{showLogo:t}=Or();return x.jsxs("div",{className:a4,children:[x.jsxs("div",{className:Lh,children:[t&&x.jsx("div",{className:Pa,children:x.jsx("div",{className:e4,children:x.jsx(Zn,{to:"/",style:{alignItems:"center",display:"flex",height:"100%"},children:x.jsx(Yd,{})})})}),e.topNav&&x.jsx(x.Fragment,{children:x.jsxs("div",{className:Pa,children:[x.jsx(Gk,{items:e.topNav}),x.jsx(Yk,{items:e.topNav})]})})]}),x.jsxs("div",{className:Lh,children:[x.jsx("div",{className:Pa,style:{marginRight:"-8px"},children:x.jsx(W7,{})}),e.socials&&((n=e.socials)==null?void 0:n.length)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:Z7}),x.jsx("div",{className:Pa,style:{marginLeft:"-8px"},children:(r=e.socials)==null?void 0:r.map((o,i)=>x.jsx(Xk,{...o},i))})]})]})]})}function Gk({items:e}){const{pathname:t}=Re(),n=Hi({pathname:t,items:e});return x.jsx(B1,{className:cg,children:x.jsx(H1,{children:e.map((r,o)=>r!=null&&r.link?x.jsx(Yl,{active:n==null?void 0:n.includes(r.id),href:r.link,children:r.text},o):x.jsxs(W1,{className:J7,children:[x.jsx(K1,{active:n==null?void 0:n.includes(r.id),children:r.text}),x.jsx(G1,{className:Y7,children:x.jsx(qk,{items:r.items||[]})})]},o))})})}function qk({items:e}){const{pathname:t}=Re(),n=Hi({pathname:t,items:e});return x.jsx("ul",{children:e==null?void 0:e.map((r,o)=>x.jsx(Yl,{active:n.includes(r.id),href:r.link,children:r.text},o))})}function Yk({items:e}){var s;const[t,n]=p.useState(!1),{pathname:r}=Re(),o=Hi({pathname:r,items:e}),i=e.filter(u=>u.id===o[0])[0],{basePath:a}=ot(),l=a;return x.jsx("div",{className:D(cg,o4),children:i?x.jsxs(Vt.Root,{modal:!0,open:t,onOpenChange:n,children:[x.jsxs(Vt.Trigger,{className:D(sg,Yo),children:[i.text,x.jsx(st,{label:"Menu",icon:Hk,size:"11px"})]}),x.jsx(Vt,{className:c4,children:x.jsx(z7,{type:"single",collapsible:!0,style:{display:"flex",flexDirection:"column"},children:e.map((u,d)=>{var c;return u!=null&&u.link?x.jsx(rn,{"data-active":o.includes(u.id),className:Yo,href:u.link,onClick:()=>n(!1),variant:"styleless",children:u.text},d):x.jsxs(U7,{value:d.toString(),children:[x.jsx(V7,{className:D(Yo,r4),"data-active":o.includes(u.id),style:Gt({[G7]:`url(${l}/.vocs/icons/chevron-down.svg)`,[q7]:`url(${l}/.vocs/icons/chevron-up.svg)`}),children:u.text}),x.jsx(B7,{className:n4,children:(c=u.items)==null?void 0:c.map((f,h)=>x.jsx(rn,{className:Yo,href:f.link,onClick:()=>n(!1),variant:"styleless",children:f.text},h))})]},d)})})})]}):(s=e[0])!=null&&s.link?x.jsx(rn,{className:Yo,href:e[0].link,variant:"styleless",children:e[0].text}):null})}const Qk={discord:q1,github:Y1,telegram:Q1,x:Z1},Zk={discord:"21px",github:"18px",telegram:"21px",x:"16px"};function Xk({icon:e,label:t,link:n,type:r}){return x.jsx("a",{className:K7,href:n,target:"_blank",rel:"noopener noreferrer",children:x.jsx(st,{className:X7,label:t,icon:Qk[e],size:Zk[r]||"18px"})})}function Jk({enableScrollToTop:e}){const{pathname:t}=Re(),{layout:n,showSidebar:r}=Or(),{frontmatter:o={}}=$r(),i=Wl(),[a,l]=p.useState(!1),[s,u]=p.useState(!1),d=p.useMemo(()=>{if(!i||n==="minimal")return;const h=Hg({sidebarItems:i.items,pathname:t});return h==null?void 0:h.text},[n,t,i]),c=p.useMemo(()=>{var h;if(!(typeof window>"u"))return(h=document.querySelector(".vocs_Content h1"))==null?void 0:h.textContent},[]),f=d||o.title||c;return x.jsxs("div",{className:Q7,children:[x.jsx("div",{className:Oh,children:x.jsx("div",{className:oc,children:r?x.jsxs(Vt.Root,{modal:!0,open:s,onOpenChange:u,children:[x.jsxs(Vt.Trigger,{className:sg,children:[x.jsx(st,{label:"Menu",icon:Kk,size:"13px"}),x.jsx("div",{className:t4,children:f})]}),x.jsx(Vt,{className:s4,children:x.jsx(Ug,{onClickItem:()=>u(!1)})})]}):f})}),x.jsxs("div",{className:Oh,children:[e&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:oc,children:x.jsxs("button",{className:Ih,onClick:()=>window.scrollTo({behavior:"smooth",top:0}),type:"button",children:["Top",x.jsx(st,{label:"Scroll to top",icon:Wk,size:"10px"})]})}),x.jsx("div",{className:l4})]}),n==="docs"&&x.jsx("div",{className:oc,children:x.jsxs(Vt.Root,{modal:!0,open:a,onOpenChange:l,children:[x.jsxs(Vt.Trigger,{className:Ih,children:["On this page",x.jsx(st,{label:"On this page",icon:zg,size:"10px"})]}),x.jsx(Vt,{className:i4,children:x.jsx(ug,{onClickItem:()=>l(!1),showTitle:!1})})]})})]})]})}function Hg({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=Hg({sidebarItems:r.items,pathname:n});if(o)return o}}}var e6="vocs_SkipLink";const Wg="vocs-content";function t6(){const{pathname:e}=Re();return x.jsx("a",{className:D(e6,t1),href:`${e}#${Wg}`,children:"Skip to content"})}var n6="vocs_DocsLayout_content",r6="vocs_DocsLayout_content_withSidebar",o6="vocs_DocsLayout_content_withTopNav",i6="vocs_DocsLayout_gutterLeft",a6="vocs_DocsLayout_gutterRight",l6="vocs_DocsLayout_gutterRight_withSidebar",s6="vocs_DocsLayout_gutterTop",c6="vocs_DocsLayout_gutterTopCurtain",u6="vocs_DocsLayout_gutterTopCurtain_hidden",d6="vocs_DocsLayout_gutterTopCurtain_withSidebar",f6="vocs_DocsLayout_gutterTop_offsetLeftGutter",p6="vocs_DocsLayout_gutterTop_sticky",h6="vocs_DocsLayout",m6="vocs_DocsLayout_sidebar";function Ou({children:e}){const{banner:t,font:n}=ot(),{frontmatter:r={}}=$r(),{content:o}=r,{layout:i,showOutline:a,showSidebar:l,showTopNav:s}=Or(),{ref:u,inView:d}=Gv({initialInView:!0,rootMargin:"100px 0px 0px 0px"}),[c,f]=_u("banner",!0);return x.jsxs("div",{className:h6,"data-layout":i,style:Gt({[f5]:c?t==null?void 0:t.height:void 0,[qw.default]:n!=null&&n.google?`${n.google}, ${Gw.default}`:void 0}),children:[x.jsx(t6,{}),c&&x.jsx(L5,{hide:()=>f(!1)}),l&&x.jsx("div",{className:i6,children:x.jsx(Ug,{className:m6})}),s&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{ref:u,className:D(s6,l&&f6,(i==="minimal"||i==="landing")&&p6),children:[x.jsx(Pu,{}),x.jsx($u,{})]}),x.jsxs("div",{className:D(c6,l&&d6,(i==="minimal"||i==="landing")&&u6),children:[x.jsx(Pu.Curtain,{}),x.jsx($u.Curtain,{enableScrollToTop:!d})]})]}),a&&x.jsx("div",{className:D(a6,l&&l6),children:x.jsx(ug,{})}),x.jsxs("div",{id:Wg,className:D(n6,l&&r6,s&&o6),style:Gt({[zs.horizontalPadding]:o==null?void 0:o.horizontalPadding,[zs.width]:o==null?void 0:o.width,[zs.verticalPadding]:o==null?void 0:o.verticalPadding}),children:[x.jsx(Xv,{children:e}),x.jsx(p7,{})]}),x.jsx("div",{"data-bottom-observer":!0})]})}const Iu={},Kg=Q.createContext(Iu);function v6(e){const t=Q.useContext(Kg);return Q.useMemo(function(){return typeof e=="function"?e(t):{...t,...e}},[t,e])}function g6(e){let t;return e.disableParentContext?t=typeof e.components=="function"?e.components(Iu):e.components||Iu:t=v6(e.components),Q.createElement(Kg.Provider,{value:t},e.children)}var Gg={exports:{}},y6="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",x6=y6,_6=x6;function qg(){}function Yg(){}Yg.resetWarningCache=qg;var w6=function(){function e(r,o,i,a,l,s){if(s!==_6){var u=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 u.name="Invariant Violation",u}}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:Yg,resetWarningCache:qg};return n.PropTypes=n,n};Gg.exports=w6();var E6=Gg.exports;const Ee=tr(E6);function k6(e){return e&&typeof e=="object"&&"default"in e?e.default:e}var Qg=p,b6=k6(Qg);function Hh(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C6(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var P6=!!(typeof window<"u"&&window.document&&window.document.createElement);function A6(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})),u.canUseDOM?t(l):n&&(l=n(l))}var u=function(d){C6(c,d);function c(){return d.apply(this,arguments)||this}c.peek=function(){return l},c.rewind=function(){if(c.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=c.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 b6.createElement(i,this.props)},c}(Qg.PureComponent);return Hh(u,"displayName","SideEffect("+r(i)+")"),Hh(u,"canUseDOM",P6),u}}var S6=A6;const T6=tr(S6);var R6=typeof Element<"u",$6=typeof Map=="function",O6=typeof Set=="function",I6=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Wa(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(!Wa(e[r],t[r]))return!1;return!0}var i;if($6&&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(!Wa(r.value[1],t.get(r.value[0])))return!1;return!0}if(O6&&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(I6&&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(R6&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((o[r]==="_owner"||o[r]==="__v"||o[r]==="__o")&&e.$$typeof)&&!Wa(e[o[r]],t[o[r]]))return!1;return!0}return e!==e&&t!==t}var L6=function(t,n){try{return Wa(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 D6=tr(L6);/* object-assign (c) Sindre Sorhus @license MIT -*/var Wh=Object.getOwnPropertySymbols,N6=Object.prototype.hasOwnProperty,M6=Object.prototype.propertyIsEnumerable;function j6(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function F6(){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 z6=F6()?Object.assign:function(e,t){for(var n,r=j6(e),o,i=1;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},q6=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},Lu=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,"'")},Y6=function(t){var n=fo(t,ee.TITLE),r=fo(t,Ni.TITLE_TEMPLATE);if(r&&n)return r.replace(/%s/g,function(){return Array.isArray(n)?n.join(""):n});var o=fo(t,Ni.DEFAULT_TITLE);return n||o||void 0},Q6=function(t){return fo(t,Ni.ON_CHANGE_CLIENT_STATE)||function(){}},ic=function(t,n){return n.filter(function(r){return typeof r[t]<"u"}).map(function(r){return r[t]}).reduce(function(r,o){return ft({},r,o)},{})},Z6=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},X6=function(t){return{baseTag:Z6([ke.HREF,ke.TARGET],t),bodyAttributes:ic(yr.BODY,t),defer:fo(t,Ni.DEFER),encode:fo(t,Ni.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:ic(yr.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:Q6(t),scriptTags:Qo(ee.SCRIPT,[ke.SRC,ke.INNER_HTML],t),styleTags:Qo(ee.STYLE,[ke.CSS_TEXT],t),title:Y6(t),titleAttributes:ic(yr.TITLE,t)}},Du=function(){var e=Date.now();return function(t){var n=Date.now();n-e>16?(e=n,t(n)):setTimeout(function(){Du(t)},0)}}(),Gh=function(t){return clearTimeout(t)},J6=typeof window<"u"?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||Du:global.requestAnimationFrame||Du,eb=typeof window<"u"?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||Gh:global.cancelAnimationFrame||Gh,tb=function(t){return console&&typeof console.warn=="function"&&console.warn(t)},Zo=null,nb=function(t){Zo&&eb(Zo),t.defer?Zo=J6(function(){qh(t,function(){Zo=null})}):(qh(t),Zo=null)},qh=function(t,n){var r=t.baseTag,o=t.bodyAttributes,i=t.htmlAttributes,a=t.linkTags,l=t.metaTags,s=t.noscriptTags,u=t.onChangeClientState,d=t.scriptTags,c=t.styleTags,f=t.title,h=t.titleAttributes;Nu(ee.BODY,o),Nu(ee.HTML,i),rb(f,h);var y={baseTag:Br(ee.BASE,r),linkTags:Br(ee.LINK,a),metaTags:Br(ee.META,l),noscriptTags:Br(ee.NOSCRIPT,s),scriptTags:Br(ee.SCRIPT,d),styleTags:Br(ee.STYLE,c)},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(),u(t,g,w)},Zg=function(t){return Array.isArray(t)?t.join(""):t},rb=function(t,n){typeof t<"u"&&document.title!==t&&(document.title=Zg(t)),Nu(ee.TITLE,n)},Nu=function(t,n){var r=document.getElementsByTagName(t)[0];if(r){for(var o=r.getAttribute(Bt),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(Bt):r.getAttribute(Bt)!==l.join(",")&&r.setAttribute(Bt,l.join(","))}},Br=function(t,n){var r=document.head||document.querySelector(ee.HEAD),o=r.querySelectorAll(t+"["+Bt+"]"),i=Array.prototype.slice.call(o),a=[],l=void 0;return n&&n.length&&n.forEach(function(s){var u=document.createElement(t);for(var d in s)if(s.hasOwnProperty(d))if(d===ke.INNER_HTML)u.innerHTML=s.innerHTML;else if(d===ke.CSS_TEXT)u.styleSheet?u.styleSheet.cssText=s.cssText:u.appendChild(document.createTextNode(s.cssText));else{var c=typeof s[d]>"u"?"":s[d];u.setAttribute(d,c)}u.setAttribute(Bt,"true"),i.some(function(f,h){return l=h,u.isEqualNode(f)})?i.splice(l,1):a.push(u)}),i.forEach(function(s){return s.parentNode.removeChild(s)}),a.forEach(function(s){return r.appendChild(s)}),{oldTags:i,newTags:a}},Xg=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},"")},ob=function(t,n,r,o){var i=Xg(r),a=Zg(n);return i?"<"+t+" "+Bt+'="true" '+i+">"+Lu(a,o)+"":"<"+t+" "+Bt+'="true">'+Lu(a,o)+""},ib=function(t,n,r){return n.reduce(function(o,i){var a=Object.keys(i).filter(function(u){return!(u===ke.INNER_HTML||u===ke.CSS_TEXT)}).reduce(function(u,d){var c=typeof i[d]>"u"?d:d+'="'+Lu(i[d],r)+'"';return u?u+" "+c:c},""),l=i.innerHTML||i.cssText||"",s=B6.indexOf(t)===-1;return o+"<"+t+" "+Bt+'="true" '+a+(s?"/>":">"+l+"")},"")},Jg=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,o){return r[Cl[o]||o]=t[o],r},n)},ab=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,o){return r[V6[o]||o]=t[o],r},n)},lb=function(t,n,r){var o,i=(o={key:n},o[Bt]=!0,o),a=Jg(r,i);return[Q.createElement(ee.TITLE,a,n)]},sb=function(t,n){return n.map(function(r,o){var i,a=(i={key:o},i[Bt]=!0,i);return Object.keys(r).forEach(function(l){var s=Cl[l]||l;if(s===ke.INNER_HTML||s===ke.CSS_TEXT){var u=r.innerHTML||r.cssText;a.dangerouslySetInnerHTML={__html:u}}else a[s]=r[l]}),Q.createElement(t,a)})},ln=function(t,n,r){switch(t){case ee.TITLE:return{toComponent:function(){return lb(t,n.title,n.titleAttributes)},toString:function(){return ob(t,n.title,n.titleAttributes,r)}};case yr.BODY:case yr.HTML:return{toComponent:function(){return Jg(n)},toString:function(){return Xg(n)}};default:return{toComponent:function(){return sb(t,n)},toString:function(){return ib(t,n,r)}}}},ey=function(t){var n=t.baseTag,r=t.bodyAttributes,o=t.encode,i=t.htmlAttributes,a=t.linkTags,l=t.metaTags,s=t.noscriptTags,u=t.scriptTags,d=t.styleTags,c=t.title,f=c===void 0?"":c,h=t.titleAttributes;return{base:ln(ee.BASE,n,o),bodyAttributes:ln(yr.BODY,r,o),htmlAttributes:ln(yr.HTML,i,o),link:ln(ee.LINK,a,o),meta:ln(ee.META,l,o),noscript:ln(ee.NOSCRIPT,s,o),script:ln(ee.SCRIPT,u,o),style:ln(ee.STYLE,d,o),title:ln(ee.TITLE,{title:f,titleAttributes:h},o)}},cb=function(t){var n,r;return r=n=function(o){G6(i,o);function i(){return W6(this,i),q6(this,o.apply(this,arguments))}return i.prototype.shouldComponentUpdate=function(l){return!D6(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,u=l.child,d=l.arrayTypeChildren,c=l.newChildProps,f=l.nestedChildren;return ft({},d,(s={},s[u.type]=[].concat(d[u.type]||[],[ft({},c,this.mapNestedChildrenToProps(u,f))]),s))},i.prototype.mapObjectTypeChildren=function(l){var s,u,d=l.child,c=l.newProps,f=l.newChildProps,h=l.nestedChildren;switch(d.type){case ee.TITLE:return ft({},c,(s={},s[d.type]=h,s.titleAttributes=ft({},f),s));case ee.BODY:return ft({},c,{bodyAttributes:ft({},f)});case ee.HTML:return ft({},c,{htmlAttributes:ft({},f)})}return ft({},c,(u={},u[d.type]=ft({},f),u))},i.prototype.mapArrayTypeChildrenToProps=function(l,s){var u=ft({},s);return Object.keys(l).forEach(function(d){var c;u=ft({},u,(c={},c[d]=l[d],c))}),u},i.prototype.warnOnInvalidChildren=function(l,s){return!0},i.prototype.mapChildrenToProps=function(l,s){var u=this,d={};return Q.Children.forEach(l,function(c){if(!(!c||!c.props)){var f=c.props,h=f.children,y=Kh(f,["children"]),g=ab(y);switch(u.warnOnInvalidChildren(c,h),c.type){case ee.LINK:case ee.META:case ee.NOSCRIPT:case ee.SCRIPT:case ee.STYLE:d=u.flattenArrayTypeChildren({child:c,arrayTypeChildren:d,newChildProps:g,nestedChildren:h});break;default:s=u.mapObjectTypeChildren({child:c,newProps:s,newChildProps:g,nestedChildren:h});break}}}),s=this.mapArrayTypeChildrenToProps(d,s),s},i.prototype.render=function(){var l=this.props,s=l.children,u=Kh(l,["children"]),d=ft({},u);return s&&(d=this.mapChildrenToProps(s,d)),Q.createElement(t,d)},K6(i,null,[{key:"canUseDOM",set:function(l){t.canUseDOM=l}}]),i}(Q.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=ey({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),o},r},ub=function(){return null},db=T6(X6,nb,ey)(ub),Mu=cb(db);Mu.renderStatic=Mu.rewind;var ac="vocs_Anchor",fb="vocs_Autolink";function pb(e){const{pathname:t}=Re();return x.jsx("a",{...e,className:D(e.className,fb),href:`${t}${e.href}`})}function hb(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(pb,{className:D(e.className,ac),...e}):n!=null&&n.match(/^#/)?x.jsx("a",{className:D(e.className,ac),...e,href:`${r}${n}`}):x.jsx(rn,{className:D(e.className,ac),...e})}var mb="vocs_Callout_danger",vb="vocs_Callout_info",gb="vocs_Callout_note",ty="vocs_Callout",yb="vocs_Callout_success",xb="vocs_Callout_tip",_b="vocs_Callout_warning";const wb=Object.freeze(Object.defineProperty({__proto__:null,danger:mb,info:vb,note:gb,root:ty,success:yb,tip:xb,warning:_b},Symbol.toStringTag,{value:"Module"}));function Eb({className:e,children:t,type:n}){return x.jsx("aside",{className:D(e,ty,wb[n]),children:t})}var kb="vocs_Aside";function bb(e){const t=D(e.className,kb);return"data-callout"in e?x.jsx(Eb,{className:t,type:e["data-callout"],children:e.children}):x.jsx("aside",{...e,className:t})}var Cb="vocs_Blockquote";function Pb(e){return x.jsx("blockquote",{...e,className:D(e.className,Cb)})}var Ab="vocs_Code";function Sb(e){const t=Tb(e.children);return x.jsx("code",{...e,className:D(e.className,Ab),children:t})}function Tb(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 Rb="vocs_Details";function $b(e){return x.jsx("details",{...e,className:D(e.className,Rb)})}var Ob="vocs_Authors_authors",Ib="vocs_Authors_link",Lb="vocs_Authors",Yh="vocs_Authors_separator";function ny(e){const{frontmatter:t}=$r(),{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:Lb,children:[i,o&&(i?" by ":"By "),x.jsx("span",{className:Ob,children:o==null?void 0:o.map((a,l)=>{const{text:s,url:u}=Db(a);return x.jsxs(p.Fragment,{children:[u?x.jsx("a",{className:Ib,href:u,target:"_blank",rel:"noopener noreferrer",children:s}):s,lx.jsxs(p.Fragment,{children:[x.jsx("div",{className:jb,children:x.jsxs(Zn,{to:e.path,children:[x.jsx("h2",{className:Ub,children:e.title}),x.jsx(ny,{authors:e.authors,date:e.date}),x.jsxs("p",{className:Nb,children:[e.description," ",x.jsx("span",{className:Fb,children:"[→]"})]})]})}),tx.jsxs(p.Fragment,{children:[x.jsx("div",{className:Qb,children:t.name}),t.items.map((r,o)=>{var i;return x.jsx("div",{className:qb,style:Gt({[Hb]:r.length.toString(),[Wb]:`${((i=t.height)==null?void 0:i.toString())??"40"}px`}),children:r.map((a,l)=>x.jsx(rn,{className:D(Bb,a?Yb:void 0),hideExternalIcon:!0,href:a==null?void 0:a.link,variant:"styleless",children:x.jsx("img",{className:Kb,src:a==null?void 0:a.image,alt:a==null?void 0:a.name})},l))},o)})]},n))})}var Xb="var(--vocs_AutolinkIcon_iconUrl)",Jb="vocs_AutolinkIcon";function eC(e){const{basePath:t}=ot(),n=t;return x.jsx("div",{...e,className:D(e.className,Jb),style:Gt({[Xb]:`url(${n}/.vocs/icons/link.svg)`})})}const lc="rovingFocusGroup.onEntryFocus",tC={bubbles:!1,cancelable:!0},ff="RovingFocusGroup",[ju,ry,nC]=ql(ff),[rC,oy]=kn(ff,[nC]),[oC,iC]=rC(ff),aC=p.forwardRef((e,t)=>p.createElement(ju.Provider,{scope:e.__scopeRovingFocusGroup},p.createElement(ju.Slot,{scope:e.__scopeRovingFocusGroup},p.createElement(lC,q({},e,{ref:t}))))),lC=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:o=!1,dir:i,currentTabStopId:a,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:s,onEntryFocus:u,...d}=e,c=p.useRef(null),f=Ue(t,c),h=Gl(i),[y=null,g]=ar({prop:a,defaultProp:l,onChange:s}),[w,m]=p.useState(!1),v=at(u),_=ry(n),E=p.useRef(!1),[C,k]=p.useState(0);return p.useEffect(()=>{const P=c.current;if(P)return P.addEventListener(lc,v),()=>P.removeEventListener(lc,v)},[v]),p.createElement(oC,{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(de.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 T=new CustomEvent(lc,tC);if(P.currentTarget.dispatchEvent(T),!T.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);iy($)}}E.current=!1}),onBlur:le(e.onBlur,()=>m(!1))})))}),sC="RovingFocusGroupItem",cC=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:o=!1,tabStopId:i,...a}=e,l=on(),s=i||l,u=iC(sC,n),d=u.currentTabStopId===s,c=ry(n),{onFocusableItemAdd:f,onFocusableItemRemove:h}=u;return p.useEffect(()=>{if(r)return f(),()=>h()},[r,f,h]),p.createElement(ju.ItemSlot,{scope:n,id:s,focusable:r,active:o},p.createElement(de.span,q({tabIndex:d?0:-1,"data-orientation":u.orientation},a,{ref:t,onMouseDown:le(e.onMouseDown,y=>{r?u.onItemFocus(s):y.preventDefault()}),onFocus:le(e.onFocus,()=>u.onItemFocus(s)),onKeyDown:le(e.onKeyDown,y=>{if(y.key==="Tab"&&y.shiftKey){u.onItemShiftTab();return}if(y.target!==y.currentTarget)return;const g=fC(y,u.orientation,u.dir);if(g!==void 0){y.preventDefault();let m=c().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=u.loop?pC(m,v+1):m.slice(v+1)}setTimeout(()=>iy(m))}})})))}),uC={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function dC(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function fC(e,t,n){const r=dC(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return uC[r]}function iy(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function pC(e,t){return e.map((n,r)=>e[(t+r)%e.length])}const hC=aC,mC=cC,ay="Tabs",[vC,CA]=kn(ay,[oy]),ly=oy(),[gC,pf]=vC(ay),yC=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,onValueChange:o,defaultValue:i,orientation:a="horizontal",dir:l,activationMode:s="automatic",...u}=e,d=Gl(l),[c,f]=ar({prop:r,onChange:o,defaultProp:i});return p.createElement(gC,{scope:n,baseId:on(),value:c,onValueChange:f,orientation:a,dir:d,activationMode:s},p.createElement(de.div,q({dir:d,"data-orientation":a},u,{ref:t})))}),xC="TabsList",_C=p.forwardRef((e,t)=>{const{__scopeTabs:n,loop:r=!0,...o}=e,i=pf(xC,n),a=ly(n);return p.createElement(hC,q({asChild:!0},a,{orientation:i.orientation,dir:i.dir,loop:r}),p.createElement(de.div,q({role:"tablist","aria-orientation":i.orientation},o,{ref:t})))}),wC="TabsTrigger",EC=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,disabled:o=!1,...i}=e,a=pf(wC,n),l=ly(n),s=sy(a.baseId,r),u=cy(a.baseId,r),d=r===a.value;return p.createElement(mC,q({asChild:!0},l,{focusable:!o,active:d}),p.createElement(de.button,q({type:"button",role:"tab","aria-selected":d,"aria-controls":u,"data-state":d?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:s},i,{ref:t,onMouseDown:le(e.onMouseDown,c=>{!o&&c.button===0&&c.ctrlKey===!1?a.onValueChange(r):c.preventDefault()}),onKeyDown:le(e.onKeyDown,c=>{[" ","Enter"].includes(c.key)&&a.onValueChange(r)}),onFocus:le(e.onFocus,()=>{const c=a.activationMode!=="manual";!d&&!o&&c&&a.onValueChange(r)})})))}),kC="TabsContent",bC=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,forceMount:o,children:i,...a}=e,l=pf(kC,n),s=sy(l.baseId,r),u=cy(l.baseId,r),d=r===l.value,c=p.useRef(d);return p.useEffect(()=>{const f=requestAnimationFrame(()=>c.current=!1);return()=>cancelAnimationFrame(f)},[]),p.createElement(bn,{present:o||d},({present:f})=>p.createElement(de.div,q({"data-state":d?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":s,hidden:!f,id:u,tabIndex:0},a,{ref:t,style:{...e.style,animationDuration:c.current?"0s":void 0}}),f&&i))});function sy(e,t){return`${e}-trigger-${t}`}function cy(e,t){return`${e}-content-${t}`}const CC=yC,PC=_C,AC=EC,SC=bC;var TC="vocs_Tabs_content",RC="vocs_Tabs_list",$C="vocs_Tabs",OC="vocs_Tabs_trigger";function IC(e){return x.jsx(CC,{...e,className:D(e.className,$C)})}function LC(e){return x.jsx(PC,{...e,className:D(e.className,RC)})}function DC(e){return x.jsx(AC,{...e,className:D(e.className,OC)})}function NC(e){return x.jsx(SC,{...e,className:D(e.className,TC)})}var MC="vocs_CodeGroup";function jC({children:e}){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(IC,{className:MC,defaultValue:t[0].title,children:[x.jsx(LC,{"aria-label":"Code group",children:t.map(({title:n},r)=>x.jsx(DC,{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(NC,{"data-shiki":i,value:n||o.toString(),children:r},n||o.toString())})]})}var FC="vocs_Div",zC="vocs_Step_content",UC="vocs_Step",uy="vocs_Step_title",VC="vocs_H2";function dy(e){return x.jsx(Ro,{...e,className:D(e.className,VC),level:2})}var BC="vocs_H3";function fy(e){return x.jsx(Ro,{...e,className:D(e.className,BC),level:3})}var HC="vocs_H4";function py(e){return x.jsx(Ro,{...e,className:D(e.className,HC),level:4})}var WC="vocs_H5";function hy(e){return x.jsx(Ro,{...e,className:D(e.className,WC),level:5})}var KC="vocs_H6";function my(e){return x.jsx(Ro,{...e,className:D(e.className,KC),level:6})}function GC({children:e,className:t,title:n,titleLevel:r=2}){const o=(()=>{if(r===2)return dy;if(r===3)return fy;if(r===4)return py;if(r===5)return hy;if(r===6)return my;throw new Error("Invalid.")})();return x.jsxs("div",{className:D(t,UC),children:[typeof n=="string"?x.jsx(o,{className:uy,children:n}):n,x.jsx("div",{className:zC,children:e})]})}var qC="vocs_Steps";function YC({children:e,className:t}){return x.jsx("div",{className:D(t,qC),children:e})}function QC({children:e}){return Array.isArray(e)?x.jsx(YC,{children:e.map(({props:t},n)=>{const[r,...o]=Array.isArray(t.children)?t.children:[t.children];return x.jsx(GC,{title:p.cloneElement(r,{className:uy}),children:o},n)})}):null}var ZC="vocs_Subtitle";function XC({children:e}){return x.jsx("div",{className:ZC,role:"doc-subtitle",children:e})}function JC(e){const{layout:t}=Or(),n=D(e.className,FC);return e.className==="code-group"?x.jsx(jC,{...e,className:n}):"data-authors"in e?x.jsx(ny,{}):"data-blog-posts"in e?x.jsx(Vb,{}):"data-sponsors"in e?x.jsx(Zb,{}):"data-autolink-icon"in e&&t==="docs"?x.jsx(eC,{...e,className:n}):"data-vocs-steps"in e?x.jsx(QC,{...e,className:n}):e.role==="doc-subtitle"?x.jsx(XC,{...e}):x.jsx("div",{...e,className:n})}var eP="vocs_Figcaption";function tP(e){const t=D(e.className,eP);return x.jsx("figcaption",{...e,className:t})}var nP="vocs_Figure";function rP(e){const t=D(e.className,nP);return x.jsx("figure",{...e,className:t})}var oP="vocs_Header";function iP(e){return x.jsx("header",{...e,className:D(e.className,oP)})}var aP="vocs_HorizontalRule";function lP(e){return x.jsx("hr",{...e,className:D(e.className,aP)})}var sP="vocs_List_ordered",cP="vocs_List",uP="vocs_List_unordered";function Zh({ordered:e,...t}){const n=e?"ol":"ul";return x.jsx(n,{...t,className:D(t.className,cP,e?sP:uP)})}var dP="vocs_ListItem";function fP(e){return x.jsx("li",{...e,className:D(e.className,dP)})}function pP(){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 hP="vocs_CopyButton";function mP(){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 vP(){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 gP({copy:e,copied:t}){return x.jsx("button",{className:hP,onClick:e,type:"button",children:t?x.jsx(st,{label:"Copied",size:"14px",icon:mP}):x.jsx(st,{label:"Copy",size:"18px",icon:vP})})}var yP="vocs_CodeBlock";function xP(e){return x.jsx("div",{...e,className:D(e.className,yP)})}function _P(){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 wP(){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 EP="vocs_CodeTitle";function kP({children:e,className:t,language:n,...r}){return x.jsxs("div",{...r,className:D(t,EP),children:[n==="bash"?x.jsx(st,{label:"Terminal",size:"14px",icon:wP,style:{marginTop:3}}):e.match(/\.(.*)$/)?x.jsx(st,{label:"File",size:"14px",icon:_P,style:{marginTop:1}}):null,e]})}var bP="vocs_Pre",CP="vocs_Pre_wrapper";function PP({children:e,className:t,...n}){const{copied:r,copy:o,ref:i}=pP();function a(u){return!u||typeof u!="object"?u:"props"in u?{...u,props:{...u.props,children:Array.isArray(u.props.children)?u.props.children.map(a):a(u.props.children)}}:u}const l=p.useMemo(()=>a(e),[e]);return(u=>t!=null&&t.includes("shiki")?x.jsxs(xP,{children:[n["data-title"]&&x.jsx(kP,{language:n["data-lang"],children:n["data-title"]}),u]}):u)(x.jsx("div",{className:D(CP),children:x.jsxs("pre",{ref:i,...n,className:D(t,bP),children:["data-language"in n&&x.jsx(gP,{copied:r,copy:o}),l]})}))}var AP="vocs_Footnotes";function SP(e){return x.jsx("section",{...e,className:D(e.className,AP)})}var Xh="vocs_Section";function TP(e){return"data-footnotes"in e?x.jsx(SP,{...e,className:D(e.className,Xh)}):x.jsx("section",{...e,className:D(e.className,Xh)})}var Jh="vocs_Span";function Ka(e,t){if(!e||!t)return!1;const n=t.getRootNode==null?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&Ru(n)){let r=t;for(;r;){if(e===r)return!0;r=r.parentNode||r.host}}return!1}function vy(e,t){const n=["mouse","pen"];return t||n.push("",void 0),n.includes(e)}function Sa(e){return(e==null?void 0:e.ownerDocument)||document}function RP(e){return"composedPath"in e?e.composedPath()[0]:e.target}const $P=Al.useInsertionEffect,OP=$P||(e=>e());function IP(e){const t=p.useRef(()=>{});return OP(()=>{t.current=e}),p.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o"floating-ui-"+LP++;function DP(){const[e,t]=p.useState(()=>sc?e0():void 0);return Mi(()=>{e==null&&t(e0())},[]),p.useEffect(()=>{sc||(sc=!0)},[]),e}const NP=Al.useId,gy=NP||DP,MP=p.forwardRef(function(t,n){let{context:{placement:r,elements:{floating:o},middlewareData:{arrow:i}},width:a=14,height:l=7,tipRadius:s=0,strokeWidth:u=0,staticOffset:d,stroke:c,d:f,style:{transform:h,...y}={},...g}=t;const w=gy();if(!o)return null;u*=2;const m=u/2,v=a/2*(s/-8+1),_=l/2*s/4,[E,C]=r.split("-"),k=Eg.isRTL(o),P=!!f,A=E==="top"||E==="bottom",T=d&&C==="end"?"bottom":"top";let O=d&&C==="end"?"right":"left";d&&k&&(O=C==="end"?"left":"right");const j=(i==null?void 0:i.x)!=null?d||i.x:"",N=(i==null?void 0:i.y)!=null?d||i.y:"",F=f||"M0,0"+(" H"+a)+(" L"+(a-v)+","+(l-_))+(" Q"+a/2+","+l+" "+v+","+(l-_))+" Z",$={top:P?"rotate(180deg)":"",left:P?"rotate(90deg)":"rotate(-90deg)",bottom:P?"":"rotate(180deg)",right:P?"rotate(-90deg)":"rotate(90deg)"}[E];return p.createElement("svg",Fu({},g,{"aria-hidden":!0,ref:n,width:P?a:a+u,height:a,viewBox:"0 0 "+a+" "+(l>a?l:a),style:{position:"absolute",pointerEvents:"none",[O]:j,[T]:N,[E]:A||P?"100%":"calc(100% - "+u/2+"px)",transform:""+$+(h??""),...y}}),u>0&&p.createElement("path",{clipPath:"url(#"+w+")",fill:"none",stroke:c,strokeWidth:u+(f?0:1),d:F}),p.createElement("path",{stroke:u&&!f?g.fill:"none",d:F}),p.createElement("clipPath",{id:w},p.createElement("rect",{x:-m,y:m*(P?-1:1),width:a+u,height:a})))});function jP(){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 FP=p.createContext(null),zP=p.createContext(null),yy=()=>{var e;return((e=p.useContext(FP))==null?void 0:e.id)||null},xy=()=>p.useContext(zP);function UP(e){return"data-floating-ui-"+e}function t0(e){const t=p.useRef(e);return Mi(()=>{t.current=e}),t}const n0=UP("safe-polygon");function cc(e,t,n){return n&&!vy(n)?0:typeof e=="number"?e:e==null?void 0:e[t]}function VP(e,t){t===void 0&&(t={});const{open:n,onOpenChange:r,dataRef:o,events:i,elements:{domReference:a,floating:l},refs:s}=e,{enabled:u=!0,delay:d=0,handleClose:c=null,mouseOnly:f=!1,restMs:h=0,move:y=!0}=t,g=xy(),w=yy(),m=t0(c),v=t0(d),_=p.useRef(),E=p.useRef(),C=p.useRef(),k=p.useRef(),P=p.useRef(!0),A=p.useRef(!1),T=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(!u)return;function $(U){let{open:W}=U;W||(clearTimeout(E.current),clearTimeout(k.current),P.current=!0)}return i.on("openchange",$),()=>{i.off("openchange",$)}},[u,i]),p.useEffect(()=>{if(!u||!m.current||!n)return;function $(W){O()&&r(!1,W,"hover")}const U=Sa(l).documentElement;return U.addEventListener("mouseleave",$),()=>{U.removeEventListener("mouseleave",$)}},[l,n,r,u,m,O]);const j=p.useCallback(function($,U,W){U===void 0&&(U=!0),W===void 0&&(W="hover");const V=cc(v.current,"close",_.current);V&&!C.current?(clearTimeout(E.current),E.current=setTimeout(()=>r(!1,$,W),V)):U&&(clearTimeout(E.current),r(!1,$,W))},[v,r]),N=p.useCallback(()=>{T.current(),C.current=void 0},[]),F=p.useCallback(()=>{if(A.current){const $=Sa(s.floating.current).body;$.style.pointerEvents="",$.removeAttribute(n0),A.current=!1}},[s]);return p.useEffect(()=>{if(!u)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&&!vy(_.current)||h>0&&cc(v.current,"open")===0)return;const z=cc(v.current,"open",_.current);z?E.current=setTimeout(()=>{r(!0,L,"hover")},z):r(!0,L,"hover")}function W(L){if($())return;T.current();const z=Sa(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(){F(),N(),j(L,!0,"safe-polygon")}});const J=C.current;z.addEventListener("mousemove",J),T.current=()=>{z.removeEventListener("mousemove",J)};return}(_.current==="touch"?!Ka(l,L.relatedTarget):!0)&&j(L)}function V(L){$()||m.current==null||m.current({...e,tree:g,x:L.clientX,y:L.clientY,onClose(){F(),N(),j(L)}})(L)}if(nt(a)){const L=a;return n&&L.addEventListener("mouseleave",V),l==null||l.addEventListener("mouseleave",V),y&&L.addEventListener("mousemove",U,{once:!0}),L.addEventListener("mouseenter",U),L.addEventListener("mouseleave",W),()=>{n&&L.removeEventListener("mouseleave",V),l==null||l.removeEventListener("mouseleave",V),y&&L.removeEventListener("mousemove",U),L.removeEventListener("mouseenter",U),L.removeEventListener("mouseleave",W)}}},[a,l,u,e,f,h,y,j,N,F,r,n,g,v,m,o]),Mi(()=>{var $;if(u&&n&&($=m.current)!=null&&$.__options.blockPointerEvents&&O()){const W=Sa(l).body;if(W.setAttribute(n0,""),W.style.pointerEvents="none",A.current=!0,nt(a)&&l){var U;const V=a,L=g==null||(U=g.nodesRef.current.find(z=>z.id===w))==null||(U=U.context)==null?void 0:U.elements.floating;return L&&(L.style.pointerEvents=""),V.style.pointerEvents="auto",l.style.pointerEvents="auto",()=>{V.style.pointerEvents="",l.style.pointerEvents=""}}}},[u,n,w,l,a,g,m,O]),Mi(()=>{n||(_.current=void 0,N(),F())},[n,N,F]),p.useEffect(()=>()=>{N(),clearTimeout(E.current),clearTimeout(k.current),F()},[u,a,N,F]),p.useMemo(()=>{if(!u)return{};function $(U){_.current=U.pointerType}return{reference:{onPointerDown:$,onPointerEnter:$,onMouseMove(U){n||h===0||(clearTimeout(k.current),k.current=setTimeout(()=>{P.current||r(!0,U.nativeEvent,"hover")},h))}},floating:{onMouseEnter(){clearTimeout(E.current)},onMouseLeave(U){j(U.nativeEvent,!1)}}}},[u,h,n,r,j])}function BP(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 HP(e){var t;e===void 0&&(e={});const{open:n=!1,onOpenChange:r,nodeId:o}=e,[i,a]=p.useState(null),l=((t=e.elements)==null?void 0:t.reference)||i,s=Pg(e),u=xy(),d=yy()!=null,c=IP((C,k,P)=>{C&&(h.current.openEvent=k),y.emit("openchange",{open:C,event:k,reason:P,nested:d}),r==null||r(C,k,P)}),f=p.useRef(null),h=p.useRef({}),y=p.useState(()=>jP())[0],g=gy(),w=p.useCallback(C=>{const k=nt(C)?{getBoundingClientRect:()=>C.getBoundingClientRect(),contextElement:C}:C;s.refs.setReference(k)},[s.refs]),m=p.useCallback(C=>{(nt(C)||C===null)&&(f.current=C,a(C)),(nt(s.refs.reference.current)||s.refs.reference.current===null||C!==null&&!nt(C))&&s.refs.setReference(C)},[s.refs]),v=p.useMemo(()=>({...s.refs,setReference:m,setPositionReference:w,domReference:f}),[s.refs,m,w]),_=p.useMemo(()=>({...s.elements,domReference:l}),[s.elements,l]),E=p.useMemo(()=>({...s,refs:v,elements:_,dataRef:h,nodeId:o,floatingId:g,events:y,open:n,onOpenChange:c}),[s,o,g,y,n,c,v,_]);return Mi(()=>{const C=u==null?void 0:u.nodesRef.current.find(k=>k.id===o);C&&(C.context=E)}),p.useMemo(()=>({...s,context:E,refs:v,elements:_}),[s,v,_,E])}const r0="active",o0="selected";function uc(e,t,n){const r=new Map,o=n==="item";let i=e;if(o&&e){const{[r0]:a,[o0]: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[u,d]=s;if(!(o&&[r0,o0].includes(u)))if(u.indexOf("on")===0){if(r.has(u)||r.set(u,[]),typeof d=="function"){var c;(c=r.get(u))==null||c.push(d),a[u]=function(){for(var f,h=arguments.length,y=new Array(h),g=0;gw(...y)).find(w=>w!==void 0)}}}else a[u]=d}),a),{})}}function WP(e){e===void 0&&(e=[]);const t=e,n=p.useCallback(i=>uc(i,e,"reference"),t),r=p.useCallback(i=>uc(i,e,"floating"),t),o=p.useCallback(i=>uc(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 i0(e,t){const[n,r]=e;let o=!1;const i=t.length;for(let a=0,l=i-1;a=r!=c>=r&&n<=(d-s)*(r-u)/(c-u)+s&&(o=!o)}return o}function KP(e,t){return e[0]>=t.x&&e[0]<=t.x+t.width&&e[1]>=t.y&&e[1]<=t.y+t.height}function GP(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 u(c,f){const h=performance.now(),y=h-s;if(a===null||l===null||y===0)return a=c,l=f,s=h,null;const g=c-a,w=f-l,v=Math.sqrt(g*g+w*w)/y;return a=c,l=f,s=h,v}const d=c=>{let{x:f,y:h,placement:y,elements:g,onClose:w,nodeId:m,tree:v}=c;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],T=RP(E),O=E.type==="mouseleave",j=Ka(g.floating,T),N=Ka(g.domReference,T),F=g.domReference.getBoundingClientRect(),$=g.floating.getBoundingClientRect(),U=y.split("-")[0],W=f>$.right-$.width/2,V=h>$.bottom-$.height/2,L=KP(A,F),z=$.width>F.width,K=$.height>F.height,J=(z?F:$).left,ce=(z?F:$).right,Ve=(K?F:$).top,ye=(K?F:$).bottom;if(j&&(i=!0,!O))return;if(N&&(i=!1),N&&!O){i=!0;return}if(O&&nt(E.relatedTarget)&&Ka(g.floating,E.relatedTarget)||v&&BP(v.nodesRef.current,m).some(Be=>{let{context:_e}=Be;return _e==null?void 0:_e.open}))return;if(U==="top"&&h>=F.bottom-1||U==="bottom"&&h<=F.top+1||U==="left"&&f>=F.right-1||U==="right"&&f<=F.left+1)return C();let $e=[];switch(U){case"top":$e=[[J,F.top+1],[J,$.bottom-1],[ce,$.bottom-1],[ce,F.top+1]];break;case"bottom":$e=[[J,$.top+1],[J,F.bottom-1],[ce,F.bottom-1],[ce,$.top+1]];break;case"left":$e=[[$.right-1,ye],[$.right-1,Ve],[F.left+1,Ve],[F.left+1,ye]];break;case"right":$e=[[F.right-1,ye],[F.right-1,Ve],[$.left+1,Ve],[$.left+1,ye]];break}function xe(Be){let[_e,Ce]=Be;switch(U){case"top":{const Nt=[z?_e+t/2:W?_e+t*4:_e-t*4,Ce+t+1],Pe=[z?_e-t/2:W?_e+t*4:_e-t*4,Ce+t+1],dt=[[$.left,W||z?$.bottom-t:$.top],[$.right,W?z?$.bottom-t:$.top:$.bottom-t]];return[Nt,Pe,...dt]}case"bottom":{const Nt=[z?_e+t/2:W?_e+t*4:_e-t*4,Ce-t],Pe=[z?_e-t/2:W?_e+t*4:_e-t*4,Ce-t],dt=[[$.left,W||z?$.top+t:$.bottom],[$.right,W?z?$.top+t:$.bottom:$.top+t]];return[Nt,Pe,...dt]}case"left":{const Nt=[_e+t+1,K?Ce+t/2:V?Ce+t*4:Ce-t*4],Pe=[_e+t+1,K?Ce-t/2:V?Ce+t*4:Ce-t*4];return[...[[V||K?$.right-t:$.left,$.top],[V?K?$.right-t:$.left:$.right-t,$.bottom]],Nt,Pe]}case"right":{const Nt=[_e-t,K?Ce+t/2:V?Ce+t*4:Ce-t*4],Pe=[_e-t,K?Ce-t/2:V?Ce+t*4:Ce-t*4],dt=[[V||K?$.left+t:$.right,$.top],[V?K?$.left+t:$.right:$.left+t,$.bottom]];return[Nt,Pe,...dt]}}}if(!i0([k,P],$e)){if(i&&!L)return C();if(!O&&r){const Be=u(E.clientX,E.clientY);if(Be!==null&&Be<.1)return C()}i0([k,P],xe([f,h]))?!i&&r&&(o=window.setTimeout(C,40)):C()}}};return d.__options={blockPointerEvents:n},d}function qP({children:e,...t}){const[n,r]=e,o=p.useRef(null),[i,a]=p.useState(!1),{context:l,refs:s,floatingStyles:u}=HP({middleware:[bg({element:o}),pg(8),kg()],open:i,onOpenChange:a,placement:"bottom-start"}),d=VP(l,{handleClose:GP()}),{getReferenceProps:c,getFloatingProps:f}=WP([d]),h=r.props.children,y=n.props.children;return x.jsxs("span",{...t,children:[x.jsx("span",{className:"twoslash-target",ref:s.setReference,...c(),children:h}),i&&x.jsxs("div",{className:"twoslash-popup-info-hover",ref:s.setFloating,style:u,...f(),children:[x.jsx(MP,{ref:o,context:l,fill:Xp.background5,height:3,stroke:Xp.border2,strokeWidth:1,width:7}),x.jsx("div",{className:"twoslash-popup-scroll-container",children:y})]})]})}function YP(e){var n;const t=D(e.className,Jh);return(n=e.className)!=null&&n.includes("twoslash-hover")?x.jsx(qP,{...e,className:t}):x.jsx("span",{...e,className:D(e.className,Jh)})}var QP="vocs_CalloutTitle";function ZP({className:e,children:t}){return x.jsx("strong",{className:D(e,QP),children:t})}var a0="vocs_Strong";function XP(e){return"data-callout-title"in e&&typeof e.children=="string"?x.jsx(ZP,{...e,className:D(e.className,a0),children:e.children}):x.jsx("strong",{...e,className:D(e.className,a0)})}var JP="vocs_Summary";function eA(e){return x.jsx("summary",{...e,className:D(e.className,JP)})}var tA="vocs_Table";function nA(e){return x.jsx("table",{...e,className:D(e.className,tA)})}var rA="vocs_TableCell";function oA(e){return x.jsx("td",{...e,className:D(e.className,rA)})}var iA="vocs_TableHeader";function aA(e){return x.jsx("th",{...e,className:D(e.className,iA)})}var lA="vocs_TableRow";function sA(e){return x.jsx("tr",{...e,className:D(e.className,lA)})}const cA={a:hb,aside:bb,blockquote:Pb,code:Sb,details:$b,div:JC,pre:PP,header:iP,figcaption:tP,figure:rP,h1:Qv,h2:dy,h3:fy,h4:py,h5:hy,h6:my,hr:lP,kd:L1,li:fP,ol:e=>x.jsx(Zh,{ordered:!0,...e}),p:Zv,section:TP,span:YP,strong:XP,summary:eA,table:nA,td:oA,th:aA,tr:sA,ul:e=>x.jsx(Zh,{ordered:!1,...e})};function uA(){const{pathname:e}=Re(),t=ot(),{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 zu(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(dA,{frontmatter:r}),typeof window<"u"&&x.jsx(bw,{}),x.jsx(g6,{components:cA,children:x.jsx(e3,{frontmatter:r,path:i,children:x.jsx(e1.Provider,{value:{filePath:n,frontmatter:r,lastUpdatedAt:o,previousPath:l.current},children:t})})})]})}function dA({frontmatter:e}){const t=ot(),n=uA(),{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,u=t.title&&!l.includes(t.title),d=typeof window<"u"&&window.location.hostname==="localhost";return x.jsxs(Mu,{defaultTitle:t.title,titleTemplate:u?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:dc(i)}),i&&typeof i!="string"&&x.jsx("link",{rel:"icon",href:i.light,type:dc(i.light)}),i&&typeof i!="string"&&x.jsx("link",{rel:"icon",href:i.dark,type:dc(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 dc(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 fA=(()=>{const e=Bd.find(({path:t})=>t==="*");return e?{path:e.path,lazy:async()=>{const{frontmatter:t,...n}=await e.lazy();return{...n,element:x.jsx(zu,{frontmatter:t,path:e.path,children:x.jsx(Ou,{children:x.jsx(n.default,{})})})}}}:{path:"*",lazy:void 0,element:x.jsx(zu,{frontmatter:{layout:"minimal"},path:"*",children:x.jsx(Ou,{children:x.jsx(u8,{})})})}})(),l0=[...Bd.filter(({path:e})=>e!=="*").map(e=>({path:e.path,lazy:async()=>{const{frontmatter:t,...n}=await e.lazy();return{...n,element:x.jsx(zu,{filePath:e.filePath,frontmatter:t,lastUpdatedAt:e.lastUpdatedAt,path:e.path,children:x.jsx(Ou,{children:x.jsx(n.default,{})})})}}})),fA];async function pA(e,t){var r;const n=(r=pr(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 hA(){const e=document.querySelectorAll('style[data-vocs-temp-style="true"]');for(const t of e)t.remove()}mA();async function mA(){const e=Hv().basePath;await pA(l0,e),hA();const t=dw(l0,{basename:e});Ev(document.getElementById("app"),x.jsx(Hw,{children:x.jsx(_w,{router:t})}))}export{NC as C,rn as L,IC as R,DC as T,ot as a,rE as b,D as c,LC as d,Eb as e,Q as f,vA as g,Py as h,tr as i,x as j,gA as k,p as r,yA as s,v6 as u}; +*/var Wh=Object.getOwnPropertySymbols,N6=Object.prototype.hasOwnProperty,M6=Object.prototype.propertyIsEnumerable;function j6(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function F6(){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 z6=F6()?Object.assign:function(e,t){for(var n,r=j6(e),o,i=1;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},q6=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},Lu=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,"'")},Y6=function(t){var n=fo(t,ee.TITLE),r=fo(t,Ni.TITLE_TEMPLATE);if(r&&n)return r.replace(/%s/g,function(){return Array.isArray(n)?n.join(""):n});var o=fo(t,Ni.DEFAULT_TITLE);return n||o||void 0},Q6=function(t){return fo(t,Ni.ON_CHANGE_CLIENT_STATE)||function(){}},ic=function(t,n){return n.filter(function(r){return typeof r[t]<"u"}).map(function(r){return r[t]}).reduce(function(r,o){return ft({},r,o)},{})},Z6=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},X6=function(t){return{baseTag:Z6([ke.HREF,ke.TARGET],t),bodyAttributes:ic(yr.BODY,t),defer:fo(t,Ni.DEFER),encode:fo(t,Ni.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:ic(yr.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:Q6(t),scriptTags:Qo(ee.SCRIPT,[ke.SRC,ke.INNER_HTML],t),styleTags:Qo(ee.STYLE,[ke.CSS_TEXT],t),title:Y6(t),titleAttributes:ic(yr.TITLE,t)}},Du=function(){var e=Date.now();return function(t){var n=Date.now();n-e>16?(e=n,t(n)):setTimeout(function(){Du(t)},0)}}(),Gh=function(t){return clearTimeout(t)},J6=typeof window<"u"?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||Du:global.requestAnimationFrame||Du,eb=typeof window<"u"?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||Gh:global.cancelAnimationFrame||Gh,tb=function(t){return console&&typeof console.warn=="function"&&console.warn(t)},Zo=null,nb=function(t){Zo&&eb(Zo),t.defer?Zo=J6(function(){qh(t,function(){Zo=null})}):(qh(t),Zo=null)},qh=function(t,n){var r=t.baseTag,o=t.bodyAttributes,i=t.htmlAttributes,a=t.linkTags,l=t.metaTags,s=t.noscriptTags,u=t.onChangeClientState,d=t.scriptTags,c=t.styleTags,f=t.title,h=t.titleAttributes;Nu(ee.BODY,o),Nu(ee.HTML,i),rb(f,h);var y={baseTag:Br(ee.BASE,r),linkTags:Br(ee.LINK,a),metaTags:Br(ee.META,l),noscriptTags:Br(ee.NOSCRIPT,s),scriptTags:Br(ee.SCRIPT,d),styleTags:Br(ee.STYLE,c)},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(),u(t,g,w)},Zg=function(t){return Array.isArray(t)?t.join(""):t},rb=function(t,n){typeof t<"u"&&document.title!==t&&(document.title=Zg(t)),Nu(ee.TITLE,n)},Nu=function(t,n){var r=document.getElementsByTagName(t)[0];if(r){for(var o=r.getAttribute(Bt),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(Bt):r.getAttribute(Bt)!==l.join(",")&&r.setAttribute(Bt,l.join(","))}},Br=function(t,n){var r=document.head||document.querySelector(ee.HEAD),o=r.querySelectorAll(t+"["+Bt+"]"),i=Array.prototype.slice.call(o),a=[],l=void 0;return n&&n.length&&n.forEach(function(s){var u=document.createElement(t);for(var d in s)if(s.hasOwnProperty(d))if(d===ke.INNER_HTML)u.innerHTML=s.innerHTML;else if(d===ke.CSS_TEXT)u.styleSheet?u.styleSheet.cssText=s.cssText:u.appendChild(document.createTextNode(s.cssText));else{var c=typeof s[d]>"u"?"":s[d];u.setAttribute(d,c)}u.setAttribute(Bt,"true"),i.some(function(f,h){return l=h,u.isEqualNode(f)})?i.splice(l,1):a.push(u)}),i.forEach(function(s){return s.parentNode.removeChild(s)}),a.forEach(function(s){return r.appendChild(s)}),{oldTags:i,newTags:a}},Xg=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},"")},ob=function(t,n,r,o){var i=Xg(r),a=Zg(n);return i?"<"+t+" "+Bt+'="true" '+i+">"+Lu(a,o)+"":"<"+t+" "+Bt+'="true">'+Lu(a,o)+""},ib=function(t,n,r){return n.reduce(function(o,i){var a=Object.keys(i).filter(function(u){return!(u===ke.INNER_HTML||u===ke.CSS_TEXT)}).reduce(function(u,d){var c=typeof i[d]>"u"?d:d+'="'+Lu(i[d],r)+'"';return u?u+" "+c:c},""),l=i.innerHTML||i.cssText||"",s=B6.indexOf(t)===-1;return o+"<"+t+" "+Bt+'="true" '+a+(s?"/>":">"+l+"")},"")},Jg=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,o){return r[Cl[o]||o]=t[o],r},n)},ab=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,o){return r[V6[o]||o]=t[o],r},n)},lb=function(t,n,r){var o,i=(o={key:n},o[Bt]=!0,o),a=Jg(r,i);return[Q.createElement(ee.TITLE,a,n)]},sb=function(t,n){return n.map(function(r,o){var i,a=(i={key:o},i[Bt]=!0,i);return Object.keys(r).forEach(function(l){var s=Cl[l]||l;if(s===ke.INNER_HTML||s===ke.CSS_TEXT){var u=r.innerHTML||r.cssText;a.dangerouslySetInnerHTML={__html:u}}else a[s]=r[l]}),Q.createElement(t,a)})},ln=function(t,n,r){switch(t){case ee.TITLE:return{toComponent:function(){return lb(t,n.title,n.titleAttributes)},toString:function(){return ob(t,n.title,n.titleAttributes,r)}};case yr.BODY:case yr.HTML:return{toComponent:function(){return Jg(n)},toString:function(){return Xg(n)}};default:return{toComponent:function(){return sb(t,n)},toString:function(){return ib(t,n,r)}}}},ey=function(t){var n=t.baseTag,r=t.bodyAttributes,o=t.encode,i=t.htmlAttributes,a=t.linkTags,l=t.metaTags,s=t.noscriptTags,u=t.scriptTags,d=t.styleTags,c=t.title,f=c===void 0?"":c,h=t.titleAttributes;return{base:ln(ee.BASE,n,o),bodyAttributes:ln(yr.BODY,r,o),htmlAttributes:ln(yr.HTML,i,o),link:ln(ee.LINK,a,o),meta:ln(ee.META,l,o),noscript:ln(ee.NOSCRIPT,s,o),script:ln(ee.SCRIPT,u,o),style:ln(ee.STYLE,d,o),title:ln(ee.TITLE,{title:f,titleAttributes:h},o)}},cb=function(t){var n,r;return r=n=function(o){G6(i,o);function i(){return W6(this,i),q6(this,o.apply(this,arguments))}return i.prototype.shouldComponentUpdate=function(l){return!D6(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,u=l.child,d=l.arrayTypeChildren,c=l.newChildProps,f=l.nestedChildren;return ft({},d,(s={},s[u.type]=[].concat(d[u.type]||[],[ft({},c,this.mapNestedChildrenToProps(u,f))]),s))},i.prototype.mapObjectTypeChildren=function(l){var s,u,d=l.child,c=l.newProps,f=l.newChildProps,h=l.nestedChildren;switch(d.type){case ee.TITLE:return ft({},c,(s={},s[d.type]=h,s.titleAttributes=ft({},f),s));case ee.BODY:return ft({},c,{bodyAttributes:ft({},f)});case ee.HTML:return ft({},c,{htmlAttributes:ft({},f)})}return ft({},c,(u={},u[d.type]=ft({},f),u))},i.prototype.mapArrayTypeChildrenToProps=function(l,s){var u=ft({},s);return Object.keys(l).forEach(function(d){var c;u=ft({},u,(c={},c[d]=l[d],c))}),u},i.prototype.warnOnInvalidChildren=function(l,s){return!0},i.prototype.mapChildrenToProps=function(l,s){var u=this,d={};return Q.Children.forEach(l,function(c){if(!(!c||!c.props)){var f=c.props,h=f.children,y=Kh(f,["children"]),g=ab(y);switch(u.warnOnInvalidChildren(c,h),c.type){case ee.LINK:case ee.META:case ee.NOSCRIPT:case ee.SCRIPT:case ee.STYLE:d=u.flattenArrayTypeChildren({child:c,arrayTypeChildren:d,newChildProps:g,nestedChildren:h});break;default:s=u.mapObjectTypeChildren({child:c,newProps:s,newChildProps:g,nestedChildren:h});break}}}),s=this.mapArrayTypeChildrenToProps(d,s),s},i.prototype.render=function(){var l=this.props,s=l.children,u=Kh(l,["children"]),d=ft({},u);return s&&(d=this.mapChildrenToProps(s,d)),Q.createElement(t,d)},K6(i,null,[{key:"canUseDOM",set:function(l){t.canUseDOM=l}}]),i}(Q.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=ey({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),o},r},ub=function(){return null},db=T6(X6,nb,ey)(ub),Mu=cb(db);Mu.renderStatic=Mu.rewind;var ac="vocs_Anchor",fb="vocs_Autolink";function pb(e){const{pathname:t}=Re();return x.jsx("a",{...e,className:D(e.className,fb),href:`${t}${e.href}`})}function hb(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(pb,{className:D(e.className,ac),...e}):n!=null&&n.match(/^#/)?x.jsx("a",{className:D(e.className,ac),...e,href:`${r}${n}`}):x.jsx(rn,{className:D(e.className,ac),...e})}var mb="vocs_Callout_danger",vb="vocs_Callout_info",gb="vocs_Callout_note",ty="vocs_Callout",yb="vocs_Callout_success",xb="vocs_Callout_tip",_b="vocs_Callout_warning";const wb=Object.freeze(Object.defineProperty({__proto__:null,danger:mb,info:vb,note:gb,root:ty,success:yb,tip:xb,warning:_b},Symbol.toStringTag,{value:"Module"}));function Eb({className:e,children:t,type:n}){return x.jsx("aside",{className:D(e,ty,wb[n]),children:t})}var kb="vocs_Aside";function bb(e){const t=D(e.className,kb);return"data-callout"in e?x.jsx(Eb,{className:t,type:e["data-callout"],children:e.children}):x.jsx("aside",{...e,className:t})}var Cb="vocs_Blockquote";function Pb(e){return x.jsx("blockquote",{...e,className:D(e.className,Cb)})}var Ab="vocs_Code";function Sb(e){const t=Tb(e.children);return x.jsx("code",{...e,className:D(e.className,Ab),children:t})}function Tb(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 Rb="vocs_Details";function $b(e){return x.jsx("details",{...e,className:D(e.className,Rb)})}var Ob="vocs_Authors_authors",Ib="vocs_Authors_link",Lb="vocs_Authors",Yh="vocs_Authors_separator";function ny(e){const{frontmatter:t}=$r(),{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:Lb,children:[i,o&&(i?" by ":"By "),x.jsx("span",{className:Ob,children:o==null?void 0:o.map((a,l)=>{const{text:s,url:u}=Db(a);return x.jsxs(p.Fragment,{children:[u?x.jsx("a",{className:Ib,href:u,target:"_blank",rel:"noopener noreferrer",children:s}):s,lx.jsxs(p.Fragment,{children:[x.jsx("div",{className:jb,children:x.jsxs(Zn,{to:e.path,children:[x.jsx("h2",{className:Ub,children:e.title}),x.jsx(ny,{authors:e.authors,date:e.date}),x.jsxs("p",{className:Nb,children:[e.description," ",x.jsx("span",{className:Fb,children:"[→]"})]})]})}),tx.jsxs(p.Fragment,{children:[x.jsx("div",{className:Qb,children:t.name}),t.items.map((r,o)=>{var i;return x.jsx("div",{className:qb,style:Gt({[Hb]:r.length.toString(),[Wb]:`${((i=t.height)==null?void 0:i.toString())??"40"}px`}),children:r.map((a,l)=>x.jsx(rn,{className:D(Bb,a?Yb:void 0),hideExternalIcon:!0,href:a==null?void 0:a.link,variant:"styleless",children:x.jsx("img",{className:Kb,src:a==null?void 0:a.image,alt:a==null?void 0:a.name})},l))},o)})]},n))})}var Xb="var(--vocs_AutolinkIcon_iconUrl)",Jb="vocs_AutolinkIcon";function e9(e){const{basePath:t}=ot(),n=t;return x.jsx("div",{...e,className:D(e.className,Jb),style:Gt({[Xb]:`url(${n}/.vocs/icons/link.svg)`})})}const lc="rovingFocusGroup.onEntryFocus",t9={bubbles:!1,cancelable:!0},ff="RovingFocusGroup",[ju,ry,n9]=ql(ff),[r9,oy]=kn(ff,[n9]),[o9,i9]=r9(ff),a9=p.forwardRef((e,t)=>p.createElement(ju.Provider,{scope:e.__scopeRovingFocusGroup},p.createElement(ju.Slot,{scope:e.__scopeRovingFocusGroup},p.createElement(l9,q({},e,{ref:t}))))),l9=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:o=!1,dir:i,currentTabStopId:a,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:s,onEntryFocus:u,...d}=e,c=p.useRef(null),f=Ue(t,c),h=Gl(i),[y=null,g]=ar({prop:a,defaultProp:l,onChange:s}),[w,m]=p.useState(!1),v=at(u),_=ry(n),E=p.useRef(!1),[C,k]=p.useState(0);return p.useEffect(()=>{const P=c.current;if(P)return P.addEventListener(lc,v),()=>P.removeEventListener(lc,v)},[v]),p.createElement(o9,{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(de.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 T=new CustomEvent(lc,t9);if(P.currentTarget.dispatchEvent(T),!T.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);iy($)}}E.current=!1}),onBlur:le(e.onBlur,()=>m(!1))})))}),s9="RovingFocusGroupItem",c9=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:o=!1,tabStopId:i,...a}=e,l=on(),s=i||l,u=i9(s9,n),d=u.currentTabStopId===s,c=ry(n),{onFocusableItemAdd:f,onFocusableItemRemove:h}=u;return p.useEffect(()=>{if(r)return f(),()=>h()},[r,f,h]),p.createElement(ju.ItemSlot,{scope:n,id:s,focusable:r,active:o},p.createElement(de.span,q({tabIndex:d?0:-1,"data-orientation":u.orientation},a,{ref:t,onMouseDown:le(e.onMouseDown,y=>{r?u.onItemFocus(s):y.preventDefault()}),onFocus:le(e.onFocus,()=>u.onItemFocus(s)),onKeyDown:le(e.onKeyDown,y=>{if(y.key==="Tab"&&y.shiftKey){u.onItemShiftTab();return}if(y.target!==y.currentTarget)return;const g=f9(y,u.orientation,u.dir);if(g!==void 0){y.preventDefault();let m=c().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=u.loop?p9(m,v+1):m.slice(v+1)}setTimeout(()=>iy(m))}})})))}),u9={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function d9(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function f9(e,t,n){const r=d9(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return u9[r]}function iy(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function p9(e,t){return e.map((n,r)=>e[(t+r)%e.length])}const h9=a9,m9=c9,ay="Tabs",[v9,CP]=kn(ay,[oy]),ly=oy(),[g9,pf]=v9(ay),y9=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,onValueChange:o,defaultValue:i,orientation:a="horizontal",dir:l,activationMode:s="automatic",...u}=e,d=Gl(l),[c,f]=ar({prop:r,onChange:o,defaultProp:i});return p.createElement(g9,{scope:n,baseId:on(),value:c,onValueChange:f,orientation:a,dir:d,activationMode:s},p.createElement(de.div,q({dir:d,"data-orientation":a},u,{ref:t})))}),x9="TabsList",_9=p.forwardRef((e,t)=>{const{__scopeTabs:n,loop:r=!0,...o}=e,i=pf(x9,n),a=ly(n);return p.createElement(h9,q({asChild:!0},a,{orientation:i.orientation,dir:i.dir,loop:r}),p.createElement(de.div,q({role:"tablist","aria-orientation":i.orientation},o,{ref:t})))}),w9="TabsTrigger",E9=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,disabled:o=!1,...i}=e,a=pf(w9,n),l=ly(n),s=sy(a.baseId,r),u=cy(a.baseId,r),d=r===a.value;return p.createElement(m9,q({asChild:!0},l,{focusable:!o,active:d}),p.createElement(de.button,q({type:"button",role:"tab","aria-selected":d,"aria-controls":u,"data-state":d?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:s},i,{ref:t,onMouseDown:le(e.onMouseDown,c=>{!o&&c.button===0&&c.ctrlKey===!1?a.onValueChange(r):c.preventDefault()}),onKeyDown:le(e.onKeyDown,c=>{[" ","Enter"].includes(c.key)&&a.onValueChange(r)}),onFocus:le(e.onFocus,()=>{const c=a.activationMode!=="manual";!d&&!o&&c&&a.onValueChange(r)})})))}),k9="TabsContent",b9=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,forceMount:o,children:i,...a}=e,l=pf(k9,n),s=sy(l.baseId,r),u=cy(l.baseId,r),d=r===l.value,c=p.useRef(d);return p.useEffect(()=>{const f=requestAnimationFrame(()=>c.current=!1);return()=>cancelAnimationFrame(f)},[]),p.createElement(bn,{present:o||d},({present:f})=>p.createElement(de.div,q({"data-state":d?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":s,hidden:!f,id:u,tabIndex:0},a,{ref:t,style:{...e.style,animationDuration:c.current?"0s":void 0}}),f&&i))});function sy(e,t){return`${e}-trigger-${t}`}function cy(e,t){return`${e}-content-${t}`}const C9=y9,P9=_9,A9=E9,S9=b9;var T9="vocs_Tabs_content",R9="vocs_Tabs_list",$9="vocs_Tabs",O9="vocs_Tabs_trigger";function I9(e){return x.jsx(C9,{...e,className:D(e.className,$9)})}function L9(e){return x.jsx(P9,{...e,className:D(e.className,R9)})}function D9(e){return x.jsx(A9,{...e,className:D(e.className,O9)})}function N9(e){return x.jsx(S9,{...e,className:D(e.className,T9)})}var M9="vocs_CodeGroup";function j9({children:e}){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(I9,{className:M9,defaultValue:t[0].title,children:[x.jsx(L9,{"aria-label":"Code group",children:t.map(({title:n},r)=>x.jsx(D9,{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(N9,{"data-shiki":i,value:n||o.toString(),children:r},n||o.toString())})]})}var F9="vocs_Div",z9="vocs_Step_content",U9="vocs_Step",uy="vocs_Step_title",V9="vocs_H2";function dy(e){return x.jsx(Ro,{...e,className:D(e.className,V9),level:2})}var B9="vocs_H3";function fy(e){return x.jsx(Ro,{...e,className:D(e.className,B9),level:3})}var H9="vocs_H4";function py(e){return x.jsx(Ro,{...e,className:D(e.className,H9),level:4})}var W9="vocs_H5";function hy(e){return x.jsx(Ro,{...e,className:D(e.className,W9),level:5})}var K9="vocs_H6";function my(e){return x.jsx(Ro,{...e,className:D(e.className,K9),level:6})}function G9({children:e,className:t,title:n,titleLevel:r=2}){const o=(()=>{if(r===2)return dy;if(r===3)return fy;if(r===4)return py;if(r===5)return hy;if(r===6)return my;throw new Error("Invalid.")})();return x.jsxs("div",{className:D(t,U9),children:[typeof n=="string"?x.jsx(o,{className:uy,children:n}):n,x.jsx("div",{className:z9,children:e})]})}var q9="vocs_Steps";function Y9({children:e,className:t}){return x.jsx("div",{className:D(t,q9),children:e})}function Q9({children:e}){return Array.isArray(e)?x.jsx(Y9,{children:e.map(({props:t},n)=>{const[r,...o]=Array.isArray(t.children)?t.children:[t.children];return x.jsx(G9,{title:p.cloneElement(r,{className:uy}),children:o},n)})}):null}var Z9="vocs_Subtitle";function X9({children:e}){return x.jsx("div",{className:Z9,role:"doc-subtitle",children:e})}function J9(e){const{layout:t}=Or(),n=D(e.className,F9);return e.className==="code-group"?x.jsx(j9,{...e,className:n}):"data-authors"in e?x.jsx(ny,{}):"data-blog-posts"in e?x.jsx(Vb,{}):"data-sponsors"in e?x.jsx(Zb,{}):"data-autolink-icon"in e&&t==="docs"?x.jsx(e9,{...e,className:n}):"data-vocs-steps"in e?x.jsx(Q9,{...e,className:n}):e.role==="doc-subtitle"?x.jsx(X9,{...e}):x.jsx("div",{...e,className:n})}var eC="vocs_Figcaption";function tC(e){const t=D(e.className,eC);return x.jsx("figcaption",{...e,className:t})}var nC="vocs_Figure";function rC(e){const t=D(e.className,nC);return x.jsx("figure",{...e,className:t})}var oC="vocs_Header";function iC(e){return x.jsx("header",{...e,className:D(e.className,oC)})}var aC="vocs_HorizontalRule";function lC(e){return x.jsx("hr",{...e,className:D(e.className,aC)})}var sC="vocs_List_ordered",cC="vocs_List",uC="vocs_List_unordered";function Zh({ordered:e,...t}){const n=e?"ol":"ul";return x.jsx(n,{...t,className:D(t.className,cC,e?sC:uC)})}var dC="vocs_ListItem";function fC(e){return x.jsx("li",{...e,className:D(e.className,dC)})}function pC(){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 hC="vocs_CopyButton";function mC(){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 vC(){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 gC({copy:e,copied:t}){return x.jsx("button",{className:hC,onClick:e,type:"button",children:t?x.jsx(st,{label:"Copied",size:"14px",icon:mC}):x.jsx(st,{label:"Copy",size:"18px",icon:vC})})}var yC="vocs_CodeBlock";function xC(e){return x.jsx("div",{...e,className:D(e.className,yC)})}function _C(){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 wC(){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 EC="vocs_CodeTitle";function kC({children:e,className:t,language:n,...r}){return x.jsxs("div",{...r,className:D(t,EC),children:[n==="bash"?x.jsx(st,{label:"Terminal",size:"14px",icon:wC,style:{marginTop:3}}):e.match(/\.(.*)$/)?x.jsx(st,{label:"File",size:"14px",icon:_C,style:{marginTop:1}}):null,e]})}var bC="vocs_Pre",CC="vocs_Pre_wrapper";function PC({children:e,className:t,...n}){const{copied:r,copy:o,ref:i}=pC();function a(u){return!u||typeof u!="object"?u:"props"in u?{...u,props:{...u.props,children:Array.isArray(u.props.children)?u.props.children.map(a):a(u.props.children)}}:u}const l=p.useMemo(()=>a(e),[e]);return(u=>t!=null&&t.includes("shiki")?x.jsxs(xC,{children:[n["data-title"]&&x.jsx(kC,{language:n["data-lang"],children:n["data-title"]}),u]}):u)(x.jsx("div",{className:D(CC),children:x.jsxs("pre",{ref:i,...n,className:D(t,bC),children:["data-language"in n&&x.jsx(gC,{copied:r,copy:o}),l]})}))}var AC="vocs_Footnotes";function SC(e){return x.jsx("section",{...e,className:D(e.className,AC)})}var Xh="vocs_Section";function TC(e){return"data-footnotes"in e?x.jsx(SC,{...e,className:D(e.className,Xh)}):x.jsx("section",{...e,className:D(e.className,Xh)})}var Jh="vocs_Span";function Ka(e,t){if(!e||!t)return!1;const n=t.getRootNode==null?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&Ru(n)){let r=t;for(;r;){if(e===r)return!0;r=r.parentNode||r.host}}return!1}function vy(e,t){const n=["mouse","pen"];return t||n.push("",void 0),n.includes(e)}function Sa(e){return(e==null?void 0:e.ownerDocument)||document}function RC(e){return"composedPath"in e?e.composedPath()[0]:e.target}const $C=Al.useInsertionEffect,OC=$C||(e=>e());function IC(e){const t=p.useRef(()=>{});return OC(()=>{t.current=e}),p.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o"floating-ui-"+LC++;function DC(){const[e,t]=p.useState(()=>sc?e0():void 0);return Mi(()=>{e==null&&t(e0())},[]),p.useEffect(()=>{sc||(sc=!0)},[]),e}const NC=Al.useId,gy=NC||DC,MC=p.forwardRef(function(t,n){let{context:{placement:r,elements:{floating:o},middlewareData:{arrow:i}},width:a=14,height:l=7,tipRadius:s=0,strokeWidth:u=0,staticOffset:d,stroke:c,d:f,style:{transform:h,...y}={},...g}=t;const w=gy();if(!o)return null;u*=2;const m=u/2,v=a/2*(s/-8+1),_=l/2*s/4,[E,C]=r.split("-"),k=Eg.isRTL(o),P=!!f,A=E==="top"||E==="bottom",T=d&&C==="end"?"bottom":"top";let O=d&&C==="end"?"right":"left";d&&k&&(O=C==="end"?"left":"right");const j=(i==null?void 0:i.x)!=null?d||i.x:"",N=(i==null?void 0:i.y)!=null?d||i.y:"",F=f||"M0,0"+(" H"+a)+(" L"+(a-v)+","+(l-_))+(" Q"+a/2+","+l+" "+v+","+(l-_))+" Z",$={top:P?"rotate(180deg)":"",left:P?"rotate(90deg)":"rotate(-90deg)",bottom:P?"":"rotate(180deg)",right:P?"rotate(-90deg)":"rotate(90deg)"}[E];return p.createElement("svg",Fu({},g,{"aria-hidden":!0,ref:n,width:P?a:a+u,height:a,viewBox:"0 0 "+a+" "+(l>a?l:a),style:{position:"absolute",pointerEvents:"none",[O]:j,[T]:N,[E]:A||P?"100%":"calc(100% - "+u/2+"px)",transform:""+$+(h??""),...y}}),u>0&&p.createElement("path",{clipPath:"url(#"+w+")",fill:"none",stroke:c,strokeWidth:u+(f?0:1),d:F}),p.createElement("path",{stroke:u&&!f?g.fill:"none",d:F}),p.createElement("clipPath",{id:w},p.createElement("rect",{x:-m,y:m*(P?-1:1),width:a+u,height:a})))});function jC(){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 FC=p.createContext(null),zC=p.createContext(null),yy=()=>{var e;return((e=p.useContext(FC))==null?void 0:e.id)||null},xy=()=>p.useContext(zC);function UC(e){return"data-floating-ui-"+e}function t0(e){const t=p.useRef(e);return Mi(()=>{t.current=e}),t}const n0=UC("safe-polygon");function cc(e,t,n){return n&&!vy(n)?0:typeof e=="number"?e:e==null?void 0:e[t]}function VC(e,t){t===void 0&&(t={});const{open:n,onOpenChange:r,dataRef:o,events:i,elements:{domReference:a,floating:l},refs:s}=e,{enabled:u=!0,delay:d=0,handleClose:c=null,mouseOnly:f=!1,restMs:h=0,move:y=!0}=t,g=xy(),w=yy(),m=t0(c),v=t0(d),_=p.useRef(),E=p.useRef(),C=p.useRef(),k=p.useRef(),P=p.useRef(!0),A=p.useRef(!1),T=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(!u)return;function $(U){let{open:W}=U;W||(clearTimeout(E.current),clearTimeout(k.current),P.current=!0)}return i.on("openchange",$),()=>{i.off("openchange",$)}},[u,i]),p.useEffect(()=>{if(!u||!m.current||!n)return;function $(W){O()&&r(!1,W,"hover")}const U=Sa(l).documentElement;return U.addEventListener("mouseleave",$),()=>{U.removeEventListener("mouseleave",$)}},[l,n,r,u,m,O]);const j=p.useCallback(function($,U,W){U===void 0&&(U=!0),W===void 0&&(W="hover");const V=cc(v.current,"close",_.current);V&&!C.current?(clearTimeout(E.current),E.current=setTimeout(()=>r(!1,$,W),V)):U&&(clearTimeout(E.current),r(!1,$,W))},[v,r]),N=p.useCallback(()=>{T.current(),C.current=void 0},[]),F=p.useCallback(()=>{if(A.current){const $=Sa(s.floating.current).body;$.style.pointerEvents="",$.removeAttribute(n0),A.current=!1}},[s]);return p.useEffect(()=>{if(!u)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&&!vy(_.current)||h>0&&cc(v.current,"open")===0)return;const z=cc(v.current,"open",_.current);z?E.current=setTimeout(()=>{r(!0,L,"hover")},z):r(!0,L,"hover")}function W(L){if($())return;T.current();const z=Sa(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(){F(),N(),j(L,!0,"safe-polygon")}});const J=C.current;z.addEventListener("mousemove",J),T.current=()=>{z.removeEventListener("mousemove",J)};return}(_.current==="touch"?!Ka(l,L.relatedTarget):!0)&&j(L)}function V(L){$()||m.current==null||m.current({...e,tree:g,x:L.clientX,y:L.clientY,onClose(){F(),N(),j(L)}})(L)}if(nt(a)){const L=a;return n&&L.addEventListener("mouseleave",V),l==null||l.addEventListener("mouseleave",V),y&&L.addEventListener("mousemove",U,{once:!0}),L.addEventListener("mouseenter",U),L.addEventListener("mouseleave",W),()=>{n&&L.removeEventListener("mouseleave",V),l==null||l.removeEventListener("mouseleave",V),y&&L.removeEventListener("mousemove",U),L.removeEventListener("mouseenter",U),L.removeEventListener("mouseleave",W)}}},[a,l,u,e,f,h,y,j,N,F,r,n,g,v,m,o]),Mi(()=>{var $;if(u&&n&&($=m.current)!=null&&$.__options.blockPointerEvents&&O()){const W=Sa(l).body;if(W.setAttribute(n0,""),W.style.pointerEvents="none",A.current=!0,nt(a)&&l){var U;const V=a,L=g==null||(U=g.nodesRef.current.find(z=>z.id===w))==null||(U=U.context)==null?void 0:U.elements.floating;return L&&(L.style.pointerEvents=""),V.style.pointerEvents="auto",l.style.pointerEvents="auto",()=>{V.style.pointerEvents="",l.style.pointerEvents=""}}}},[u,n,w,l,a,g,m,O]),Mi(()=>{n||(_.current=void 0,N(),F())},[n,N,F]),p.useEffect(()=>()=>{N(),clearTimeout(E.current),clearTimeout(k.current),F()},[u,a,N,F]),p.useMemo(()=>{if(!u)return{};function $(U){_.current=U.pointerType}return{reference:{onPointerDown:$,onPointerEnter:$,onMouseMove(U){n||h===0||(clearTimeout(k.current),k.current=setTimeout(()=>{P.current||r(!0,U.nativeEvent,"hover")},h))}},floating:{onMouseEnter(){clearTimeout(E.current)},onMouseLeave(U){j(U.nativeEvent,!1)}}}},[u,h,n,r,j])}function BC(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 HC(e){var t;e===void 0&&(e={});const{open:n=!1,onOpenChange:r,nodeId:o}=e,[i,a]=p.useState(null),l=((t=e.elements)==null?void 0:t.reference)||i,s=Pg(e),u=xy(),d=yy()!=null,c=IC((C,k,P)=>{C&&(h.current.openEvent=k),y.emit("openchange",{open:C,event:k,reason:P,nested:d}),r==null||r(C,k,P)}),f=p.useRef(null),h=p.useRef({}),y=p.useState(()=>jC())[0],g=gy(),w=p.useCallback(C=>{const k=nt(C)?{getBoundingClientRect:()=>C.getBoundingClientRect(),contextElement:C}:C;s.refs.setReference(k)},[s.refs]),m=p.useCallback(C=>{(nt(C)||C===null)&&(f.current=C,a(C)),(nt(s.refs.reference.current)||s.refs.reference.current===null||C!==null&&!nt(C))&&s.refs.setReference(C)},[s.refs]),v=p.useMemo(()=>({...s.refs,setReference:m,setPositionReference:w,domReference:f}),[s.refs,m,w]),_=p.useMemo(()=>({...s.elements,domReference:l}),[s.elements,l]),E=p.useMemo(()=>({...s,refs:v,elements:_,dataRef:h,nodeId:o,floatingId:g,events:y,open:n,onOpenChange:c}),[s,o,g,y,n,c,v,_]);return Mi(()=>{const C=u==null?void 0:u.nodesRef.current.find(k=>k.id===o);C&&(C.context=E)}),p.useMemo(()=>({...s,context:E,refs:v,elements:_}),[s,v,_,E])}const r0="active",o0="selected";function uc(e,t,n){const r=new Map,o=n==="item";let i=e;if(o&&e){const{[r0]:a,[o0]: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[u,d]=s;if(!(o&&[r0,o0].includes(u)))if(u.indexOf("on")===0){if(r.has(u)||r.set(u,[]),typeof d=="function"){var c;(c=r.get(u))==null||c.push(d),a[u]=function(){for(var f,h=arguments.length,y=new Array(h),g=0;gw(...y)).find(w=>w!==void 0)}}}else a[u]=d}),a),{})}}function WC(e){e===void 0&&(e=[]);const t=e,n=p.useCallback(i=>uc(i,e,"reference"),t),r=p.useCallback(i=>uc(i,e,"floating"),t),o=p.useCallback(i=>uc(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 i0(e,t){const[n,r]=e;let o=!1;const i=t.length;for(let a=0,l=i-1;a=r!=c>=r&&n<=(d-s)*(r-u)/(c-u)+s&&(o=!o)}return o}function KC(e,t){return e[0]>=t.x&&e[0]<=t.x+t.width&&e[1]>=t.y&&e[1]<=t.y+t.height}function GC(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 u(c,f){const h=performance.now(),y=h-s;if(a===null||l===null||y===0)return a=c,l=f,s=h,null;const g=c-a,w=f-l,v=Math.sqrt(g*g+w*w)/y;return a=c,l=f,s=h,v}const d=c=>{let{x:f,y:h,placement:y,elements:g,onClose:w,nodeId:m,tree:v}=c;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],T=RC(E),O=E.type==="mouseleave",j=Ka(g.floating,T),N=Ka(g.domReference,T),F=g.domReference.getBoundingClientRect(),$=g.floating.getBoundingClientRect(),U=y.split("-")[0],W=f>$.right-$.width/2,V=h>$.bottom-$.height/2,L=KC(A,F),z=$.width>F.width,K=$.height>F.height,J=(z?F:$).left,ce=(z?F:$).right,Ve=(K?F:$).top,ye=(K?F:$).bottom;if(j&&(i=!0,!O))return;if(N&&(i=!1),N&&!O){i=!0;return}if(O&&nt(E.relatedTarget)&&Ka(g.floating,E.relatedTarget)||v&&BC(v.nodesRef.current,m).some(Be=>{let{context:_e}=Be;return _e==null?void 0:_e.open}))return;if(U==="top"&&h>=F.bottom-1||U==="bottom"&&h<=F.top+1||U==="left"&&f>=F.right-1||U==="right"&&f<=F.left+1)return C();let $e=[];switch(U){case"top":$e=[[J,F.top+1],[J,$.bottom-1],[ce,$.bottom-1],[ce,F.top+1]];break;case"bottom":$e=[[J,$.top+1],[J,F.bottom-1],[ce,F.bottom-1],[ce,$.top+1]];break;case"left":$e=[[$.right-1,ye],[$.right-1,Ve],[F.left+1,Ve],[F.left+1,ye]];break;case"right":$e=[[F.right-1,ye],[F.right-1,Ve],[$.left+1,Ve],[$.left+1,ye]];break}function xe(Be){let[_e,Ce]=Be;switch(U){case"top":{const Nt=[z?_e+t/2:W?_e+t*4:_e-t*4,Ce+t+1],Pe=[z?_e-t/2:W?_e+t*4:_e-t*4,Ce+t+1],dt=[[$.left,W||z?$.bottom-t:$.top],[$.right,W?z?$.bottom-t:$.top:$.bottom-t]];return[Nt,Pe,...dt]}case"bottom":{const Nt=[z?_e+t/2:W?_e+t*4:_e-t*4,Ce-t],Pe=[z?_e-t/2:W?_e+t*4:_e-t*4,Ce-t],dt=[[$.left,W||z?$.top+t:$.bottom],[$.right,W?z?$.top+t:$.bottom:$.top+t]];return[Nt,Pe,...dt]}case"left":{const Nt=[_e+t+1,K?Ce+t/2:V?Ce+t*4:Ce-t*4],Pe=[_e+t+1,K?Ce-t/2:V?Ce+t*4:Ce-t*4];return[...[[V||K?$.right-t:$.left,$.top],[V?K?$.right-t:$.left:$.right-t,$.bottom]],Nt,Pe]}case"right":{const Nt=[_e-t,K?Ce+t/2:V?Ce+t*4:Ce-t*4],Pe=[_e-t,K?Ce-t/2:V?Ce+t*4:Ce-t*4],dt=[[V||K?$.left+t:$.right,$.top],[V?K?$.left+t:$.right:$.left+t,$.bottom]];return[Nt,Pe,...dt]}}}if(!i0([k,P],$e)){if(i&&!L)return C();if(!O&&r){const Be=u(E.clientX,E.clientY);if(Be!==null&&Be<.1)return C()}i0([k,P],xe([f,h]))?!i&&r&&(o=window.setTimeout(C,40)):C()}}};return d.__options={blockPointerEvents:n},d}function qC({children:e,...t}){const[n,r]=e,o=p.useRef(null),[i,a]=p.useState(!1),{context:l,refs:s,floatingStyles:u}=HC({middleware:[bg({element:o}),pg(8),kg()],open:i,onOpenChange:a,placement:"bottom-start"}),d=VC(l,{handleClose:GC()}),{getReferenceProps:c,getFloatingProps:f}=WC([d]),h=r.props.children,y=n.props.children;return x.jsxs("span",{...t,children:[x.jsx("span",{className:"twoslash-target",ref:s.setReference,...c(),children:h}),i&&x.jsxs("div",{className:"twoslash-popup-info-hover",ref:s.setFloating,style:u,...f(),children:[x.jsx(MC,{ref:o,context:l,fill:Xp.background5,height:3,stroke:Xp.border2,strokeWidth:1,width:7}),x.jsx("div",{className:"twoslash-popup-scroll-container",children:y})]})]})}function YC(e){var n;const t=D(e.className,Jh);return(n=e.className)!=null&&n.includes("twoslash-hover")?x.jsx(qC,{...e,className:t}):x.jsx("span",{...e,className:D(e.className,Jh)})}var QC="vocs_CalloutTitle";function ZC({className:e,children:t}){return x.jsx("strong",{className:D(e,QC),children:t})}var a0="vocs_Strong";function XC(e){return"data-callout-title"in e&&typeof e.children=="string"?x.jsx(ZC,{...e,className:D(e.className,a0),children:e.children}):x.jsx("strong",{...e,className:D(e.className,a0)})}var JC="vocs_Summary";function eP(e){return x.jsx("summary",{...e,className:D(e.className,JC)})}var tP="vocs_Table";function nP(e){return x.jsx("table",{...e,className:D(e.className,tP)})}var rP="vocs_TableCell";function oP(e){return x.jsx("td",{...e,className:D(e.className,rP)})}var iP="vocs_TableHeader";function aP(e){return x.jsx("th",{...e,className:D(e.className,iP)})}var lP="vocs_TableRow";function sP(e){return x.jsx("tr",{...e,className:D(e.className,lP)})}const cP={a:hb,aside:bb,blockquote:Pb,code:Sb,details:$b,div:J9,pre:PC,header:iC,figcaption:tC,figure:rC,h1:Qv,h2:dy,h3:fy,h4:py,h5:hy,h6:my,hr:lC,kd:L1,li:fC,ol:e=>x.jsx(Zh,{ordered:!0,...e}),p:Zv,section:TC,span:YC,strong:XC,summary:eP,table:nP,td:oP,th:aP,tr:sP,ul:e=>x.jsx(Zh,{ordered:!1,...e})};function uP(){const{pathname:e}=Re(),t=ot(),{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 zu(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(dP,{frontmatter:r}),typeof window<"u"&&x.jsx(bw,{}),x.jsx(g6,{components:cP,children:x.jsx(e7,{frontmatter:r,path:i,children:x.jsx(e1.Provider,{value:{filePath:n,frontmatter:r,lastUpdatedAt:o,previousPath:l.current},children:t})})})]})}function dP({frontmatter:e}){const t=ot(),n=uP(),{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,u=t.title&&!l.includes(t.title),d=typeof window<"u"&&window.location.hostname==="localhost";return x.jsxs(Mu,{defaultTitle:t.title,titleTemplate:u?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:dc(i)}),i&&typeof i!="string"&&x.jsx("link",{rel:"icon",href:i.light,type:dc(i.light)}),i&&typeof i!="string"&&x.jsx("link",{rel:"icon",href:i.dark,type:dc(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 dc(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 fP=(()=>{const e=Bd.find(({path:t})=>t==="*");return e?{path:e.path,lazy:async()=>{const{frontmatter:t,...n}=await e.lazy();return{...n,element:x.jsx(zu,{frontmatter:t,path:e.path,children:x.jsx(Ou,{children:x.jsx(n.default,{})})})}}}:{path:"*",lazy:void 0,element:x.jsx(zu,{frontmatter:{layout:"minimal"},path:"*",children:x.jsx(Ou,{children:x.jsx(u5,{})})})}})(),l0=[...Bd.filter(({path:e})=>e!=="*").map(e=>({path:e.path,lazy:async()=>{const{frontmatter:t,...n}=await e.lazy();return{...n,element:x.jsx(zu,{filePath:e.filePath,frontmatter:t,lastUpdatedAt:e.lastUpdatedAt,path:e.path,children:x.jsx(Ou,{children:x.jsx(n.default,{})})})}}})),fP];async function pP(e,t){var r;const n=(r=pr(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 hP(){const e=document.querySelectorAll('style[data-vocs-temp-style="true"]');for(const t of e)t.remove()}mP();async function mP(){const e=Hv().basePath;await pP(l0,e),hP();const t=dw(l0,{basename:e});Ev(document.getElementById("app"),x.jsx(Hw,{children:x.jsx(_w,{router:t})}))}export{N9 as C,rn as L,I9 as R,D9 as T,ot as a,r8 as b,D as c,L9 as d,Eb as e,Q as f,vP as g,Py as h,tr as i,x as j,gP as k,p as r,yP as s,v6 as u}; function __vite__mapDeps(indexes) { if (!__vite__mapDeps.viteFileDeps) { - __vite__mapDeps.viteFileDeps = ["assets/index-zvSSGYfB.js","assets/HomePage.css.js.vanilla-l0sNRNKZ.js","assets/embedded-wallet-BfyLlYIQ.js","assets/token-directory-DVROtl18.js","assets/03-fetch-tokens-D0WixhHL.js","assets/TabGroup-CR9eTTBb.js","assets/contracts-CjOFm7ZO.js","assets/Video-DFRdAWy3.js","assets/gas-tank-Bz1VtCNO.js","assets/getting-started-Mfz2S2Lp.js","assets/CardGrid-DjVwb6Sh.js","assets/indexer-BNcqlYvI.js","assets/marketplaces-g41MwN17.js","assets/node-gateway-B-vKmDRu.js","assets/overview-C941poV6.js","assets/project-management-DsGrb2Gi.js","assets/project-settings-CMSsJ5Y3.js","assets/wallet-sdks-Cc2jbMjt.js","assets/01-overview-B8wB59mz.js","assets/07-native-network-balance-CvWur8gO.js","assets/white-label-marketplace-DxCxhU5v.js","assets/01-deploy-an-item-collection-C0Yi1LxS.js","assets/02-deploy-ERC20-currency-CDfzyuDC.js","assets/01-overview-BwLa55n_.js","assets/03-get-top-orders-CuGlHPhA.js","assets/04-get-orderbook-BX14J_v-.js","assets/05-get-user-activities-BjO2VX3q.js","assets/06-orderbook-transactions-zkP6j4hb.js","assets/02-universal-deployer-DEID6HbY.js","assets/03-wallet-factory-QCZEaeZR.js","assets/04-wallet-configuration-DjII-_lO.js","assets/04-use-wallets-CpqAdL-1.js","assets/01-connect-wallet-U8b6QA2h.js","assets/03-sign-message-67OGb3o1.js"] + __vite__mapDeps.viteFileDeps = ["assets/index-Bzi1W8NW.js","assets/HomePage.css.js.vanilla-l0sNRNKZ.js","assets/embedded-wallet-DLKt2LEl.js","assets/token-directory-u4Sdw-ST.js","assets/03-fetch-tokens-DDkmBp8W.js","assets/TabGroup-4xq3SqP5.js","assets/template-marketplace-api-CMxsDKvn.js","assets/contracts-CuvV6GHJ.js","assets/Video-D4tib21T.js","assets/gas-tank-5jwCKQMo.js","assets/getting-started-tGSASkus.js","assets/CardGrid-BJuHU1g_.js","assets/indexer-C1rQqZDC.js","assets/marketplaces-C1EU8FD8.js","assets/node-gateway-AlJTIeLe.js","assets/overview-CxmFtSTo.js","assets/project-management-n9UsdPJr.js","assets/project-settings-BpxUzeh_.js","assets/wallet-sdks-Co1VpyGC.js","assets/01-overview-CfZ4B1C6.js","assets/07-native-network-balance-BS__wyoA.js","assets/white-label-marketplace-CCd3phEf.js","assets/01-deploy-an-item-collection-DjzMitxr.js","assets/02-deploy-ERC20-currency-CJ-woKNT.js","assets/01-overview-CgIU_uUT.js","assets/03-get-top-orders-BE-_zj92.js","assets/04-get-orderbook-Dy7YyvsP.js","assets/05-get-user-activities-DkfpsBW4.js","assets/06-orderbook-transactions-BeUtSFOp.js","assets/02-universal-deployer-V3lr9jJW.js","assets/03-wallet-factory-BQXRuWg_.js","assets/04-wallet-configuration-Bs_jtNnf.js","assets/04-use-wallets-Bbt6hEyu.js","assets/01-connect-wallet-Dt-ODA_X.js","assets/03-sign-message-C06zBfE6.js"] } return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) } diff --git a/assets/index-zvSSGYfB.js b/assets/index-zvSSGYfB.js deleted file mode 100644 index 8060028ce1..0000000000 --- a/assets/index-zvSSGYfB.js +++ /dev/null @@ -1,9 +0,0 @@ -import{j as e,L as m,c as a,a as b,b as j,R as u,d as y,T as l,C as n,u as h}from"./index-BXOUdEEZ.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";var p="vocs_Button_button",f="vocs_Button_button_accent";function v({children:s,className:t,href:r,variant:g}){return e.jsx(m,{className:a(t,p,g==="accent"&&f),href:r,variant:"styleless",children:s})}var k="vocs_HomePage_button",w="vocs_HomePage_buttons",_="vocs_HomePage_description",P="vocs_HomePage_logo",c="vocs_HomePage_packageManager",S="vocs_HomePage",q="vocs_HomePage_tabs",d="vocs_HomePage_tabsContent",I="vocs_HomePage_tabsList",A="vocs_HomePage_tagline",N="vocs_HomePage_title";function C({children:s,className:t}){return e.jsx("div",{className:a(t,S),children:s})}function i({className:s}){const{logoUrl:t,title:r}=b();return t?e.jsx("div",{className:a(s,P),children:e.jsx(j,{})}):e.jsx("h1",{className:a(s,N),children:r})}function L({children:s,className:t}){return e.jsx("div",{className:a(t,A),children:s})}function H({children:s,className:t}){return e.jsx("div",{className:a(t,_),children:s})}function M({children:s,className:t}){return e.jsx("div",{className:a(t,w),children:s})}function B(s){return e.jsx(v,{...s,className:a(k,s.className)})}function W({name:s,type:t="install"}){return e.jsxs(u,{className:q,defaultValue:"npm",children:[e.jsxs(y,{className:I,children:[e.jsx(l,{value:"npm",children:"npm"}),e.jsx(l,{value:"pnpm",children:"pnpm"}),e.jsx(l,{value:"yarn",children:"yarn"})]}),e.jsxs(n,{className:d,value:"npm",children:[e.jsx("span",{className:c,children:"npm"})," ",t==="init"?"init":"install"," ",s]}),e.jsxs(n,{className:d,value:"pnpm",children:[e.jsx("span",{className:c,children:"pnpm"})," ",t==="init"?"create":"install"," ",s]}),e.jsxs(n,{className:d,value:"yarn",children:[e.jsx("span",{className:c,children:"yarn"})," ",t==="init"?"create":"install"," ",s]})]})}const D=Object.freeze(Object.defineProperty({__proto__:null,Button:B,Buttons:M,Description:H,InstallPackage:W,Logo:i,Root:C,Tagline:L},Symbol.toStringTag,{value:"Module"})),R={title:"Sequence - Web3 Gaming Platform",layout:"landing",showLogo:!1,content:{horizontalPadding:"0px",width:"100%",verticalPadding:"0px"}};function x(s){const t={p:"p",...h(),...s.components};return D||o("HomePage",!1),i||o("HomePage.Logo",!0),e.jsxs(e.Fragment,{children:[e.jsx("section",{class:"bg-white dark:bg-[#232225]",children:e.jsxs("div",{class:"py-8 px-4 mx-auto max-w-screen-xl sm:py-16 lg:px-6",children:[e.jsxs("div",{class:"mb-8 max-w-screen-md lg:mb-16",children:[e.jsx("div",{class:"flex justify-start mb-4 text-4xl font-extrabold text-gray-900 dark:text-white",children:e.jsx(i,{})}),e.jsx("p",{class:"text-gray-500 font-bold sm:text-xl dark:text-gray-400",children:e.jsx(t.p,{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.`})})]}),e.jsxs("div",{class:"mb-8 max-w-screen-md lg:mb-16",children:[e.jsx("h2",{class:"mb-4 text-4xl font-extrabold text-gray-900 dark:text-white",children:e.jsx(t.p,{children:"Solutions"})}),e.jsx("p",{class:"text-gray-500 font-bold sm:text-xl dark:text-gray-400",children:e.jsx(t.p,{children:`Follow our solution guides to boost your game's acquisition, -monetization and retention with the power of web3.`})})]}),e.jsxs("div",{class:"space-y-8 md:grid md:grid-cols-2 lg:grid-cols-3 md:gap-12 md:space-y-0",children:[e.jsxs("div",{children:[e.jsx("div",{class:"mb-4 text-gray-700 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Acquire Players"})}),e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Universal Wallet"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Easily onboard web3-native players with a complete Universal Wallet."})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"In-Game Wallet"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:`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.`})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Collectibles"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Deploy and manage contracts, collections, and tokens with our no-code Builder."})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Airdropper"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Create airdrop campaigns and engage specific players with rewards."})})]})]})]}),e.jsxs("div",{children:[e.jsx("div",{class:"mb-4 text-gray-700 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Earn More Revenue"})}),e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"White-label Marketplace"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Launch an in-game collectibles marketplace within minutes."})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Orderbook API"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Integrate custom in-game marketplaces with our APIs."})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"NFT Checkout"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Offer easy purchases with credit card, crypto, IAP support."})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Onramps"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Allow players to convert from fiat to any crypto globally."})})]})]})]}),e.jsxs("div",{children:[e.jsx("div",{class:"mb-4 text-gray-700 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Retain and Grow"})}),e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Minter"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Securely mint achievement tokens tied to your game."})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Analytics"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Track every aspect of web3 activity within your games."})})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:e.jsx(t.p,{children:"Discord Bot"})})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:e.jsx(t.p,{children:"Integrate wallets and increase community engagement."})})]})]})]})]})]})}),` -`,e.jsx("section",{class:"bg-[#e3e8ed] dark:bg-[#1e1d20]",children:e.jsx("div",{class:"py-8 px-4 mx-auto max-w-screen-xl lg:py-16 lg:px-6",children:e.jsxs("div",{class:"max-w-screen-lg text-gray-500 sm:text-lg dark:text-gray-400",children:[e.jsx("h2",{class:"mb-4 text-4xl font-bold text-gray-900 dark:text-white",children:"Guides"}),e.jsx("p",{class:"mb-8 font-bold",children:"Follow our step-by-step guides and open source code templates to accelerate your time to market."}),e.jsxs("div",{class:"mb-4",children:[e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Build a web3 game with WebGL"}),e.jsx("p",{class:"mb-8 font-bold",children:"Follow a step by step guide to build a web-based game demo that leverages Sequence Embedded Wallet with custom in-game achievement tokens."})]}),e.jsxs("div",{class:"mb-4",children:[e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Build a web3 game with Unity"}),e.jsx("p",{class:"mb-8 font-bold",children:"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."})]}),e.jsxs("div",{class:"mb-4",children:[e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Create web3 lootboxes"}),e.jsx("p",{class:"mb-8 font-bold",children:"With this tutorial, build a web-based maze where lootbox items are generated using AI and dynamically minted into the player's universal wallet."})]}),e.jsxs("div",{class:"mb-4",children:[e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Orderbook Marketplace"}),e.jsx("p",{class:"mb-8 font-bold",children:"Build an API-driven marketplace where players can mint, then sell or buy items using a custom web-based interface leveraging Sequence Orderbook APIs."})]})]})})}),` -`,e.jsx("section",{class:"bg-white dark:bg-[#232225]",children:e.jsxs("div",{class:"py-8 px-4 mx-auto max-w-screen-xl sm:py-16 lg:px-6",children:[e.jsxs("div",{class:"mb-8 max-w-screen-md lg:mb-16",children:[e.jsx("h2",{class:"mb-4 text-4xl font-extrabold text-gray-900 dark:text-white",children:"SDKs"}),e.jsx("p",{class:"text-gray-500 font-bold sm:text-xl dark:text-gray-400",children:"Leverage our open source SDKs to easily integrate from any popular game development framework or language."})]}),e.jsxs("div",{class:"space-y-8 md:grid md:grid-cols-2 lg:grid-cols-3 md:gap-12 md:space-y-0",children:[e.jsx("div",{children:e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:"Unity"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Integrate Sequence with our native Unity library."})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl text-gray-900 font-extrabold dark:text-white",children:"Typescript"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Integrate Sequence APIs with our TypeScript SDK."})]})]})}),e.jsx("div",{children:e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Unreal Engine"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Integrate Sequence with our native Unreal Engine library."})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Sequence Kit"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Add web onboarding for any web3 wallet."})]})]})}),e.jsx("div",{children:e.jsx("ul",{class:"text-gray-600 dark:text-gray-400",children:e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Go"})}),e.jsx("p",{class:"text-gray-500 font-bold font-bold dark:text-gray-400",children:"Leverage Sequence APIs easily from your Go backend."})]})})})]})]})}),` -`,e.jsx("section",{class:"bg-[#e3e8ed] dark:bg-[#1e1d20]",children:e.jsxs("div",{class:"py-8 px-4 mx-auto max-w-screen-xl sm:py-16 lg:px-6",children:[e.jsxs("div",{class:"mb-8 max-w-screen-md lg:mb-16",children:[e.jsx("h2",{class:"mb-4 text-4xl font-extrabold text-gray-900 dark:text-white",children:"APIs"}),e.jsx("p",{class:"text-gray-500 font-bold sm:text-xl dark:text-gray-400",children:"Use our modular APIs for more advanced integrations and for accessing on-chain data through easy to use interfaces."})]}),e.jsxs("div",{class:"space-y-8 md:grid md:grid-cols-2 lg:grid-cols-3 md:gap-12 md:space-y-0",children:[e.jsx("div",{children:e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Marketplace API"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Integrate sell and buy operations through our orderbook interface."})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Transactions API"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Send and optimize transactions on any chain through our performant Sequence Relayer."})]})]})}),e.jsx("div",{children:e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Metadata API"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Fetch token details on any collection and collectible."})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold text-gray-900 dark:text-white",children:"Node Gateway"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Leverage Sequence's auto-scaling node service."})]})]})})]})]})}),` -`,e.jsx("section",{class:"bg-white dark:bg-[#232225]",children:e.jsxs("div",{class:"py-8 px-4 mx-auto max-w-screen-xl sm:py-16 lg:px-6",children:[e.jsxs("div",{class:"mb-8 max-w-screen-md lg:mb-16",children:[e.jsx("h2",{class:"mb-4 text-4xl font-extrabold text-gray-900 dark:text-white",children:"Support"}),e.jsx("p",{class:"text-gray-500 font-bold sm:text-xl dark:text-gray-400",children:"Whatever stage of development your game is at, the Sequence team is here to help out. Reach out to talk to our support team."})]}),e.jsxs("div",{class:"space-y-8 md:grid md:grid-cols-2 lg:grid-cols-3 md:gap-12 md:space-y-0",children:[e.jsx("div",{children:e.jsx("ul",{class:"text-gray-600 dark:text-gray-400",children:e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold dark:text-white",children:"Chat Support"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Chat with our support team on specific questions."})]})})}),e.jsx("div",{children:e.jsxs("ul",{class:"text-gray-600 dark:text-gray-400",children:[e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold dark:text-white",children:"Community"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Join our Discord community to learn from others building on Sequence."})]}),e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold dark:text-white",children:"Contact our Team"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Reach out to our integration team to discuss how you can partner with Sequence."})]})]})}),e.jsx("div",{children:e.jsx("ul",{class:"text-gray-600 dark:text-gray-400",children:e.jsxs("li",{class:"mb-4",children:[e.jsx("a",{href:"#",class:"hover:underline",children:e.jsx("h3",{class:"mb-2 text-xl font-extrabold dark:text-white",children:"Knowledge Base"})}),e.jsx("p",{class:"text-gray-500 font-bold dark:text-gray-400",children:"Browse FAQs and answers to common support requests."})]})})})]})]})})]})}function G(s={}){const{wrapper:t}={...h(),...s.components};return t?e.jsx(t,{...s,children:e.jsx(x,{...s})}):x(s)}function o(s,t){throw new Error("Expected "+(t?"component":"object")+" `"+s+"` to be defined: you likely forgot to import, pass, or provide it.")}export{G as default,R as frontmatter}; diff --git a/assets/indexer-BNcqlYvI.js b/assets/indexer-C1rQqZDC.js similarity index 95% rename from assets/indexer-BNcqlYvI.js rename to assets/indexer-C1rQqZDC.js index 9dd222c5ce..7e562a7617 100644 --- a/assets/indexer-BNcqlYvI.js +++ b/assets/indexer-C1rQqZDC.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.js";import{V as r}from"./Video-DFRdAWy3.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{u as i,j as e}from"./index-CchMGs7j.js";import{V as r}from"./Video-D4tib21T.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/lootbox-DEQa4lNC.js b/assets/lootbox-C0r6ta1l.js similarity index 96% rename from assets/lootbox-DEQa4lNC.js rename to assets/lootbox-C0r6ta1l.js index 11ba5b60af..1838371805 100644 --- a/assets/lootbox-DEQa4lNC.js +++ b/assets/lootbox-C0r6ta1l.js @@ -1,4 +1,4 @@ -import{u as a,j as n}from"./index-BXOUdEEZ.js";const r=void 0;function t(i){const e={a:"a",div:"div",h2:"h2",li:"li",ol:"ol",p:"p",...a(),...i.components};return n.jsxs(n.Fragment,{children:[n.jsxs(e.h2,{id:"deploy-an-in-game-collectibles-contract",children:["Deploy an in-game collectibles contract",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-an-in-game-collectibles-contract",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{u as a,j as n}from"./index-CchMGs7j.js";const r=void 0;function t(i){const e={a:"a",div:"div",h2:"h2",li:"li",ol:"ol",p:"p",...a(),...i.components};return n.jsxs(n.Fragment,{children:[n.jsxs(e.h2,{id:"deploy-an-in-game-collectibles-contract",children:["Deploy an in-game collectibles contract",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-an-in-game-collectibles-contract",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,n.jsxs(e.h2,{id:"query-contract-details",children:["Query contract details",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#query-contract-details",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,n.jsxs(e.h2,{id:"fetch-token-balances-of-a-wallet",children:["Fetch token balances of a wallet",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetch-token-balances-of-a-wallet",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,n.jsxs(e.ol,{children:[` diff --git a/assets/marketplace-18DLP9fD.js b/assets/marketplace-BCSYig1O.js similarity index 94% rename from assets/marketplace-18DLP9fD.js rename to assets/marketplace-BCSYig1O.js index 559c45b8dc..114df73830 100644 --- a/assets/marketplace-18DLP9fD.js +++ b/assets/marketplace-BCSYig1O.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.js";const i={title:"Marketplace API",description:"undefined"};function n(a){const t={a:"a",aside:"aside",div:"div",h1:"h1",header:"header",p:"p",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"marketplace-api",children:["Marketplace API",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#marketplace-api",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{u as r,j as e}from"./index-CchMGs7j.js";const i={title:"Marketplace API",description:"undefined"};function n(a){const t={a:"a",aside:"aside",div:"div",h1:"h1",header:"header",p:"p",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"marketplace-api",children:["Marketplace API",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#marketplace-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/marketplace",children:"Marketplace API documentation and testing"})})}),` `,e.jsx(t.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."}),` `,e.jsx(t.p,{children:"#TODO add example from solutions"})]})}function d(a={}){const{wrapper:t}={...r(),...a.components};return t?e.jsx(t,{...a,children:e.jsx(n,{...a})}):n(a)}export{d as default,i as frontmatter}; diff --git a/assets/marketplaces-g41MwN17.js b/assets/marketplaces-C1EU8FD8.js similarity index 94% rename from assets/marketplaces-g41MwN17.js rename to assets/marketplaces-C1EU8FD8.js index df05c0ccd1..5960c2a290 100644 --- a/assets/marketplaces-g41MwN17.js +++ b/assets/marketplaces-C1EU8FD8.js @@ -1,4 +1,4 @@ -import{u as n,j as e}from"./index-BXOUdEEZ.js";import{V as r}from"./Video-DFRdAWy3.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{u as n,j as e}from"./index-CchMGs7j.js";import{V as r}from"./Video-D4tib21T.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-DXObJIIe.js b/assets/metadata-CvpA6pFm.js similarity index 99% rename from assets/metadata-DXObJIIe.js rename to assets/metadata-CvpA6pFm.js index 212c3c1aac..086b2b30aa 100644 --- a/assets/metadata-DXObJIIe.js +++ b/assets/metadata-CvpA6pFm.js @@ -1,4 +1,4 @@ -import{u as s,j as e}from"./index-BXOUdEEZ.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{u as s,j as e}from"./index-CchMGs7j.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"}),`. Sign up to grab your diff --git a/assets/minter-BSa-53Qv.js b/assets/minter-Bc741e3c.js similarity index 94% rename from assets/minter-BSa-53Qv.js rename to assets/minter-Bc741e3c.js index 5b1e574584..c48ee3ab06 100644 --- a/assets/minter-BSa-53Qv.js +++ b/assets/minter-Bc741e3c.js @@ -1,3 +1,3 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.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{u as r,j as e}from"./index-CchMGs7j.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/nft-checkout-pBVHcwgz.js b/assets/nft-checkout-DSVuiQyl.js similarity index 92% rename from assets/nft-checkout-pBVHcwgz.js rename to assets/nft-checkout-DSVuiQyl.js index bbf452ce24..21538c0142 100644 --- a/assets/nft-checkout-pBVHcwgz.js +++ b/assets/nft-checkout-DSVuiQyl.js @@ -1,2 +1,2 @@ -import{u as i,j as n}from"./index-BXOUdEEZ.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{u as i,j as n}from"./index-CchMGs7j.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-BGPM7sbe.js b/assets/node-gateway--cb6A7Vi.js similarity index 99% rename from assets/node-gateway-BGPM7sbe.js rename to assets/node-gateway--cb6A7Vi.js index d12bd10a22..0c80ba6bb1 100644 --- a/assets/node-gateway-BGPM7sbe.js +++ b/assets/node-gateway--cb6A7Vi.js @@ -1,4 +1,4 @@ -import{u as r,j as s}from"./index-BXOUdEEZ.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{u as r,j as s}from"./index-CchMGs7j.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-B-vKmDRu.js b/assets/node-gateway-AlJTIeLe.js similarity index 95% rename from assets/node-gateway-B-vKmDRu.js rename to assets/node-gateway-AlJTIeLe.js index 2dbf0869f1..c15ac930e8 100644 --- a/assets/node-gateway-B-vKmDRu.js +++ b/assets/node-gateway-AlJTIeLe.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.js";import{V as r}from"./Video-DFRdAWy3.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{u as i,j as e}from"./index-CchMGs7j.js";import{V as r}from"./Video-D4tib21T.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-B2fnIbxK.js b/assets/nodejs-B2fnIbxK.js deleted file mode 100644 index 925cada3b6..0000000000 --- a/assets/nodejs-B2fnIbxK.js +++ /dev/null @@ -1 +0,0 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/nodejs-DDSjtPZP.js b/assets/nodejs-DDSjtPZP.js new file mode 100644 index 0000000000..dadfca3443 --- /dev/null +++ b/assets/nodejs-DDSjtPZP.js @@ -0,0 +1 @@ +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/onramps-D-Axs59U.js b/assets/onramps-B3y5y17T.js similarity index 91% rename from assets/onramps-D-Axs59U.js rename to assets/onramps-B3y5y17T.js index cef9880b1d..66e07edafe 100644 --- a/assets/onramps-D-Axs59U.js +++ b/assets/onramps-B3y5y17T.js @@ -1,2 +1,2 @@ -import{u as o,j as n}from"./index-BXOUdEEZ.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{u as o,j as n}from"./index-CchMGs7j.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/overview-CbmKF1dG.js b/assets/overview-BZmNqhcT.js similarity index 96% rename from assets/overview-CbmKF1dG.js rename to assets/overview-BZmNqhcT.js index 107f939ac9..71b108820c 100644 --- a/assets/overview-CbmKF1dG.js +++ b/assets/overview-BZmNqhcT.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.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{u as i,j as e}from"./index-CchMGs7j.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-C941poV6.js b/assets/overview-CxmFtSTo.js similarity index 95% rename from assets/overview-C941poV6.js rename to assets/overview-CxmFtSTo.js index fdab7da30a..1ed99f9610 100644 --- a/assets/overview-C941poV6.js +++ b/assets/overview-CxmFtSTo.js @@ -1,4 +1,4 @@ -import{u as o,j as e}from"./index-BXOUdEEZ.js";import{C as r,a as n}from"./CardGrid-DjVwb6Sh.js";const c={title:"Sequence Builder",description:"undefined"};function s(i){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...o(),...i.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{u as o,j as e}from"./index-CchMGs7j.js";import{C as r,a as n}from"./CardGrid-BJuHU1g_.js";const c={title:"Sequence Builder",description:"undefined"};function s(i){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...o(),...i.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 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-vh5QMYbM.js b/assets/overview-DxEtoZKX.js similarity index 88% rename from assets/overview-vh5QMYbM.js rename to assets/overview-DxEtoZKX.js index 32f0d2a4ce..eb936a5638 100644 --- a/assets/overview-vh5QMYbM.js +++ b/assets/overview-DxEtoZKX.js @@ -1 +1 @@ -import{u as i,j as t}from"./index-BXOUdEEZ.js";const a=void 0;function o(e){const n={a:"a",div:"div",h2:"h2",...i(),...e.components};return t.jsxs(n.h2,{id:"comparison-of-wallet-offerings-guides-etc",children:["Comparison of wallet offerings, guides, etc",t.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#comparison-of-wallet-offerings-guides-etc",children:t.jsx(n.div,{"data-autolink-icon":!0})})]})}function r(e={}){const{wrapper:n}={...i(),...e.components};return n?t.jsx(n,{...e,children:t.jsx(o,{...e})}):o(e)}export{r as default,a as frontmatter}; +import{u as i,j as t}from"./index-CchMGs7j.js";const a=void 0;function o(e){const n={a:"a",div:"div",h2:"h2",...i(),...e.components};return t.jsxs(n.h2,{id:"comparison-of-wallet-offerings-guides-etc",children:["Comparison of wallet offerings, guides, etc",t.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#comparison-of-wallet-offerings-guides-etc",children:t.jsx(n.div,{"data-autolink-icon":!0})})]})}function r(e={}){const{wrapper:n}={...i(),...e.components};return n?t.jsx(n,{...e,children:t.jsx(o,{...e})}):o(e)}export{r as default,a as frontmatter}; diff --git a/assets/project-management-DsGrb2Gi.js b/assets/project-management-n9UsdPJr.js similarity index 95% rename from assets/project-management-DsGrb2Gi.js rename to assets/project-management-n9UsdPJr.js index 8f64dfa32e..1097e12b90 100644 --- a/assets/project-management-DsGrb2Gi.js +++ b/assets/project-management-n9UsdPJr.js @@ -1,4 +1,4 @@ -import{u as o,j as e}from"./index-BXOUdEEZ.js";import{V as a}from"./Video-DFRdAWy3.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{u as o,j as e}from"./index-CchMGs7j.js";import{V as a}from"./Video-D4tib21T.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-CMSsJ5Y3.js b/assets/project-settings-BpxUzeh_.js similarity index 99% rename from assets/project-settings-CMSsJ5Y3.js rename to assets/project-settings-BpxUzeh_.js index 8777996998..28d9d6b820 100644 --- a/assets/project-settings-CMSsJ5Y3.js +++ b/assets/project-settings-BpxUzeh_.js @@ -1,4 +1,4 @@ -import{u as s,j as e}from"./index-BXOUdEEZ.js";import{V as r}from"./Video-DFRdAWy3.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{u as s,j as e}from"./index-CchMGs7j.js";import{V as r}from"./Video-D4tib21T.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/reactnative-B2fnIbxK.js b/assets/reactnative-B2fnIbxK.js deleted file mode 100644 index 925cada3b6..0000000000 --- a/assets/reactnative-B2fnIbxK.js +++ /dev/null @@ -1 +0,0 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/reactnative-DDSjtPZP.js b/assets/reactnative-DDSjtPZP.js new file mode 100644 index 0000000000..dadfca3443 --- /dev/null +++ b/assets/reactnative-DDSjtPZP.js @@ -0,0 +1 @@ +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/relayer-B--Nth41.js b/assets/relayer-DGbh8fZY.js similarity index 97% rename from assets/relayer-B--Nth41.js rename to assets/relayer-DGbh8fZY.js index df409e8367..7c06ea6595 100644 --- a/assets/relayer-B--Nth41.js +++ b/assets/relayer-DGbh8fZY.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.js";const i={title:"Relayer API",description:"undefined"};function t(a){const n={a:"a",aside:"aside",div:"div",h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"relayer-api",children:["Relayer API",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#relayer-api",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{u as r,j as e}from"./index-CchMGs7j.js";const i={title:"Relayer API",description:"undefined"};function t(a){const n={a:"a",aside:"aside",div:"div",h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"relayer-api",children:["Relayer API",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#relayer-api",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/relayer",children:"Relayer API documentation and endpoints"})})}),` `,e.jsx(n.p,{children:"The Sequence Relayer service offers a simple interface for dispatching meta-transactions on Ethereum-compatible networks."}),` `,e.jsx(n.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/sdk-D2N61MiJ.js b/assets/sdk-CwKciPAs.js similarity index 85% rename from assets/sdk-D2N61MiJ.js rename to assets/sdk-CwKciPAs.js index 969a54de91..ba9c874ff1 100644 --- a/assets/sdk-D2N61MiJ.js +++ b/assets/sdk-CwKciPAs.js @@ -1 +1 @@ -import{u as r,j as t}from"./index-BXOUdEEZ.js";const a=void 0;function o(e){const n={a:"a",div:"div",h2:"h2",...r(),...e.components};return t.jsxs(n.h2,{id:"overview",children:["Overview",t.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:t.jsx(n.div,{"data-autolink-icon":!0})})]})}function s(e={}){const{wrapper:n}={...r(),...e.components};return n?t.jsx(n,{...e,children:t.jsx(o,{...e})}):o(e)}export{s as default,a as frontmatter}; +import{u as r,j as t}from"./index-CchMGs7j.js";const a=void 0;function o(e){const n={a:"a",div:"div",h2:"h2",...r(),...e.components};return t.jsxs(n.h2,{id:"overview",children:["Overview",t.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:t.jsx(n.div,{"data-autolink-icon":!0})})]})}function s(e={}){const{wrapper:n}={...r(),...e.components};return n?t.jsx(n,{...e,children:t.jsx(o,{...e})}):o(e)}export{s as default,a as frontmatter}; diff --git a/assets/sequence-kit-B2fnIbxK.js b/assets/sequence-kit-B2fnIbxK.js deleted file mode 100644 index 925cada3b6..0000000000 --- a/assets/sequence-kit-B2fnIbxK.js +++ /dev/null @@ -1 +0,0 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/sequence-kit-DDSjtPZP.js b/assets/sequence-kit-DDSjtPZP.js new file mode 100644 index 0000000000..dadfca3443 --- /dev/null +++ b/assets/sequence-kit-DDSjtPZP.js @@ -0,0 +1 @@ +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/solutions-B5Q3HaVY.js b/assets/solutions-B5Q3HaVY.js deleted file mode 100644 index 925cada3b6..0000000000 --- a/assets/solutions-B5Q3HaVY.js +++ /dev/null @@ -1 +0,0 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/solutions-DXL3d8Fv.js b/assets/solutions-DXL3d8Fv.js new file mode 100644 index 0000000000..dadfca3443 --- /dev/null +++ b/assets/solutions-DXL3d8Fv.js @@ -0,0 +1 @@ +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/stack-DCajA93o.js b/assets/stack-sys9QMOG.js similarity index 89% rename from assets/stack-DCajA93o.js rename to assets/stack-sys9QMOG.js index 894e21e639..89189b9380 100644 --- a/assets/stack-DCajA93o.js +++ b/assets/stack-sys9QMOG.js @@ -1,2 +1,2 @@ -import{u as a,j as n}from"./index-BXOUdEEZ.js";const d={title:"Stack",description:"undefined"};function r(e){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...a(),...e.components};return n.jsxs(n.Fragment,{children:[n.jsx(t.header,{children:n.jsxs(t.h1,{id:"stack",children:["Stack",n.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#stack",children:n.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{u as a,j as n}from"./index-CchMGs7j.js";const d={title:"Stack",description:"undefined"};function r(e){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...a(),...e.components};return n.jsxs(n.Fragment,{children:[n.jsx(t.header,{children:n.jsxs(t.h1,{id:"stack",children:["Stack",n.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#stack",children:n.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,n.jsx(t.p,{children:"Intro .............."})]})}function i(e={}){const{wrapper:t}={...a(),...e.components};return t?n.jsx(t,{...e,children:n.jsx(r,{...e})}):r(e)}export{i as default,d as frontmatter}; diff --git a/assets/style-8q7c0hl7.css b/assets/style-8q7c0hl7.css new file mode 100644 index 0000000000..13285fadc5 --- /dev/null +++ b/assets/style-8q7c0hl7.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 (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 (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 (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 (width <= 720px){.vocs_DocsLayout_content{overflow-x:hidden}}@media screen and (width > 1080px){.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 (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 (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 (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 (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 (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 (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 (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 (width > 1080px){.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 (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 (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 (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 (width <= 1080px){.vocs_DesktopTopNav,.vocs_DesktopTopNav_curtain{display:none}}@media screen and (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 (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 (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 (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 (width <= 720px){.vocs_MobileTopNav_navigation:not(.vocs_MobileTopNav_navigation_compact){display:none}}@media screen and (width > 720px){.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}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;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[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: }::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: }}.visible{visibility:visible!important}.static{position:static!important}.absolute{position:absolute!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.mb-2{margin-bottom:.5rem!important}.mb-4{margin-bottom:1rem!important}.mb-8{margin-bottom:2rem!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}.max-w-screen-lg{max-width:1024px!important}.max-w-screen-md{max-width:848px!important}.max-w-screen-xl{max-width:1280px!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}.justify-start{justify-content:flex-start!important}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0 !important;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)))!important;margin-bottom:calc(2rem * var(--tw-space-y-reverse))!important}.bg-\[\#e3e8ed\]{--tw-bg-opacity: 1 !important;background-color:rgb(227 232 237 / var(--tw-bg-opacity))!important}.bg-white{--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.py-8{padding-top:2rem!important;padding-bottom:2rem!important}.text-4xl{font-size:2.25rem!important;line-height:2.5rem!important}.text-xl{font-size:1.25rem!important;line-height:1.75rem!important}.font-bold{font-weight:700!important}.font-extrabold{font-weight:800!important}.lowercase{text-transform:lowercase!important}.text-gray-500{--tw-text-opacity: 1 !important;color:rgb(107 114 128 / var(--tw-text-opacity))!important}.text-gray-600{--tw-text-opacity: 1 !important;color:rgb(75 85 99 / var(--tw-text-opacity))!important}.text-gray-700{--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important}.text-gray-900{--tw-text-opacity: 1 !important;color:rgb(17 24 39 / var(--tw-text-opacity))!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}#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}.hover\:underline:hover{text-decoration-line:underline!important}:is(.dark .dark\:bg-\[\#1e1d20\]){--tw-bg-opacity: 1 !important;background-color:rgb(30 29 32 / var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-\[\#232225\]){--tw-bg-opacity: 1 !important;background-color:rgb(35 34 37 / var(--tw-bg-opacity))!important}:is(.dark .dark\:text-gray-400){--tw-text-opacity: 1 !important;color:rgb(156 163 175 / var(--tw-text-opacity))!important}:is(.dark .dark\:text-white){--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity))!important}@media (min-width: 640px){.sm\:py-16{padding-top:4rem!important;padding-bottom:4rem!important}.sm\:text-lg{font-size:1.125rem!important;line-height:1.75rem!important}.sm\:text-xl{font-size:1.25rem!important;line-height:1.75rem!important}}@media (min-width: 848px){.md\:grid{display:grid!important}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.md\:gap-12{gap:3rem!important}.md\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0 !important;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)))!important;margin-bottom:calc(0px * var(--tw-space-y-reverse))!important}}@media (min-width: 1024px){.lg\:mb-16{margin-bottom:4rem!important}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.lg\:px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.lg\:py-16{padding-top:4rem!important;padding-bottom:4rem!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 (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 (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 (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 (width <= 720px){.vocs_HomePage{padding-top:var(--vocs-space_32)}.vocs_HomePage_logo{height:36px}} diff --git a/assets/style-DmXq5Yy3.css b/assets/style-DmXq5Yy3.css deleted file mode 100644 index 806159b06b..0000000000 --- a/assets/style-DmXq5Yy3.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 (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 (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 (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 (width <= 720px){.vocs_DocsLayout_content{overflow-x:hidden}}@media screen and (width > 1080px){.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 (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 (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 (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 (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 (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 (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 (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 (width > 1080px){.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 (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 (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 (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 (width <= 1080px){.vocs_DesktopTopNav,.vocs_DesktopTopNav_curtain{display:none}}@media screen and (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 (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 (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 (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 (width <= 720px){.vocs_MobileTopNav_navigation:not(.vocs_MobileTopNav_navigation_compact){display:none}}@media screen and (width > 720px){.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}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;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[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: }::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: }}.visible{visibility:visible!important}.static{position:static!important}.absolute{position:absolute!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.mb-2{margin-bottom:.5rem!important}.mb-4{margin-bottom:1rem!important}.mb-8{margin-bottom:2rem!important}.block{display:block!important}.inline{display:inline!important}.flex{display:flex!important}.table{display:table!important}.hidden{display:none!important}.max-w-screen-lg{max-width:1024px!important}.max-w-screen-md{max-width:848px!important}.max-w-screen-xl{max-width:1280px!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}.justify-start{justify-content:flex-start!important}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0 !important;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)))!important;margin-bottom:calc(2rem * var(--tw-space-y-reverse))!important}.bg-\[\#e3e8ed\]{--tw-bg-opacity: 1 !important;background-color:rgb(227 232 237 / var(--tw-bg-opacity))!important}.bg-white{--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.py-8{padding-top:2rem!important;padding-bottom:2rem!important}.text-4xl{font-size:2.25rem!important;line-height:2.5rem!important}.text-xl{font-size:1.25rem!important;line-height:1.75rem!important}.font-bold{font-weight:700!important}.font-extrabold{font-weight:800!important}.text-gray-500{--tw-text-opacity: 1 !important;color:rgb(107 114 128 / var(--tw-text-opacity))!important}.text-gray-600{--tw-text-opacity: 1 !important;color:rgb(75 85 99 / var(--tw-text-opacity))!important}.text-gray-700{--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important}.text-gray-900{--tw-text-opacity: 1 !important;color:rgb(17 24 39 / var(--tw-text-opacity))!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}#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}.hover\:underline:hover{text-decoration-line:underline!important}:is(.dark .dark\:bg-\[\#1e1d20\]){--tw-bg-opacity: 1 !important;background-color:rgb(30 29 32 / var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-\[\#232225\]){--tw-bg-opacity: 1 !important;background-color:rgb(35 34 37 / var(--tw-bg-opacity))!important}:is(.dark .dark\:text-gray-400){--tw-text-opacity: 1 !important;color:rgb(156 163 175 / var(--tw-text-opacity))!important}:is(.dark .dark\:text-white){--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity))!important}@media (min-width: 640px){.sm\:py-16{padding-top:4rem!important;padding-bottom:4rem!important}.sm\:text-lg{font-size:1.125rem!important;line-height:1.75rem!important}.sm\:text-xl{font-size:1.25rem!important;line-height:1.75rem!important}}@media (min-width: 848px){.md\:grid{display:grid!important}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.md\:gap-12{gap:3rem!important}.md\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0 !important;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)))!important;margin-bottom:calc(0px * var(--tw-space-y-reverse))!important}}@media (min-width: 1024px){.lg\:mb-16{margin-bottom:4rem!important}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.lg\:px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.lg\:py-16{padding-top:4rem!important;padding-bottom:4rem!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 (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 (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 (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 (width <= 720px){.vocs_HomePage{padding-top:var(--vocs-space_32)}.vocs_HomePage_logo{height:36px}} diff --git a/assets/support-DbNzZ5Kc.js b/assets/support-1XM_K1Pq.js similarity index 95% rename from assets/support-DbNzZ5Kc.js rename to assets/support-1XM_K1Pq.js index aa8e6c3012..2b7f42e652 100644 --- a/assets/support-DbNzZ5Kc.js +++ b/assets/support-1XM_K1Pq.js @@ -1,4 +1,4 @@ -import{u as o,j as e}from"./index-BXOUdEEZ.js";const a={title:"Support",description:"undefined"};function r(n){const t={a:"a",div:"div",h1:"h1",header:"header",img:"img",p:"p",...o(),...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{u as o,j as e}from"./index-CchMGs7j.js";const a={title:"Support",description:"undefined"};function r(n){const t={a:"a",div:"div",h1:"h1",header:"header",img:"img",p:"p",...o(),...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.img,{src:"/img/sequence_support.png",alt:"Sequence Support"})}),` diff --git a/assets/template-embedded-wallet-BbebFEN_.js b/assets/template-embedded-wallet-B6sqiArS.js similarity index 99% rename from assets/template-embedded-wallet-BbebFEN_.js rename to assets/template-embedded-wallet-B6sqiArS.js index 5adac2723d..b06f1efb5a 100644 --- a/assets/template-embedded-wallet-BbebFEN_.js +++ b/assets/template-embedded-wallet-B6sqiArS.js @@ -1,4 +1,4 @@ -import{u as n,j as e}from"./index-BXOUdEEZ.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{u as n,j as e}from"./index-CchMGs7j.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 embedded 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/template-marketplace-api-B-xCZnWo.js b/assets/template-marketplace-api-B-xCZnWo.js deleted file mode 100644 index ae080869be..0000000000 --- a/assets/template-marketplace-api-B-xCZnWo.js +++ /dev/null @@ -1,88 +0,0 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.js";const c={title:"Custom Marketplace",description:"undefined"};function i(n){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"custom-marketplace",children:["Custom Marketplace",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#custom-marketplace",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` -`,e.jsx(s.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."}),` -`,e.jsx(s.p,{children:"The tools will enable you to perform:"}),` -`,e.jsxs(s.ul,{children:[` -`,e.jsxs(s.li,{children:[e.jsx(s.a,{href:"/guides/templates/template-marketplace-api#minting",children:"Minting"}),": Minting of tokens to your wallet from the Sequence Builder"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.a,{href:"/guides/templates/template-marketplace-api#blockchain-queries",children:"Blockchain Queries"}),": Querying of token balances using the Indexer"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.a,{href:"/guides/templates/template-marketplace-api#request-creation",children:"Request Creation"}),": Creation of sell listing requests on the Sequence Market Protocol"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.a,{href:"/guides/templates/template-marketplace-api#order-accepting",children:"Order Accepting"}),": Accepting of top orders from the Marketplace"]}),` -`]}),` -`,e.jsx(s.p,{children:"All of this in custom javascript code"}),` -`,e.jsxs(s.h2,{id:"minting",children:["Minting",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#minting",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` -`,e.jsxs(s.p,{children:["The first step is to create a collectible from the sequence Builder with a few mints, which can be accomplished with this ",e.jsx(s.a,{href:"/solutions/collectibles/contracts/01-deploy-an-item-collection",children:"guide"}),"."]}),` -`,e.jsxs(s.h2,{id:"blockchain-queries",children:["Blockchain Queries",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#blockchain-queries",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` -`,e.jsx(s.p,{children:"Once you have one or a few collectibles minted, you can query the data from the contract address from your deployment, which can be found here:"}),` -`,e.jsx(s.p,{children:e.jsx(s.img,{src:"/img/marketplace/copy_contract.png",alt:"copy contract address"})}),` -`,e.jsx(s.p,{children:"You can query data using the indexer, using this code where an account address and contract address are inputted into the indexer api"}),` -`,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,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// Works in both a Webapp (browser) or Node.js:"})}),` -`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"import"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" { SequenceIndexer } "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),e.jsx(s.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "@0xsequence/indexer"'}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:";"})]}),` -`,e.jsx(s.span,{className:"line","data-empty-line":!0,children:" "}),` -`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" indexer"}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" SequenceIndexer"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("})]}),` -`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "https://arbitrum-sepolia-indexer.sequence.app"'}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` -`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' ""'})}),` -`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})}),` -`,e.jsx(s.span,{className:"line","data-empty-line":!0,children:" "}),` -`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// try any contract and account address you'd like :), as an example"})}),` -`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" contractAddress"}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),e.jsx(s.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "0x1693ffc74edbb50d6138517fe5cd64fd1c917709"'}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:";"})]}),` -`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" accountAddress"}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),e.jsx(s.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "0xc2be9cf6d9ee4fd211f88620760e829792659b16"'}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:";"})]}),` -`,e.jsx(s.span,{className:"line","data-empty-line":!0,children:" "}),` -`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// query Sequence Indexer for all nft balances of the account on Polygon"})}),` -`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" nftBalances"}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" await"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" indexer."}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"getTokenBalances"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` -`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" contractAddress: contractAddress,"})}),` -`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" accountAddress: accountAddress,"})}),` -`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" includeMetadata: "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"true"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` -`,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"});"})}),` -`,e.jsx(s.span,{className:"line","data-empty-line":!0,children:" "}),` -`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"console."}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"log"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),e.jsx(s.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"collection of items:"'}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", nftBalances);"})]})]})}),` -`,e.jsx(s.p,{children:"Where the response of the indexer call, yields the follow data:"}),` -`,e.jsx(s.p,{children:"Response"}),` -`,e.jsxs(s.ul,{children:[` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"contractType"})," (string) - the type of contract type (i.e. ERC20, ERC721, or ERC1155)"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"contractAddress"})," (string) - the contract address of the token"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"accountAddress"})," (string) - the deploying account address"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"tokenID"})," (string) - the tokenID of the token (always 0 if ERC20)"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"balance"})," (string) - the balance of the token"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"blockHash"})," (string) - the transaction merkle hash of the block when the token was deployed"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"blockNumber"})," (number) - the blocknumber the token was deployed"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"chainId"})," (number) - the chain id of the token"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"contractType"}),` -`,e.jsxs(s.ul,{children:[` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"chainId"})," (number) - the chain id of the token"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"address"})," (string) - the address of the token"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"name"})," (string) - contract level name of the token"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"type"})," (string) - the type of contract type (i.e. ERC20, ERC721, or ERC1155)"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"symbol"})," (string) - the symbol of the token"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"decimals"})," (number) - the number of decimals the token has"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"logoURI"})," (string) - the logo of the token displayed in sequence.app"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"deployed"})," (boolean) - whether the token is deployed"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"bytecodeHash"})," (string) - hash of the bytecode of a smart contract deployed on the blockchain"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"extensions"}),` -`,e.jsxs(s.ul,{children:[` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"link"})," (string) - the adjoining website to link to the project"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"description"})," (string) - the metadata description of the token"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"ogImage"})," (string) - the banner image for the token, rendered in sequence.app"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"originChainId"})," (number) - the originating chain id the token represents"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"originAddress"})," (string) - the originating contract address the token represents"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"verified"})," (boolean) - whether the token is verified and trusted"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"verifiedBy"})," (string) - the verifing source as to why this is not spam"]}),` -`]}),` -`]}),` -`]}),` -`]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"updatedAt"})," (date) - the last time the indexer was updated"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"tokenMetadata"}),` -`,e.jsxs(s.ul,{children:[` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"tokenId"})," (string) - the tokenID of the token (always 0 if ERC20)"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"contractAddress"})," (string) - the contract address of the token"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"name"})," (string) - token level name"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"description"})," (string) - the description of the token"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"image"})," (string) - the image as a url of the token"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"decimals"})," (string) - the number of decimals for the token"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"properties"})," (object) - an object containing the properties of the token metadata"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"external_url"})," (string) - an external url for where to find the token or more details"]}),` -`,e.jsxs(s.li,{children:[e.jsx(s.code,{children:"updatedAt"})," (date) - the last time the token metadata was updated"]}),` -`]}),` -`]}),` -`]}),` -`,e.jsxs(s.h2,{id:"request-creation",children:["Request Creation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#request-creation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` -`,e.jsxs(s.h2,{id:"order-accepting",children:["Order Accepting",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#order-accepting",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})]})}function t(n={}){const{wrapper:s}={...r(),...n.components};return s?e.jsx(s,{...n,children:e.jsx(i,{...n})}):i(n)}export{t as default,c as frontmatter}; diff --git a/assets/template-marketplace-api-CMxsDKvn.js b/assets/template-marketplace-api-CMxsDKvn.js new file mode 100644 index 0000000000..66ed7a1b62 --- /dev/null +++ b/assets/template-marketplace-api-CMxsDKvn.js @@ -0,0 +1,618 @@ +import{u as r,j as s,e as i}from"./index-CchMGs7j.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Custom Marketplace",description:"undefined"};function n(l){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",img:"img",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:"custom-marketplace",children:["Custom Marketplace",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#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:[` +`,s.jsxs(e.li,{children:[s.jsx(e.a,{href:"/guides/templates/template-marketplace-api#minting",children:"1. Minting"}),": Minting of tokens to your wallet from the Sequence Builder"]}),` +`,s.jsxs(e.li,{children:[s.jsx(e.a,{href:"/guides/templates/template-marketplace-api#blockchain-queries",children:"2. Wallet authentication"}),": Use of Sequence Kit to authenticate a user"]}),` +`,s.jsxs(e.li,{children:[s.jsx(e.a,{href:"/guides/templates/template-marketplace-api#blockchain-queries",children:"3. Blockchain queries"}),": Querying of token balances using the Indexer"]}),` +`,s.jsxs(e.li,{children:[s.jsx(e.a,{href:"/guides/templates/template-marketplace-api#4-multi-wallet-types",children:"4. Multi-Wallet Types"}),": Allow users to either use a Sequence Wallet or an EOA"]}),` +`,s.jsxs(e.li,{children:[s.jsx(e.a,{href:"/guides/templates/template-marketplace-api#5-request-creation",children:"5. Request creation"}),": Creation of sell listing requests on the Sequence Market Protocol"]}),` +`,s.jsxs(e.li,{children:[s.jsx(e.a,{href:"/guides/templates/template-marketplace-api#6-order-accepting",children:"6. Order accepting"}),": Accepting of top orders from the Marketplace"]}),` +`,s.jsxs(e.li,{children:[s.jsx(e.a,{href:"/guides/templates/template-marketplace-api#7-optional-enable-embedded-wallet",children:"7. (Optional) Enable Embedded Wallet"}),": Add a more seamless UX experience with no-confirmation transactions"]}),` +`]}),` +`,s.jsxs(e.h2,{id:"1-minting",children:["1. Minting",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#1-minting",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +`,s.jsxs(e.p,{children:["The first step is to create a collectible from the sequence Builder with a few mints, which can be accomplished with this ",s.jsx(e.a,{href:"/solutions/collectibles/contracts/01-deploy-an-item-collection",children:"guide"})," and to use the ",s.jsx(e.code,{children:"tokenId"})," you minted in the following steps to query and fulfill orders."]}),` +`,s.jsxs(e.h2,{id:"2-wallet-authentication",children:["2. Wallet Authentication",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#2-wallet-authentication",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +`,s.jsx(e.p,{children:"For your project, you'll need a way to authenticate your user with a wallet."}),` +`,s.jsxs(e.p,{children:["Your choice from the Sequence stack is to use either an ",s.jsx(e.a,{href:"/solutions/wallets/embedded-wallet/01-overview",children:"Embedded Wallet"})," for seamless UX, or, a ",s.jsx(e.a,{href:"/solutions/wallets/universal-wallet/01-overview",children:"Universal Wallet"})," with something like ",s.jsx(e.a,{href:"/sdk/sequence-kit/01-overview",children:"Sequence Kit"})," to reach more types of wallets."]}),` +`,s.jsxs(e.p,{children:["For this guide we'll use an ",s.jsx(e.code,{children:"Universal Sequence Wallet"})," with ",s.jsx(e.code,{children:"Sequence Kit"})," connector (with an option for an ",s.jsx(e.code,{children:"Embedded-Wallet"}),") which can authenticate users using Google or Apple auth, in addition to user brought wallets like Coinbase or Metamask"]}),` +`,s.jsxs(e.h3,{id:"install-packages",children:["Install packages",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#install-packages",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +`,s.jsxs(e.p,{children:["Either you can create a vanilla js/html/css project from a ",s.jsx(e.a,{href:"https://github.com/moskalyk/vanilla-js-sequence-kit-starter",children:"template like this"}),", or we will walk you through how to use react here."]}),` +`,s.jsx(e.p,{children:"Start by creating a project in a folder of your name choosing:"}),` +`,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,{children:"mkdir "})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{children:"cd "})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{children:"npx create-react-app . --template=typescript"})})]})}),` +`,s.jsxs(e.p,{children:["Then, begin by installing the required packages in the ",s.jsx(e.code,{children:" folder"})]}),` +`,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.jsx(e.span,{className:"line",children:s.jsx(e.span,{children:"pnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query"})})})}),` +`,s.jsxs(e.p,{children:["Then in ",s.jsx(e.code,{children:"src"})," next to ",s.jsx(e.code,{children:"index.tsx"})," in the folder, create a ",s.jsx(e.code,{children:"config.ts"})," file with the following contents:"]}),` +`,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:"import"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" { arbitrumSepolia, Chain } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" 'wagmi/chains'"})]}),` +`,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:" { getDefaultConnectors } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" '@0xsequence/kit-connectors'"})]}),` +`,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:" { createConfig, http } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" 'wagmi'"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" chains"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" [arbitrumSepolia] "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"as"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ["}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"Chain"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"..."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"Chain"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"[]]"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" projectAccessKey"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" process.env."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"REACT_APP_PROJECTACCESSKEY"}),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:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" walletConnectProjectId"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" process.env."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"REACT_APP_WALLETCONNECTID"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"!"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:";"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" connectors"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" getDefaultConnectors"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" walletConnectProjectId: walletConnectProjectId,"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" defaultChainId: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"421614"}),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:" appName: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"'demo app'"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" projectAccessKey"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"})"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" transports"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" any"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {}"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"chains."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"forEach"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"chain"}),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:" transports[chain.id] "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" http"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"()"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"})"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" config"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" createConfig"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" transports,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" connectors,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" chains"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"})"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:"#24292E","--shiki-dark":"#ADBAC7"},children:" { config }"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "})]})}),` +`,s.jsx(i,{type:"warning",children:s.jsxs(e.p,{children:["Be sure to include a ",s.jsx(e.code,{children:".env"}),` file in the root of your project to include client +secrets`]})}),` +`,s.jsxs(e.p,{children:["Next, import the ",s.jsx(e.code,{children:"config"})," to be consumed by the ",s.jsx(e.code,{children:"WagmiProvider"})," in the ",s.jsx(e.code,{children:"index.tsx"})]}),` +`,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:"import"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ReactDOM "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "react-dom/client"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:" { KitProvider } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "@0xsequence/kit"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:" { QueryClient, QueryClientProvider } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "@tanstack/react-query"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:" { WagmiProvider } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "wagmi"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:" App "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" './App'"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" { config } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "./config"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:";"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" root"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ReactDOM."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"createRoot"}),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:" document."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"getElementById"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"root"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:") "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"as"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:" HTMLElement"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" queryClient"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" QueryClient"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"();"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"function"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" Dapp"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"() {"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" return"}),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:" <"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#8DDB8C"},children:"WagmiProvider"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#6CB6FF"},children:" config"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#F47067"},children:"{"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"config"}),s.jsx(e.span,{style:{color:"#24292E","--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:" <"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#8DDB8C"},children:"QueryClientProvider"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#6CB6FF"},children:" client"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#F47067"},children:"{"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"queryClient"}),s.jsx(e.span,{style:{color:"#24292E","--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:" <"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#8DDB8C"},children:"KitProvider"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#6CB6FF"},children:" config"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#F47067"},children:"{"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"{ defaultTheme: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"light"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", signIn: { showEmailInput: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"false"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" } }"}),s.jsx(e.span,{style:{color:"#24292E","--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:" <"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#8DDB8C"},children:"App"}),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:" "})]}),` +`,s.jsxs(e.span,{className:"line",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:" "})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" );"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"}"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"root."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"render"}),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:" <"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#8DDB8C"},children:"Dapp"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" />"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})})]})}),` +`,s.jsxs(e.p,{children:["And finally, add a button in the ",s.jsx(e.code,{children:"App.tsx"})," to make the Sequence Kit modal appear"]}),` +`,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:"import"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" { useOpenConnectModal } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "@0xsequence/kit"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:" { useDisconnect, useAccount, useConnect } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "wagmi"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:";"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"function"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" App"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:"#24292E","--shiki-dark":"#ADBAC7"},children:" { "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"address"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"isConnected"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" useAccount"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:"#24292E","--shiki-dark":"#ADBAC7"},children:" { "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"setOpenConnectModal"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" useOpenConnectModal"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:"#24292E","--shiki-dark":"#ADBAC7"},children:" { "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"disconnect"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" useDisconnect"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"();"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" connect"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" async"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" () "}),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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" disconnect"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"();"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" setOpenConnectModal"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"true"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" };"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" return"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ("})]}),` +`,s.jsx(e.span,{className:"line",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":"#F47067"},children:" {"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"!"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"isConnected "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" <"}),s.jsx(e.span,{style:{color:"#22863A","--shiki-dark":"#8DDB8C"},children:"button"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#6CB6FF"},children:" onClick"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#F47067"},children:"{"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"() "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"=>"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" connect"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"()"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#F47067"},children:"}"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:">connect"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#F47067"},children:"}"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#F47067"},children:" {"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"isConnected "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" <"}),s.jsx(e.span,{style:{color:"#22863A","--shiki-dark":"#8DDB8C"},children:"button"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#6CB6FF"},children:" onClick"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#F47067"},children:"{"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"() "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"=>"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" disconnect"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"()"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#F47067"},children:"}"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:">connect"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#F47067"},children:"}"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#F47067"},children:" {"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"address "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" address"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#F47067"},children:"}"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" "})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" );"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"}"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" default"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" App;"})]})]})}),` +`,s.jsx(e.p,{children:"Great! You should have an application that can authorize a user and return a wallet address."}),` +`,s.jsx(e.p,{children:"You can now test it with:"}),` +`,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.jsx(e.span,{className:"line",children:s.jsx(e.span,{children:"pnpm run start"})})})}),` +`,s.jsxs(e.h2,{id:"3-blockchain-queries",children:["3. Blockchain queries",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#3-blockchain-queries",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +`,s.jsx(e.p,{children:"Once you have one or a few collectibles minted, you can query the data from the contract address from your deployment, which can be found here:"}),` +`,s.jsx(e.p,{children:s.jsx(e.img,{src:"/img/marketplace/copy_contract.png",alt:"copy contract address"})}),` +`,s.jsx(e.p,{children:"You can query data using the indexer, using this code where an account address and contract address (retrieved from the Sequence Builder deployed contract) are inputted into the indexer api"}),` +`,s.jsxs(e.p,{children:["This will be important when you're determining a ",s.jsx(e.code,{children:"tokenID"})," to create a request on the marketplace, for this demo we'll assume you're dealing with a single ",s.jsx(e.code,{children:"tokenID"})]}),` +`,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:"// Works in both a Webapp (browser) or Node.js:"})}),` +`,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:" { SequenceIndexer } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "@0xsequence/indexer"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:";"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" indexer"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" SequenceIndexer"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "https://arbitrum-sepolia-indexer.sequence.app"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' ""'})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// try any contract and account address you'd like :), as an example"})}),` +`,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:" contractAddress"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"false"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" useEffect"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(() "}),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:" connectors."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"map"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"async"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ("}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"connector"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:") "}),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:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" (("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"await"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" connector."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"isAuthorized"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"()) "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" connector.id "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"==="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "sequence"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:") {"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" setIsSequence"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"true"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" });"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }, [isConnected]);"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"}"})})]})}),` +`,s.jsx(e.header,{children:s.jsxs(e.h1,{id:"orderbook-transactions",children:["Orderbook Transactions",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#orderbook-transactions",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +`,s.jsx(i,{type:"info",children:s.jsxs(e.p,{children:[`Glossary: In the Sequence Market protocol, when you create a listing, it's +referred to as a `,s.jsx(e.code,{children:"request"}),`, and when you accept a request it's called an +`,s.jsx(e.code,{children:"order"})]})}),` +`,s.jsxs(e.h2,{id:"5-request-creation",children:["5. Request creation",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#5-request-creation",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +`,s.jsxs(e.p,{children:["For this example, we'll be using ",s.jsx(e.code,{children:"Arbitrum Sepolia USDC"})," from the ",s.jsx(e.a,{href:"https://faucet.circle.com/",children:"community faucet"})]}),` +`,s.jsx(e.p,{children:"Head over there to first get some tokens, so that you can make listing with your request"}),` +`,s.jsx(e.hr,{}),` +`,s.jsx(e.p,{children:"Then, in order to create a request for the orderbook, we'll need to first make sure we enable the marketplace orderbook contract with approval to transfer your tokens"}),` +`,s.jsx(e.p,{children:"First, we check that the marketplace is approved for the contract, with some logic"}),` +`,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:" ERC1155Contract"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" '0x1693ffc74edbb50d6138517fe5cd64fd1c917709'"})]}),` +`,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:" MarketPlaceContract"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" '0xB537a160472183f2150d42EB1c3DD6684A55f74c'"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"function"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" App"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"() {"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" async"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" function"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" checkERC1155Approval"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"ownerAddress"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" string"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"operatorAddress"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" string"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:" abi"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ["})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "function isApprovedForAll(address account, address operator) external view returns (bool)"'})}),` +`,s.jsx(e.span,{className:"line",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:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" provider"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.providers."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"JsonRpcProvider"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"`https://nodes.sequence.app/arbitrum-sepolia/${"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"process"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"env"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"REACT_APP_PROJECT_ACCESSKEY"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},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:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" contract"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Contract"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(ERC1155Contract, abi, provider);"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" return"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" await"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" contract."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"isApprovedForAll"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(ownerAddress, operatorAddress);"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" createRequest"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" async"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" () "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"=>"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" checkERC1155Approval"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(address"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"!"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:",MarketPlaceContract)){"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:" // is approved and only requires a single transaction"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"else"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" { "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// is not approved, so requires multiple transactions"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(isSequence) { .. perform multi"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"-"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"batch transactions"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"else"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" { "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// is not a sequence wallet"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" };"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"}"})})]})}),` +`,s.jsx(e.p,{children:"Next, we'll need to craft the transaction with the correct ABI to generate the expected calldata for the various paths of: not being approved versus approved, and if it is a sequence wallet or not."}),` +`,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:"#24292E","--shiki-dark":"#ADBAC7"},children:" ["}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"requestData"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"setRequestData"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"] "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" useState"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"<"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"any"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:">("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"null"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" createRequest"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" async"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" () "}),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:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" sequenceMarketInterface"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "function createRequest(tuple(bool isListing, bool isERC1155, address tokenContract, uint256 tokenId, uint256 quantity, uint96 expiry, address currency, uint256 pricePerToken)) external nonReentrant returns (uint256 requestId)"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ]);"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" amountBigNumber"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"parseUnits"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"String"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"0.01"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"), "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"6"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"); "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// ensure to use the proper decimals"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" request"}),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:" isListing: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"true"}),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:" isERC1155: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"true"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" tokenContract: ERC1155Contract,"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" tokenId: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"1"}),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:" quantity: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"1"}),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:" expiry: Date."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"now"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"() "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"+"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" 7"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" *"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" 24"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" *"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" 60"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" *"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" 60"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" *"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" 1000"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// 1 day"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" currency: ArbSepoliaUSDCContract,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" pricePerToken: amountBigNumber,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" };"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" data"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" sequenceMarketInterface."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"encodeFunctionData"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"createRequest"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", ["})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" request,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ]);"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" setRequestData"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(data); "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// we'll need this in the next step"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" checkERC1155Approval"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(address"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"!"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", MarketPlaceContract)) {"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:" // is approved and only requires a single transaction"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" sendTransaction"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: MarketPlaceContract,"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" data: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"`0x${"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"data"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"slice"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"2"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:", "}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"data"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"length"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:")"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},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:" gas: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"null"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",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:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"else"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:" // is not approved, so requires multiple transactions"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" erc1155Interface"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "function setApprovalForAll(address _operator, bool _approved) returns ()"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ]);"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:" // is not approved"})}),` +`,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:" dataApprove"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" erc1155Interface."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"encodeFunctionData"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "setApprovalForAll"'}),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:" ["}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"0xB537a160472183f2150d42EB1c3DD6684A55f74c"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"true"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"]"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" );"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" txApprove"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: ERC1155Contract,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" data: dataApprove,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" };"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" tx"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: MarketPlaceContract,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" data: data,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" };"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" (isSequence) {"})]}),` +`,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:"();"})]}),` +`,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:" signer"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" wallet."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"getSigner"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"421614"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" try"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:" res"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" signer."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"sendTransaction"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"([txApprove, tx]);"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" console."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"log"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(res);"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"catch"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" (err) {"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" console."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"log"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(err);"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" console."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"log"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"user closed the wallet, or, an error occured"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]}),` +`,s.jsx(e.span,{className:"line",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:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"else"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:" // is not a sequence wallet"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:" // todo: implement mutex"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" sendTransaction"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: ERC1155Contract,"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" data: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"`0x${"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"dataApprove"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"slice"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"2"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:", "}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"data"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"length"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:")"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},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:" gas: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"null"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" });"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:" // still need to send acceptRequest transaction"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"};"})})]})}),` +`,s.jsxs(e.p,{children:["Finally, for the path where the transaction does not take place from a sequence wallet and is not approved, we must submit a transaction once there is a transaction receipt from the ",s.jsx(e.code,{children:"useSendTransaction"})," hook using a mutex to confirm which transaction the hash came from. This is done in a react ",s.jsx(e.code,{children:"useEffect"})," function."]}),` +`,s.jsx(i,{type:"info",children:s.jsx(e.p,{children:`In computer programming, a mutual exclusion (mutex) is a program object that +prevents multiple threads from accessing the same shared resource +simultaneously.`})}),` +`,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","data-empty-line":!0,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:" { useMutex } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" 'react-context-mutex'"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:";"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"function"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" App"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"() {"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},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:" MutexRunner"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" useMutex"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:" mutexApproveERC1155"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" MutexRunner"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"'sendApproveERC1155'"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" createRequest"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" async"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" () "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"=>"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" checkERC1155Approval"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(address"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"!"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:",MarketPlaceContract)){"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"else"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" (isSequence) { "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// is a sequence wallet"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"else"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" { "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// is not a sequence wallet"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" mutexApproveERC1155."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"lock"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"()"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" sendTransaction"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: ERC1155Contract,"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" data: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"`0x${"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"dataApprove"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"slice"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"2"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:","}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"data"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"length"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:")"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},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:" gas: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"null"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" })"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" };"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" useEffect"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(() "}),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:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" (mutexApproveERC1155."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"isLocked"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"() "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" hash) {"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" sendTransaction"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: MarketPlaceContract,"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" data: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"`0x${"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"requestData"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"slice"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"2"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:", "}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"requestData"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"length"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:")"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},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:" gas: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"null"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",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:" mutexApproveERC1155."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"unlock"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"();"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }, [requestData, hash]);"})})]})}),` +`,s.jsx(e.p,{children:"Great you're done creating requests to the Sequence Market protocol, now you can implement a button and try the flow."}),` +`,s.jsxs(e.h2,{id:"6-order-accepting",children:["6. Order accepting",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#6-order-accepting",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +`,s.jsx(e.p,{children:"Now that we have an order on the marketplace, we need to do a few things:"}),` +`,s.jsxs(e.ul,{children:[` +`,s.jsxs(e.li,{children:[s.jsx(e.code,{children:"Query the Marketplace"}),": query the marketplace for an ",s.jsx(e.code,{children:"orderId"})," that you want to accept an order for"]}),` +`,s.jsxs(e.li,{children:[s.jsx(e.code,{children:"Currency Balance"}),": check for currency balance using the indexer"]}),` +`,s.jsxs(e.li,{children:[s.jsx(e.code,{children:"Token Approval"}),": check for currency approval for the marketplace to transfer tokens"]}),` +`]}),` +`,s.jsxs(e.h4,{id:"query-the-marketplace",children:["Query the Marketplace",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#query-the-marketplace",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +`,s.jsxs(e.p,{children:["Lets query the marketplace orderbook to get the ",s.jsx(e.code,{children:"pricePerToken"})," and ",s.jsx(e.code,{children:"orderId"})," the order is for"]}),` +`,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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" getTopOrder"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" async"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ("}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"tokenID"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" string"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:") "}),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:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" res"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" fetch"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("})]}),` +`,s.jsxs(e.span,{className:"line",children:[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:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",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:" method: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"POST"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" headers: {"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "Content-Type"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:": "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"application/json"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",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:" body: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"JSON"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"stringify"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" collectionAddress: ERC1155Contract,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" currencyAddresses: [ArbSepoliaUSDCContract],"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" orderbookContractAddress: MarketPlaceContract,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" tokenIDs: [tokenID],"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" isListing: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"true"}),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:" priceSort: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"DESC"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// descending based on price to get lowest offer first"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }),"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" },"})}),` +`,s.jsx(e.span,{className:"line",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:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" result"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" await"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" res."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"json"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"();"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" return"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" result.orders["}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"0"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"] "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// getting the first order from the list"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" acceptOrder"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" async"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" () "}),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:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" tokenID"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" '1'"})]}),` +`,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:" topOrder"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" any"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" getTopOrder"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(tokenID)"})]}),` +`,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:" requiredAmount"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" topOrder.pricePerToken"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" checkERC20Balance"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(requiredAmount)){"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"else"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})})]})}),` +`,s.jsxs(e.h4,{id:"currency-balance",children:["Currency balance",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#currency-balance",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +`,s.jsx(e.p,{children:"We'll use the indexer to query the balance and see if the user has enough token to pay for the order. This can be accomplished with the following code:"}),` +`,s.jsx(i,{type:"warning",children:s.jsx(e.p,{children:`You'll need to make sure when you perform an equality check on the token +contract address, that it is inputted as all lowercase`})}),` +`,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:"import"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" { SequenceIndexer } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" '@0xsequence/indexer'"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" checkERC20Balance"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" async"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ("}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"requiredAmount"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" any"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:") "}),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:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" indexer"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" SequenceIndexer"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"'https://arbitrum-sepolia-indexer.sequence.app'"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", process.env."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"REACT_APP_PROJECT_ACCESSKEY"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" contractAddress"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ArbSepoliaUSDCContract"})]}),` +`,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:" accountAddress"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" address"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" tokenBalances"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" await"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" indexer."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"getTokenBalances"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" contractAddress: contractAddress,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" accountAddress: accountAddress,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" })"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" let"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" hasEnoughBalance "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" false"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" tokenBalances.balances."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"map"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(("}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"token"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:") "}),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:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" tokenBalanceBN"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.BigNumber."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"from"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(token.balance);"})]}),` +`,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:" requiredAmountBN"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.BigNumber."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"from"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(requiredAmount);"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(token.contractAddress "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"=="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ArbSepoliaUSDCContract "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" tokenBalanceBN."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"gte"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(requiredAmountBN)){"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" hasEnoughBalance "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" true"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" })"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" return"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" hasEnoughBalance"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"}"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" acceptOrder"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" async"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" () "}),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:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" tokenID"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" '1'"})]}),` +`,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:" topOrder"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" any"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" getTopOrder"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(tokenID)"})]}),` +`,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:" requiredAmount"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" topOrder.pricePerToken"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" checkERC20Balance"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(requiredAmount)){"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"else"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:" // provide prompt on screen that user does not have balance"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"}"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "})]})}),` +`,s.jsxs(e.h4,{id:"token-approval",children:["Token Approval",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#token-approval",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +`,s.jsx(e.p,{children:"Next, we'll check for token approval for the Marketplace to be able to transfer the currency token"}),` +`,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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" checkERC20Approval"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" async"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ("}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"ownerAddress"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" string"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"spenderAddress"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" string"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"tokenContractAddress"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" string"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"requiredAmount"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" string"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:") "}),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:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" abi"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ["})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "function allowance(address owner, address spender) external view returns (uint256)"'})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ];"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" provider"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.providers."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"JsonRpcProvider"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"`https://nodes.sequence.app/arbitrum-sepolia/${"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"process"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"env"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"REACT_APP_PROJECT_ACCESSKEY"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},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:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" contract"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Contract"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(tokenContractAddress, abi, provider);"})]}),` +`,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:" allowance"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" await"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" contract."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"allowance"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(ownerAddress, spenderAddress);"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" requiredAmountBN"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.BigNumber."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"from"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(requiredAmount);"})]}),` +`,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:" allowanceBN"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.BigNumber."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"from"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(allowance);"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" return"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" allowanceBN."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"gte"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(requiredAmountBN);"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" acceptOrder"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" async"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" () "}),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:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" tokenID"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" '1'"})]}),` +`,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:" topOrder"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" any"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" getTopOrder"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(tokenID)"})]}),` +`,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:" requiredAmount"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" topOrder.pricePerToken"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" checkERC20Balance"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(requiredAmount)){"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"!"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" checkERC20Approval"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(address"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"!"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:",MarketPlaceContract,ArbSepoliaUSDCContract,requiredAmount))){"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ..."})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"else"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsx(e.span,{className:"line",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:"#D73A49","--shiki-dark":"#F47067"},children:" else"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})})]})}),` +`,s.jsx(e.p,{children:"Finally, we'll complete the needed logic with actually sending a transaction to the blockchain"}),` +`,s.jsx(e.p,{children:"We begin with the same flow as before, accounting for sending multi-batch transaction if it's a sequence wallet and not approved, or, if the Marketplace is approved to spend your tokens, only submitting a single transaction"}),` +`,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:"#D73A49","--shiki-dark":"#F47067"},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:" mutexApproveERC20"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" MutexRunner"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"'sendApproveERC20'"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" acceptOrder"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" async"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" () "}),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:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" topOrder"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" any"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" getTopOrder"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"'1'"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:" requiredAmount"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" topOrder.pricePerToken"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" sequenceMarketInterface"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "function acceptRequest(uint256 requestId, uint256 quantity, address recipient, uint256[] calldata additionalFees, address[] calldata additionalFeeRecipients)"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ]);"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" quantity"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" 1"})]}),` +`,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:" data"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" sequenceMarketInterface."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"encodeFunctionData"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "acceptRequest"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" [topOrder.orderId, quantity, address, [], []],"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" );"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" setAcceptData"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(data) "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// we'll need this later"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" checkERC20Balance"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(requiredAmount)){"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(("}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"await"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" checkERC20Approval"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(address"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"!"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:",MarketPlaceContract,ArbSepoliaUSDCContract,requiredAmount))){"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" sendTransaction"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: MarketPlaceContract,"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" data: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"`0x${"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"data"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"slice"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"2"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:","}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"data"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"length"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:")"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},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:" gas: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"null"})]}),` +`,s.jsx(e.span,{className:"line",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:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"else"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},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:" erc20Interface"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "function approve(address spender, uint256 amount) external returns (bool)"'})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ]);"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" spenderAddress"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "0xB537a160472183f2150d42EB1c3DD6684A55f74c"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:" maxUint256"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.constants.MaxUint256;"})]}),` +`,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:" dataApprove"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" erc20Interface."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"encodeFunctionData"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"approve"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", [spenderAddress, maxUint256]);"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(isSequence){"})]}),` +`,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:"()"})]}),` +`,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:" signer"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" wallet."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"getSigner"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"421614"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" txApprove"}),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:" to: ArbSepoliaUSDCContract, "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// The contract address of the ERC-20 token, replace with actual contract address"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" data: dataApprove"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" };"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" try"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:" res"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" await"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" signer."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"sendTransaction"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"([txApprove, tx])"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" console."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"log"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(res)"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"catch"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" (err) {"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" console."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"log"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(err)"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" console."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"log"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"'user closed the wallet, or, an error occured'"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` +`,s.jsx(e.span,{className:"line",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:" } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"else"}),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:" mutexApproveERC20."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"lock"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"()"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" sendTransaction"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: ArbSepoliaUSDCContract,"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" data: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"`0x${"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"dataApprove"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"slice"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"2"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:","}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"dataApprove"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"length"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:")"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},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:" gas: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"null"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" })"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})})]})}),` +`,s.jsxs(e.p,{children:["Then in the flow for not being a sequence wallet and requiring approval, we'll include another ",s.jsx(e.code,{children:"useEffect"})," with the mutex check implemented like before"]}),` +`,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:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"useEffect"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(() "}),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:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" (acceptData "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" mutexApproveERC20."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"isLocked"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"()) {"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" sendTransaction"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: MarketPlaceContract,"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" data: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"`0x${"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"acceptData"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"slice"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"("}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"2"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:", "}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"acceptData"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"length"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:")"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},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:" gas: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"null"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",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:" mutexApproveERC20."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"unlock"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"();"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"}, [hash, acceptData]);"})})]})}),` +`,s.jsx(e.p,{children:"Great, everything is complete if you add the function click handler attached to a button"}),` +`,s.jsxs(e.h2,{id:"7-optional-enable-embedded-wallet",children:["7. (Optional) Enable Embedded Wallet",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#7-optional-enable-embedded-wallet",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +`,s.jsxs(e.p,{children:["In order to make your sequence kit connector as ",s.jsx(e.a,{href:"/solutions/wallets/embedded-wallet/01-overview",children:"Embedded Wallet"})," enabled, we'll need to install a few package version and update our ",s.jsx(e.code,{children:"config.ts"})," we used at the beginning of the guide"]}),` +`,s.jsx(e.p,{children:"The Embedded Wallet feature allows no-confirmation transactions, which can create a smoother UX"}),` +`,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.jsx(e.span,{className:"line",children:s.jsx(e.span,{children:"pnpm i @0xsequence/kit@2.0.5-beta.9 @0xsequence/kit-connectors@2.0.5-beta.9"})})})}),` +`,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:"// config.ts"})}),` +`,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:" { arbitrumSepolia, Chain } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "wagmi/chains"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:" { getDefaultWaasConnectors } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "@0xsequence/kit-connectors"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"; "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// updated"})]}),` +`,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:" { createConfig, http } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "wagmi"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},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:" { getKitConnectWallets } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "@0xsequence/kit"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"; "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// updated"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" chains"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" [arbitrumSepolia] "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"as"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ["}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"Chain"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"..."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"Chain"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"[]];"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// added environment variables"})}),` +`,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:" projectAccessKey"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" process.env."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"REACT_APP_PROJECTACCESSKEY"}),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:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" waasConfigKey"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" process.env."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"REACT_APP_WAASCONFIGKEY"}),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:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" googleClientId"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" process.env."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"REACT_APP_GOOGLECLIENTID"}),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:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" appleClientId"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" process.env."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"REACT_APP_APPLECLIENTID"}),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:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" walletConnectProjectId"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" process.env."}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"REACT_APP_WALLETCONNECTID"}),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:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" appleRedirectURI"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:' "https://"'}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" +"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" window.location.host; "}),s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"// note: update slug to include correct homepage"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" connectors"}),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:"#D73A49","--shiki-dark":"#F47067"},children:" ..."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"getDefaultWaasConnectors"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:" // updated connector type"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" walletConnectProjectId: walletConnectProjectId,"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" defaultChainId: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"421614"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" waasConfigKey,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" googleClientId,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" appleClientId,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" appleRedirectURI,"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" appName: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:'"demo app"'}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" projectAccessKey,"})}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" enableConfirmationModal: "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"false"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` +`,s.jsx(e.span,{className:"line",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:"#D73A49","--shiki-dark":"#F47067"},children:" ..."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"getKitConnectWallets"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(projectAccessKey, []),"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"];"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" transports"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" any"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {};"})]}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"chains."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"forEach"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(("}),s.jsx(e.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:"chain"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:") "}),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:" transports[chain.id] "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"="}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" http"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"();"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"});"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:" config"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" createConfig"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"({"})]}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" transports,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" connectors,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" chains,"})}),` +`,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"});"})}),` +`,s.jsx(e.span,{className:"line","data-empty-line":!0,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:"#24292E","--shiki-dark":"#ADBAC7"},children:" { config };"})]})]})}),` +`,s.jsxs(e.p,{children:["Th last step, is to make sure to update our team with the Google and Apple authorized URLs (e.g. ",s.jsx(e.a,{href:"http://localhost:3000",children:"http://localhost:3000"}),") to call the Embeded Wallet login flow from"]})]})}function o(l={}){const{wrapper:e}={...r(),...l.components};return e?s.jsx(e,{...l,children:s.jsx(n,{...l})}):n(l)}export{o as default,d as frontmatter}; diff --git a/assets/token-directory-DVROtl18.js b/assets/token-directory-u4Sdw-ST.js similarity index 99% rename from assets/token-directory-DVROtl18.js rename to assets/token-directory-u4Sdw-ST.js index 69699e245a..b2d610b237 100644 --- a/assets/token-directory-DVROtl18.js +++ b/assets/token-directory-u4Sdw-ST.js @@ -1,4 +1,4 @@ -import{u as a,j as e,e as t}from"./index-BXOUdEEZ.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{u as a,j as e,e as t}from"./index-CchMGs7j.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/typescript-B2fnIbxK.js b/assets/typescript-B2fnIbxK.js deleted file mode 100644 index 925cada3b6..0000000000 --- a/assets/typescript-B2fnIbxK.js +++ /dev/null @@ -1 +0,0 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/typescript-DDSjtPZP.js b/assets/typescript-DDSjtPZP.js new file mode 100644 index 0000000000..dadfca3443 --- /dev/null +++ b/assets/typescript-DDSjtPZP.js @@ -0,0 +1 @@ +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/unity-B2fnIbxK.js b/assets/unity-B2fnIbxK.js deleted file mode 100644 index 925cada3b6..0000000000 --- a/assets/unity-B2fnIbxK.js +++ /dev/null @@ -1 +0,0 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/unity-DDSjtPZP.js b/assets/unity-DDSjtPZP.js new file mode 100644 index 0000000000..dadfca3443 --- /dev/null +++ b/assets/unity-DDSjtPZP.js @@ -0,0 +1 @@ +import{u as r,j as n}from"./index-CchMGs7j.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/unity-guide-CueCJCPV.js b/assets/unity-guide-txEESrUd.js similarity index 96% rename from assets/unity-guide-CueCJCPV.js rename to assets/unity-guide-txEESrUd.js index fcb96fe78d..82070d0799 100644 --- a/assets/unity-guide-CueCJCPV.js +++ b/assets/unity-guide-txEESrUd.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.js";const d=void 0;function a(t){const n={a:"a",div:"div",h2:"h2",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsxs(n.h2,{id:"integrate-sequencekit-with-waas",children:["Integrate SequenceKit with WaaS",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-sequencekit-with-waas",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` +import{u as i,j as e}from"./index-CchMGs7j.js";const d=void 0;function a(t){const n={a:"a",div:"div",h2:"h2",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsxs(n.h2,{id:"integrate-sequencekit-with-waas",children:["Integrate SequenceKit with WaaS",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-sequencekit-with-waas",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h2,{id:"deploy-a-collectibles-contract",children:["Deploy a collectibles contract",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-a-collectibles-contract",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h2,{id:"deploy-a-remote-minter",children:["Deploy a remote minter",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-a-remote-minter",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h2,{id:"mint-in-game-achievement-tokens",children:["Mint in-game achievement tokens",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mint-in-game-achievement-tokens",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/unreal-B2fnIbxK.js b/assets/unreal-B2fnIbxK.js deleted file mode 100644 index 925cada3b6..0000000000 --- a/assets/unreal-B2fnIbxK.js +++ /dev/null @@ -1 +0,0 @@ -import{u as r,j as n}from"./index-BXOUdEEZ.js";const u=void 0;function o(t){return n.jsx(n.Fragment,{})}function a(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{a as default,u as frontmatter}; diff --git a/assets/wallet-GrjrteyT.js b/assets/wallet-mf2x4_rS.js similarity index 89% rename from assets/wallet-GrjrteyT.js rename to assets/wallet-mf2x4_rS.js index 1b2f0dc670..7bf3a875ef 100644 --- a/assets/wallet-GrjrteyT.js +++ b/assets/wallet-mf2x4_rS.js @@ -1,2 +1,2 @@ -import{u as r,j as e}from"./index-BXOUdEEZ.js";const s={title:"Wallet",description:"undefined"};function a(t){const n={a:"a",div:"div",h1:"h1",header:"header",p:"p",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"wallet",children:["Wallet",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{u as r,j as e}from"./index-CchMGs7j.js";const s={title:"Wallet",description:"undefined"};function a(t){const n={a:"a",div:"div",h1:"h1",header:"header",p:"p",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"wallet",children:["Wallet",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"sadfasdf"})]})}function i(t={}){const{wrapper:n}={...r(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(a,{...t})}):a(t)}export{i as default,s as frontmatter}; diff --git a/assets/wallet-sdks-Cc2jbMjt.js b/assets/wallet-sdks-Co1VpyGC.js similarity index 97% rename from assets/wallet-sdks-Cc2jbMjt.js rename to assets/wallet-sdks-Co1VpyGC.js index eebeb412c4..d73d16ccc5 100644 --- a/assets/wallet-sdks-Cc2jbMjt.js +++ b/assets/wallet-sdks-Co1VpyGC.js @@ -1,4 +1,4 @@ -import{u as a,j as e}from"./index-BXOUdEEZ.js";import{V as r}from"./Video-DFRdAWy3.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{u as a,j as e}from"./index-CchMGs7j.js";import{V as r}from"./Video-D4tib21T.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/webgl-guide-CueCJCPV.js b/assets/webgl-guide-txEESrUd.js similarity index 96% rename from assets/webgl-guide-CueCJCPV.js rename to assets/webgl-guide-txEESrUd.js index fcb96fe78d..82070d0799 100644 --- a/assets/webgl-guide-CueCJCPV.js +++ b/assets/webgl-guide-txEESrUd.js @@ -1,4 +1,4 @@ -import{u as i,j as e}from"./index-BXOUdEEZ.js";const d=void 0;function a(t){const n={a:"a",div:"div",h2:"h2",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsxs(n.h2,{id:"integrate-sequencekit-with-waas",children:["Integrate SequenceKit with WaaS",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-sequencekit-with-waas",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` +import{u as i,j as e}from"./index-CchMGs7j.js";const d=void 0;function a(t){const n={a:"a",div:"div",h2:"h2",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsxs(n.h2,{id:"integrate-sequencekit-with-waas",children:["Integrate SequenceKit with WaaS",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-sequencekit-with-waas",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h2,{id:"deploy-a-collectibles-contract",children:["Deploy a collectibles contract",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-a-collectibles-contract",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h2,{id:"deploy-a-remote-minter",children:["Deploy a remote minter",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-a-remote-minter",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h2,{id:"mint-in-game-achievement-tokens",children:["Mint in-game achievement tokens",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mint-in-game-achievement-tokens",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/white-label-marketplace-DxCxhU5v.js b/assets/white-label-marketplace-CCd3phEf.js similarity index 94% rename from assets/white-label-marketplace-DxCxhU5v.js rename to assets/white-label-marketplace-CCd3phEf.js index df05c0ccd1..5960c2a290 100644 --- a/assets/white-label-marketplace-DxCxhU5v.js +++ b/assets/white-label-marketplace-CCd3phEf.js @@ -1,4 +1,4 @@ -import{u as n,j as e}from"./index-BXOUdEEZ.js";import{V as r}from"./Video-DFRdAWy3.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{u as n,j as e}from"./index-CchMGs7j.js";import{V as r}from"./Video-D4tib21T.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/builder/index.html b/builder/index.html index 7d09d10484..c76d73f8aa 100644 --- a/builder/index.html +++ b/builder/index.html @@ -7,13 +7,13 @@ builder intro – Sequence - + - - + +
Skip to content
builder intro

builder intro

diff --git a/guides/discord/index.html b/guides/discord/index.html index e73b713034..4da4f5266a 100644 --- a/guides/discord/index.html +++ b/guides/discord/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
Skip to content

Deploy an in-game collectibles contract

diff --git a/guides/index.html b/guides/index.html index 68dd27f59b..f9fdde29ab 100644 --- a/guides/index.html +++ b/guides/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
Skip to content
diff --git a/guides/lootbox/index.html b/guides/lootbox/index.html index 005a5d43a1..a4dddfb664 100644 --- a/guides/lootbox/index.html +++ b/guides/lootbox/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
Skip to content

Deploy an in-game collectibles contract

diff --git a/guides/templates/02-building-relaying-server/index.html b/guides/templates/02-building-relaying-server/index.html index 9e8fc14f3f..7398c9a34f 100644 --- a/guides/templates/02-building-relaying-server/index.html +++ b/guides/templates/02-building-relaying-server/index.html @@ -7,13 +7,13 @@ Building a Relaying Server – Sequence - + - - + +
Skip to content

Building a Relaying Server

diff --git a/guides/templates/03-mint-collectibles-serverless/index.html b/guides/templates/03-mint-collectibles-serverless/index.html index 38c6711fc0..c090803a7f 100644 --- a/guides/templates/03-mint-collectibles-serverless/index.html +++ b/guides/templates/03-mint-collectibles-serverless/index.html @@ -7,13 +7,13 @@ Mint Collectibles Using a Gasless Serverless Relayer – Sequence - + - - + +
Skip to content

Mint Collectibles Using a Gasless Serverless Relayer

diff --git a/guides/templates/template-embedded-wallet/index.html b/guides/templates/template-embedded-wallet/index.html index da09594999..501d4bffe7 100644 --- a/guides/templates/template-embedded-wallet/index.html +++ b/guides/templates/template-embedded-wallet/index.html @@ -7,13 +7,13 @@ Quickstart – Sequence - + - - + +
Skip to content

Quickstart

diff --git a/guides/templates/template-marketplace-api/index.html b/guides/templates/template-marketplace-api/index.html index 45caf2c7a4..11d1193018 100644 --- a/guides/templates/template-marketplace-api/index.html +++ b/guides/templates/template-marketplace-api/index.html @@ -7,31 +7,136 @@ Custom Marketplace – Sequence - + - - + +
Skip to content

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:

-

All of this in custom javascript code

-

Minting

-

The first step is to create a collectible from the sequence Builder with a few mints, which can be accomplished with this guide.

-

Blockchain Queries

+

1. Minting

+

The first step is to create a collectible from the sequence Builder with a few mints, which can be accomplished with this guide and to use the tokenId you minted in the following steps to query and fulfill orders.

+

2. Wallet Authentication

+

For your project, you'll need a way to authenticate your user with a wallet.

+

Your choice from the Sequence stack is to use either an Embedded Wallet for seamless UX, or, a Universal Wallet with something like Sequence Kit to reach more types of wallets.

+

For this guide we'll use an Universal Sequence Wallet with Sequence Kit connector (with an option for an Embedded-Wallet) which can authenticate users using Google or Apple auth, in addition to user brought wallets like Coinbase or Metamask

+

Install packages

+

Either you can create a vanilla js/html/css project from a template like this, or we will walk you through how to use react here.

+

Start by creating a project in a folder of your name choosing:

+
mkdir <project_name>
+cd <project_name>
+npx create-react-app . --template=typescript
+

Then, begin by installing the required packages in the <project_name> folder

+
pnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query
+

Then in src next to index.tsx in the folder, create a config.ts file with the following contents:

+
import { arbitrumSepolia, Chain } from 'wagmi/chains'
+import { getDefaultConnectors } from '@0xsequence/kit-connectors'
+import { createConfig, http } from 'wagmi'
+ 
+const chains = [arbitrumSepolia] as [Chain, ...Chain[]]
+ 
+const projectAccessKey = process.env.REACT_APP_PROJECTACCESSKEY!;
+const walletConnectProjectId = process.env.REACT_APP_WALLETCONNECTID!;
+ 
+const connectors = getDefaultConnectors({
+    walletConnectProjectId: walletConnectProjectId,
+    defaultChainId: 421614,
+    appName: 'demo app',
+    projectAccessKey
+})
+ 
+const transports: any = {}
+ 
+chains.forEach(chain => {
+    transports[chain.id] = http()
+})
+ 
+const config = createConfig({
+    transports,
+    connectors,
+    chains
+})
+ 
+export { config }
+ 
+ +

Next, import the config to be consumed by the WagmiProvider in the index.tsx

+
import ReactDOM from "react-dom/client";
+import { KitProvider } from "@0xsequence/kit";
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
+import { WagmiProvider } from "wagmi";
+import App from './App'
+ 
+import { config } from "./config";
+ 
+const root = ReactDOM.createRoot(
+  document.getElementById("root") as HTMLElement,
+);
+ 
+const queryClient = new QueryClient();
+ 
+function Dapp() {
+  return (
+    <WagmiProvider config={config}>
+      <QueryClientProvider client={queryClient}>
+        <KitProvider config={{ defaultTheme: "light", signIn: { showEmailInput: false } }}>
+          <App />
+        </KitProvider>
+      </QueryClientProvider>
+    </WagmiProvider>
+  );
+}
+ 
+root.render(
+      <Dapp />
+);
+

And finally, add a button in the App.tsx to make the Sequence Kit modal appear

+
import { useOpenConnectModal } from "@0xsequence/kit";
+import { useDisconnect, useAccount, useConnect } from "wagmi";
+ 
+function App() {
+  const { address, isConnected } = useAccount();
+  const { setOpenConnectModal } = useOpenConnectModal();
+  const { disconnect } = useDisconnect();
+ 
+  const connect = async () => {
+    disconnect();
+    setOpenConnectModal(true);
+  };
+ 
+  return (
+    <>
+      {!isConnected && <button onClick={() => connect()}>connect</button>}
+      {isConnected && <button onClick={() => disconnect()}>connect</button>}
+      {address && address}
+    </>
+  );
+}
+ 
+export default App;
+

Great! You should have an application that can authorize a user and return a wallet address.

+

You can now test it with:

+
pnpm run start
+

3. Blockchain queries

Once you have one or a few collectibles minted, you can query the data from the contract address from your deployment, which can be found here:

copy contract address

-

You can query data using the indexer, using this code where an account address and contract address are inputted into the indexer api

+

You can query data using the indexer, using this code where an account address and contract address (retrieved from the Sequence Builder deployed contract) are inputted into the indexer api

+

This will be important when you're determining a tokenID to create a request on the marketplace, for this demo we'll assume you're dealing with a single tokenID

// Works in both a Webapp (browser) or Node.js:
 import { SequenceIndexer } from "@0xsequence/indexer";
  
@@ -41,8 +146,8 @@ 

); // try any contract and account address you'd like :), as an example -const contractAddress = "0x1693ffc74edbb50d6138517fe5cd64fd1c917709"; -const accountAddress = "0xc2be9cf6d9ee4fd211f88620760e829792659b16"; +const contractAddress = "<your_deploy_contract_address"; // "0x1693ffc74edbb50d6138517fe5cd64fd1c917709"; +const accountAddress = address; // "0xc2be9cf6d9ee4fd211f88620760e829792659b16"; // query Sequence Indexer for all nft balances of the account on Polygon const nftBalances = await indexer.getTokenBalances({ @@ -102,7 +207,432 @@

Request Creation

-

Order Accepting

+

4. Multi-wallet types

+

Due to the fact that we're using Sequence Kit for this example that allows you to use a Sequence wallet, in addition to your own brought EOA wallet, sending transactions to the blockchain will differ due to the fact that with a Sequence wallet, you can send batch transactions, whereas with wagmi using an EOA you can only send 1 transaction at a time.

+

To accomplish this, we take a few steps to create a local state variable that checks for the authorized wallet

+
import { useEffect } from "react";
+import { useConnect, useAccount } from "wagmi";
+ 
+function App() {
+  const { isConnected } = useAccount();
+  const { connectors } = useConnect();
+  const [isSequence, setIsSequence] = useState<boolean>(false);
+ 
+  useEffect(() => {
+    connectors.map(async (connector) => {
+      if ((await connector.isAuthorized()) && connector.id === "sequence") {
+        setIsSequence(true);
+      }
+    });
+  }, [isConnected]);
+}
+

Orderbook Transactions

+ +

5. Request creation

+

For this example, we'll be using Arbitrum Sepolia USDC from the community faucet

+

Head over there to first get some tokens, so that you can make listing with your request

+
+

Then, in order to create a request for the orderbook, we'll need to first make sure we enable the marketplace orderbook contract with approval to transfer your tokens

+

First, we check that the marketplace is approved for the contract, with some logic

+
const ERC1155Contract = '0x1693ffc74edbb50d6138517fe5cd64fd1c917709'
+const MarketPlaceContract = '0xB537a160472183f2150d42EB1c3DD6684A55f74c'
+ 
+function App() {
+ 
+  async function checkERC1155Approval(ownerAddress: string, operatorAddress: string) {
+    const abi = [
+      "function isApprovedForAll(address account, address operator) external view returns (bool)"
+    ];
+    const provider = new ethers.providers.JsonRpcProvider(`https://nodes.sequence.app/arbitrum-sepolia/${process.env.REACT_APP_PROJECT_ACCESSKEY}`);
+    const contract = new ethers.Contract(ERC1155Contract, abi, provider);
+    return await contract.isApprovedForAll(ownerAddress, operatorAddress);
+  }
+ 
+  const createRequest = async () => {
+      ...
+    if(await checkERC1155Approval(address!,MarketPlaceContract)){
+      // is approved and only requires a single transaction
+      ...
+    } else { // is not approved, so requires multiple transactions
+ 
+      if(isSequence) { .. perform multi-batch transactions
+        ...
+      } else { // is not a sequence wallet
+        ...
+      }
+    }
+  };
+ 
+}
+

Next, we'll need to craft the transaction with the correct ABI to generate the expected calldata for the various paths of: not being approved versus approved, and if it is a sequence wallet or not.

+
const [requestData, setRequestData] = useState<any>(null);
+ 
+const createRequest = async () => {
+  const sequenceMarketInterface = new ethers.utils.Interface([
+    "function createRequest(tuple(bool isListing, bool isERC1155, address tokenContract, uint256 tokenId, uint256 quantity, uint96 expiry, address currency, uint256 pricePerToken)) external nonReentrant returns (uint256 requestId)",
+  ]);
+ 
+  const amountBigNumber = ethers.utils.parseUnits(String("0.01"), 6); // ensure to use the proper decimals
+ 
+  const request = {
+    isListing: true,
+    isERC1155: true,
+    tokenContract: ERC1155Contract,
+    tokenId: 1,
+    quantity: 1,
+    expiry: Date.now() + 7 * 24 * 60 * 60 * 1000, // 1 day
+    currency: ArbSepoliaUSDCContract,
+    pricePerToken: amountBigNumber,
+  };
+ 
+  const data = sequenceMarketInterface.encodeFunctionData("createRequest", [
+    request,
+  ]);
+ 
+  setRequestData(data); // we'll need this in the next step
+ 
+  if (await checkERC1155Approval(address!, MarketPlaceContract)) {
+    // is approved and only requires a single transaction
+ 
+    sendTransaction({
+      to: MarketPlaceContract,
+      data: `0x${data.slice(2, data.length)}`,
+      gas: null,
+    });
+  } else {
+    // is not approved, so requires multiple transactions
+ 
+    const erc1155Interface = new ethers.utils.Interface([
+      "function setApprovalForAll(address _operator, bool _approved) returns ()",
+    ]);
+ 
+    // is not approved
+    const dataApprove = erc1155Interface.encodeFunctionData(
+      "setApprovalForAll",
+      ["0xB537a160472183f2150d42EB1c3DD6684A55f74c", true]
+    );
+ 
+    const txApprove = {
+      to: ERC1155Contract,
+      data: dataApprove,
+    };
+ 
+    const tx = {
+      to: MarketPlaceContract,
+      data: data,
+    };
+ 
+    if (isSequence) {
+      const wallet = sequence.getWallet();
+      const signer = wallet.getSigner(421614);
+ 
+      try {
+        const res = signer.sendTransaction([txApprove, tx]);
+        console.log(res);
+      } catch (err) {
+        console.log(err);
+        console.log("user closed the wallet, or, an error occured");
+      }
+    } else {
+      // is not a sequence wallet
+      // todo: implement mutex
+ 
+      sendTransaction({
+        to: ERC1155Contract,
+        data: `0x${dataApprove.slice(2, data.length)}`,
+        gas: null,
+      });
+      // still need to send acceptRequest transaction
+    }
+  }
+};
+

Finally, for the path where the transaction does not take place from a sequence wallet and is not approved, we must submit a transaction once there is a transaction receipt from the useSendTransaction hook using a mutex to confirm which transaction the hash came from. This is done in a react useEffect function.

+ +
 
+import { useMutex } from 'react-context-mutex';
+ 
+function App() {
+  ...
+  const MutexRunner = useMutex();
+  const mutexApproveERC1155 = new MutexRunner('sendApproveERC1155');
+ 
+  const createRequest = async () => {
+    ...
+    if(await checkERC1155Approval(address!,MarketPlaceContract)){
+      ...
+    } else {
+      if (isSequence) { // is a sequence wallet
+        ...
+      } else { // is not a sequence wallet
+        mutexApproveERC1155.lock()
+        sendTransaction({
+          to: ERC1155Contract,
+          data: `0x${dataApprove.slice(2,data.length)}`,
+          gas: null
+        })
+      }
+    }
+  };
+ 
+  useEffect(() => {
+    if (mutexApproveERC1155.isLocked() && hash) {
+      sendTransaction({
+        to: MarketPlaceContract,
+        data: `0x${requestData.slice(2, requestData.length)}`,
+        gas: null,
+      });
+      mutexApproveERC1155.unlock();
+    }
+  }, [requestData, hash]);
+

Great you're done creating requests to the Sequence Market protocol, now you can implement a button and try the flow.

+

6. Order accepting

+

Now that we have an order on the marketplace, we need to do a few things:

+
    +
  • Query the Marketplace: query the marketplace for an orderId that you want to accept an order for
  • +
  • Currency Balance: check for currency balance using the indexer
  • +
  • Token Approval: check for currency approval for the marketplace to transfer tokens
  • +
+

Query the Marketplace

+

Lets query the marketplace orderbook to get the pricePerToken and orderId the order is for

+
  const getTopOrder = async (tokenID: string) => {
+    const res = await fetch(
+      "https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetTopOrders",
+      {
+        method: "POST",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        body: JSON.stringify({
+          collectionAddress: ERC1155Contract,
+          currencyAddresses: [ArbSepoliaUSDCContract],
+          orderbookContractAddress: MarketPlaceContract,
+          tokenIDs: [tokenID],
+          isListing: true,
+          priceSort: "DESC", // descending based on price to get lowest offer first
+        }),
+      },
+    );
+    const result = await res.json();
+    return result.orders[0] // getting the first order from the list
+  }
+ 
+  const acceptOrder = async () => {
+    const tokenID = '1'
+    const topOrder: any = await getTopOrder(tokenID)
+    const requiredAmount = topOrder.pricePerToken
+    ...
+    if(await checkERC20Balance(requiredAmount)){
+      ...
+    } else {
+      ...
+    }
+  }
+

Currency balance

+

We'll use the indexer to query the balance and see if the user has enough token to pay for the order. This can be accomplished with the following code:

+ +
import { SequenceIndexer } from '@0xsequence/indexer'
+...
+const checkERC20Balance = async (requiredAmount: any) => {
+    const indexer = new SequenceIndexer('https://arbitrum-sepolia-indexer.sequence.app', process.env.REACT_APP_PROJECT_ACCESSKEY)
+ 
+    const contractAddress = ArbSepoliaUSDCContract
+    const accountAddress = address
+ 
+    const tokenBalances = await indexer.getTokenBalances({
+      contractAddress: contractAddress,
+      accountAddress: accountAddress,
+    })
+ 
+    let hasEnoughBalance = false
+ 
+    tokenBalances.balances.map((token) => {
+      const tokenBalanceBN = ethers.BigNumber.from(token.balance);
+      const requiredAmountBN = ethers.BigNumber.from(requiredAmount);
+      if(token.contractAddress == ArbSepoliaUSDCContract && tokenBalanceBN.gte(requiredAmountBN)){
+        hasEnoughBalance = true
+      }
+    })
+ 
+    return hasEnoughBalance
+ 
+}
+ 
+const acceptOrder = async () => {
+  const tokenID = '1'
+  const topOrder: any = await getTopOrder(tokenID)
+  const requiredAmount = topOrder.pricePerToken
+  ...
+  if(await checkERC20Balance(requiredAmount)){
+  ...
+  } else {
+  ... // provide prompt on screen that user does not have balance
+  }
+}
+ 
+

Token Approval

+

Next, we'll check for token approval for the Marketplace to be able to transfer the currency token

+
  const checkERC20Approval = async (ownerAddress: string, spenderAddress: string, tokenContractAddress: string, requiredAmount: string) => {
+    const abi = [
+      "function allowance(address owner, address spender) external view returns (uint256)"
+    ];
+ 
+    const provider = new ethers.providers.JsonRpcProvider(`https://nodes.sequence.app/arbitrum-sepolia/${process.env.REACT_APP_PROJECT_ACCESSKEY}`);
+    const contract = new ethers.Contract(tokenContractAddress, abi, provider);
+    const allowance = await contract.allowance(ownerAddress, spenderAddress);
+ 
+    const requiredAmountBN = ethers.BigNumber.from(requiredAmount);
+    const allowanceBN = ethers.BigNumber.from(allowance);
+ 
+    return allowanceBN.gte(requiredAmountBN);
+  }
+ 
+  const acceptOrder = async () => {
+    const tokenID = '1'
+    const topOrder: any = await getTopOrder(tokenID)
+    const requiredAmount = topOrder.pricePerToken
+ 
+    if(await checkERC20Balance(requiredAmount)){
+      if(!(await checkERC20Approval(address!,MarketPlaceContract,ArbSepoliaUSDCContract,requiredAmount))){
+        ...
+      } else {
+ 
+      }
+      else {
+ 
+      }
+    }
+  }
+

Finally, we'll complete the needed logic with actually sending a transaction to the blockchain

+

We begin with the same flow as before, accounting for sending multi-batch transaction if it's a sequence wallet and not approved, or, if the Marketplace is approved to spend your tokens, only submitting a single transaction

+
  ...
+  const mutexApproveERC20 = new MutexRunner('sendApproveERC20');
+  ...
+  const acceptOrder = async () => {
+    const topOrder: any = await getTopOrder('1')
+    const requiredAmount = topOrder.pricePerToken
+ 
+    const sequenceMarketInterface = new ethers.utils.Interface([
+      "function acceptRequest(uint256 requestId, uint256 quantity, address recipient, uint256[] calldata additionalFees, address[] calldata additionalFeeRecipients)",
+    ]);
+ 
+    const quantity = 1
+    const data = sequenceMarketInterface.encodeFunctionData(
+      "acceptRequest",
+      [topOrder.orderId, quantity, address, [], []],
+    );
+ 
+    setAcceptData(data) // we'll need this later
+ 
+    if(await checkERC20Balance(requiredAmount)){
+      if((await checkERC20Approval(address!,MarketPlaceContract,ArbSepoliaUSDCContract,requiredAmount))){
+        sendTransaction({
+          to: MarketPlaceContract,
+          data: `0x${data.slice(2,data.length)}`,
+          gas: null
+        })
+      } else {
+        ...
+        const erc20Interface = new ethers.utils.Interface([
+          "function approve(address spender, uint256 amount) external returns (bool)"
+        ]);
+ 
+        const spenderAddress = "0xB537a160472183f2150d42EB1c3DD6684A55f74c";
+        const maxUint256 = ethers.constants.MaxUint256;
+        const dataApprove = erc20Interface.encodeFunctionData("approve", [spenderAddress, maxUint256]);
+ 
+        if(isSequence){
+          const wallet = sequence.getWallet()
+          const signer = wallet.getSigner(421614)
+ 
+          const txApprove = {
+            to: ArbSepoliaUSDCContract, // The contract address of the ERC-20 token, replace with actual contract address
+            data: dataApprove
+          };
+ 
+          try {
+            const res = await signer.sendTransaction([txApprove, tx])
+            console.log(res)
+          } catch (err) {
+            console.log(err)
+            console.log('user closed the wallet, or, an error occured')
+          }
+        } else {
+          mutexApproveERC20.lock()
+ 
+          sendTransaction({
+            to: ArbSepoliaUSDCContract,
+            data: `0x${dataApprove.slice(2,dataApprove.length)}`,
+            gas: null
+          })
+        }
+      }
+    }
+

Then in the flow for not being a sequence wallet and requiring approval, we'll include another useEffect with the mutex check implemented like before

+
useEffect(() => {
+  if (acceptData && mutexApproveERC20.isLocked()) {
+    sendTransaction({
+      to: MarketPlaceContract,
+      data: `0x${acceptData.slice(2, acceptData.length)}`,
+      gas: null,
+    });
+    mutexApproveERC20.unlock();
+  }
+}, [hash, acceptData]);
+

Great, everything is complete if you add the function click handler attached to a button

+

7. (Optional) Enable Embedded Wallet

+

In order to make your sequence kit connector as Embedded Wallet enabled, we'll need to install a few package version and update our config.ts we used at the beginning of the guide

+

The Embedded Wallet feature allows no-confirmation transactions, which can create a smoother UX

+
pnpm i @0xsequence/kit@2.0.5-beta.9 @0xsequence/kit-connectors@2.0.5-beta.9
+
// config.ts
+import { arbitrumSepolia, Chain } from "wagmi/chains";
+import { getDefaultWaasConnectors } from "@0xsequence/kit-connectors"; // updated
+import { createConfig, http } from "wagmi";
+import { getKitConnectWallets } from "@0xsequence/kit"; // updated
+ 
+const chains = [arbitrumSepolia] as [Chain, ...Chain[]];
+ 
+// added environment variables
+const projectAccessKey = process.env.REACT_APP_PROJECTACCESSKEY!;
+const waasConfigKey = process.env.REACT_APP_WAASCONFIGKEY!;
+const googleClientId = process.env.REACT_APP_GOOGLECLIENTID!;
+const appleClientId = process.env.REACT_APP_APPLECLIENTID!;
+const walletConnectProjectId = process.env.REACT_APP_WALLETCONNECTID!;
+const appleRedirectURI = "https://" + window.location.host; // note: update slug to include correct homepage
+ 
+const connectors = [
+  ...getDefaultWaasConnectors({
+    // updated connector type
+    walletConnectProjectId: walletConnectProjectId,
+    defaultChainId: 421614,
+    waasConfigKey,
+    googleClientId,
+    appleClientId,
+    appleRedirectURI,
+    appName: "demo app",
+    projectAccessKey,
+    enableConfirmationModal: false,
+  }),
+  ...getKitConnectWallets(projectAccessKey, []),
+];
+ 
+const transports: any = {};
+ 
+chains.forEach((chain) => {
+  transports[chain.id] = http();
+});
+ 
+const config = createConfig({
+  transports,
+  connectors,
+  chains,
+});
+ 
+export { config };
+

Th last step, is to make sure to update our team with the Google and Apple authorized URLs (e.g. http://localhost:3000) to call the Embeded Wallet login flow from

diff --git a/guides/unity-guide/index.html b/guides/unity-guide/index.html index 3346b8f03c..1b514b63ab 100644 --- a/guides/unity-guide/index.html +++ b/guides/unity-guide/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
Skip to content

Integrate SequenceKit with WaaS

diff --git a/guides/webgl-guide/index.html b/guides/webgl-guide/index.html index d01ffd233c..1291915048 100644 --- a/guides/webgl-guide/index.html +++ b/guides/webgl-guide/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
Skip to content

Integrate SequenceKit with WaaS

diff --git a/index.html b/index.html index eb34f3f03c..a4a0ca8d87 100644 --- a/index.html +++ b/index.html @@ -7,23 +7,26 @@ Sequence - Web3 Gaming Platform - + - - + +
Skip to content
Sequence - Web3 Gaming Platform

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.

Solutions

Follow our solution guides to boost your game's acquisition, -monetization and retention with the power of web3.

Acquire Players

  • Universal Wallet

    Easily onboard web3-native players with a complete Universal Wallet.

  • In-Game Wallet

    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.

  • Collectibles

    Deploy and manage contracts, collections, and tokens with our no-code Builder.

  • Airdropper

    Create airdrop campaigns and engage specific players with rewards.

Earn More Revenue

  • White-label Marketplace

    Launch an in-game collectibles marketplace within minutes.

  • Orderbook API

    Integrate custom in-game marketplaces with our APIs.

  • NFT Checkout

    Offer easy purchases with credit card, crypto, IAP support.

  • Onramps

    Allow players to convert from fiat to any crypto globally.

Retain and Grow

  • Minter

    Securely mint achievement tokens tied to your game.

  • Analytics

    Track every aspect of web3 activity within your games.

  • Discord Bot

    Integrate wallets and increase community engagement.

-

Guides

Follow our step-by-step guides and open source code templates to accelerate your time to market.

Build a web3 game with WebGL

Follow a step by step guide to build a web-based game demo that leverages Sequence Embedded Wallet with custom in-game achievement tokens.

Build a web3 game with Unity

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.

Create web3 lootboxes

With this tutorial, build a web-based maze where lootbox items are generated using AI and dynamically minted into the player's universal wallet.

Orderbook Marketplace

Build an API-driven marketplace where players can mint, then sell or buy items using a custom web-based interface leveraging Sequence Orderbook APIs.

-

SDKs

Leverage our open source SDKs to easily integrate from any popular game development framework or language.

  • Unity

    Integrate Sequence with our native Unity library.

  • Typescript

    Integrate Sequence APIs with our TypeScript SDK.

  • Go

    Leverage Sequence APIs easily from your Go backend.

-

APIs

Use our modular APIs for more advanced integrations and for accessing on-chain data through easy to use interfaces.

  • Marketplace API

    Integrate sell and buy operations through our orderbook interface.

  • Transactions API

    Send and optimize transactions on any chain through our performant Sequence Relayer.

  • Metadata API

    Fetch token details on any collection and collectible.

  • Node Gateway

    Leverage Sequence's auto-scaling node service.

-

Support

Whatever stage of development your game is at, the Sequence team is here to help out. Reach out to talk to our support team.

  • Chat Support

    Chat with our support team on specific questions.

  • Community

    Join our Discord community to learn from others building on Sequence.

  • Contact our Team

    Reach out to our integration team to discuss how you can partner with Sequence.

+monetization and retention with the power of web3.

Acquire Players

  • Universal Wallet

    Easily onboard web3-native players with a complete Universal +Wallet.

  • In-Game Wallet

    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.

  • Collectibles

    Deploy and manage contracts, collections, and tokens with our +no-code Builder.

Earn More Revenue

  • White-label Marketplace

    Launch an in-game collectibles marketplace within minutes.

  • Orderbook API

    Integrate custom in-game marketplaces with our APIs.

  • NFT Checkout

    Offer easy purchases with credit card, crypto, IAP support.

  • Onramps

    Allow players to convert from fiat to any crypto globally.

Retain and Grow

  • Minter

    Securely mint achievement tokens tied to your game.

  • Analytics

    Track every aspect of web3 activity within your games.

+

Guides

Follow our step-by-step guides and open source code templates to accelerate your time to market.

Build a web3 game with WebGL

Follow a step by step guide to build a web-based game demo that leverages Sequence Embedded Wallet with custom in-game achievement tokens.

Build a web3 game with Unity

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.

Create web3 lootboxes

With this tutorial, build a web-based maze where lootbox items are generated using AI and dynamically minted into the player's universal wallet.

Orderbook Marketplace

Build an API-driven marketplace where players can mint, then sell or buy items using a custom web-based interface leveraging Sequence Orderbook APIs.

+

SDKs

Leverage our open source SDKs to easily integrate from any popular game development framework or language.

  • Unity

    Integrate Sequence with our native Unity library.

  • Typescript

    Integrate Sequence APIs with our TypeScript SDK.

  • Go

    Leverage Sequence APIs easily from your Go backend.

+

APIs

Use our modular APIs for more advanced integrations and for accessing on-chain data through easy to use interfaces.

  • Marketplace API

    Integrate sell and buy operations through our orderbook interface.

  • Transactions API

    Send and optimize transactions on any chain through our performant Sequence Relayer.

  • Indexer API

    Query wallets and contracts on Ethereum-compatible chains.

  • Metadata API

    Fetch token details on any collection and collectible.

  • Node Gateway

    Leverage Sequence's auto-scaling node service.

+

Support

Whatever stage of development your game is at, the Sequence team is here to help out. Reach out to talk to our support team.

  • Chat Support

    Chat with our support team on specific questions.

  • Community

    Join our Discord community to learn from others building on Sequence.

  • Contact our Team

    Reach out to our integration team to discuss how you can partner with Sequence.

diff --git a/sdk/android/index.html b/sdk/android/index.html index c5fe0f92c8..aee89ab48b 100644 --- a/sdk/android/index.html +++ b/sdk/android/index.html @@ -7,15 +7,15 @@ Sequence - + - - + + -
Skip to content
+
Skip to content
diff --git a/sdk/go/overview/index.html b/sdk/go/overview/index.html index bccac2ef7d..ae8b6b4000 100644 --- a/sdk/go/overview/index.html +++ b/sdk/go/overview/index.html @@ -7,16 +7,16 @@ Sequence - + - - + + -
Skip to content

Go

+
Skip to content

Go

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

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

diff --git a/sdk/iOS/index.html b/sdk/iOS/index.html index 301b6744f7..af6a93c178 100644 --- a/sdk/iOS/index.html +++ b/sdk/iOS/index.html @@ -7,15 +7,15 @@ Sequence - + - - + + -
Skip to content
+
Skip to content
diff --git a/sdk/index.html b/sdk/index.html index f2d09c162d..8cb6d3207e 100644 --- a/sdk/index.html +++ b/sdk/index.html @@ -7,15 +7,15 @@ Sequence - + - - + + -
Skip to content

Overview

+
Skip to content

Overview

diff --git a/sdk/nodejs/index.html b/sdk/nodejs/index.html index b410f61945..c7b05cc4df 100644 --- a/sdk/nodejs/index.html +++ b/sdk/nodejs/index.html @@ -7,15 +7,15 @@ Sequence - + - - + + -
Skip to content
+
Skip to content
diff --git a/sdk/reactnative/index.html b/sdk/reactnative/index.html index 3c29e1c4f4..f341de653b 100644 --- a/sdk/reactnative/index.html +++ b/sdk/reactnative/index.html @@ -7,15 +7,15 @@ Sequence - + - - + + -
Skip to content
+
Skip to content
diff --git a/sdk/sequence-kit/01-overview/index.html b/sdk/sequence-kit/01-overview/index.html index 143e348f56..5b9e8f5b5e 100644 --- a/sdk/sequence-kit/01-overview/index.html +++ b/sdk/sequence-kit/01-overview/index.html @@ -7,16 +7,16 @@ SequenceKit SDK - + - - + + -
Skip to content

SequenceKit SDK

+
Skip to content

SequenceKit SDK

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.

Key Features

    diff --git a/sdk/sequence-kit/02-getting-started/index.html b/sdk/sequence-kit/02-getting-started/index.html index 38bfccd8d9..9cd1d0d2b6 100644 --- a/sdk/sequence-kit/02-getting-started/index.html +++ b/sdk/sequence-kit/02-getting-started/index.html @@ -7,16 +7,16 @@ Getting Started with Sequence Kit - + - - + + -
    Skip to content

    Getting Started with Sequence Kit

    +
    Skip to content

    Getting Started with Sequence Kit

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

    Installing Sequence Kit Packages

    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.

    diff --git a/sdk/sequence-kit/03-configuration/index.html b/sdk/sequence-kit/03-configuration/index.html index 1a20f32168..153fb8b686 100644 --- a/sdk/sequence-kit/03-configuration/index.html +++ b/sdk/sequence-kit/03-configuration/index.html @@ -7,16 +7,16 @@ Configuration Options – Sequence - + - - + + -
    Skip to content

    Configuration Options

    +
    Skip to content

    Configuration Options

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

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

     
    diff --git a/sdk/sequence-kit/04-checkout/index.html b/sdk/sequence-kit/04-checkout/index.html
    index cfba41b085..1e716d2d19 100644
    --- a/sdk/sequence-kit/04-checkout/index.html
    +++ b/sdk/sequence-kit/04-checkout/index.html
    @@ -7,16 +7,16 @@
         
         Overview – Sequence
         
    -    
    +    
         
         
         
       
    -    
    -    
    +    
    +    
       
       
    -    
    Skip to content

    Overview

    +
    Skip to content

    Overview

    The checkout modal enables developers to easily facilitate cryptocurrency payments.

    Integration

    diff --git a/sdk/sequence-kit/05-custom-connectors/index.html b/sdk/sequence-kit/05-custom-connectors/index.html index 09983840e5..e8406b4544 100644 --- a/sdk/sequence-kit/05-custom-connectors/index.html +++ b/sdk/sequence-kit/05-custom-connectors/index.html @@ -7,16 +7,16 @@ Custom Connectors in Sequence Kit - + - - + + -
    Skip to content

    Custom Connectors in Sequence Kit

    +
    Skip to content

    Custom Connectors in Sequence Kit

    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.

    Creating a Custom Connector

    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:

    diff --git a/sdk/sequence-kit/index.html b/sdk/sequence-kit/index.html index a9edf8d9e5..fe2333eedd 100644 --- a/sdk/sequence-kit/index.html +++ b/sdk/sequence-kit/index.html @@ -7,15 +7,15 @@ Sequence - + - - + + -
    Skip to content
    +
    Skip to content
    diff --git a/sdk/typescript/01-overview/index.html b/sdk/typescript/01-overview/index.html index 02ab48a97a..cdb6af32e3 100644 --- a/sdk/typescript/01-overview/index.html +++ b/sdk/typescript/01-overview/index.html @@ -7,16 +7,16 @@ Wallet – Sequence - + - - + + -
    Skip to content

    Wallet

    +
    Skip to content

    Wallet

    Sequence Wallet gives you a friendly, non-custodial wallet for your users with multi-chain support and seamless integration.

    Most wallets for Ethereum have a single private key that has full control over a wallet, i.e. an Externally Owned Account (EOAs). diff --git a/sdk/typescript/02-quickstart/index.html b/sdk/typescript/02-quickstart/index.html index 2ea3350bc2..f61d63b201 100644 --- a/sdk/typescript/02-quickstart/index.html +++ b/sdk/typescript/02-quickstart/index.html @@ -7,16 +7,16 @@ Quickstart – Sequence - + - - + + -

    Skip to content

    Quickstart

    +
    Skip to content

    Quickstart

    Try a Demo

    Template

    diff --git a/sdk/typescript/03-guides/01-connect-wallet/index.html b/sdk/typescript/03-guides/01-connect-wallet/index.html index bcf7a5ec8e..1a294fd08c 100644 --- a/sdk/typescript/03-guides/01-connect-wallet/index.html +++ b/sdk/typescript/03-guides/01-connect-wallet/index.html @@ -7,16 +7,16 @@ Connect Wallet – Sequence - + - - + + -
    Skip to content

    Connect Wallet

    +
    Skip to content

    Connect Wallet

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

    1. diff --git a/sdk/typescript/03-guides/02-auth-address/index.html b/sdk/typescript/03-guides/02-auth-address/index.html index 79c7941f2d..2987ac4f60 100644 --- a/sdk/typescript/03-guides/02-auth-address/index.html +++ b/sdk/typescript/03-guides/02-auth-address/index.html @@ -7,16 +7,16 @@ Authenticate Users with Message Signature – Sequence - + - - + + -
      Skip to content

      Authenticate Users with Message Signature

      +
      Skip to content

      Authenticate Users with Message Signature

      Ask for the wallet address

      To get the user's Sequence wallet address:

      const wallet = sequence.getWallet()
      diff --git a/sdk/typescript/03-guides/03-sign-message/index.html b/sdk/typescript/03-guides/03-sign-message/index.html
      index a817caa273..f3ead82eca 100644
      --- a/sdk/typescript/03-guides/03-sign-message/index.html
      +++ b/sdk/typescript/03-guides/03-sign-message/index.html
      @@ -7,15 +7,15 @@
           
           TODO - Replace with Code Groups from Vocs – Sequence
           
      -    
      +    
           
           
           
         
      -    
      -    
      +    
      +    
         
         
      -    
      Skip to content

      TODO - Replace with Code Groups from Vocs

      +
      Skip to content

      TODO - Replace with Code Groups from Vocs

      diff --git a/sdk/typescript/03-guides/04-session-keys/index.html b/sdk/typescript/03-guides/04-session-keys/index.html index cb61989704..631d3875c2 100644 --- a/sdk/typescript/03-guides/04-session-keys/index.html +++ b/sdk/typescript/03-guides/04-session-keys/index.html @@ -7,16 +7,16 @@ No-Wallet-Confirmation Signatures – Sequence - + - - + + -
      Skip to content

      No-Wallet-Confirmation Signatures

      +
      Skip to content

      No-Wallet-Confirmation Signatures

      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.

      Session Keys

      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/sdk/typescript/03-guides/05-send-transaction/index.html b/sdk/typescript/03-guides/05-send-transaction/index.html index 0aaebb2010..c637b67540 100644 --- a/sdk/typescript/03-guides/05-send-transaction/index.html +++ b/sdk/typescript/03-guides/05-send-transaction/index.html @@ -7,16 +7,16 @@ Sending Transactions – Sequence - + - - + + -
      Skip to content

      Sending Transactions

      +
      Skip to content

      Sending Transactions

      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 signTransactions to sendTransaction):

      const transaction = {
      diff --git a/sdk/typescript/03-guides/06-send-erc20/index.html b/sdk/typescript/03-guides/06-send-erc20/index.html
      index 28dfe84f7f..eb63830f53 100644
      --- a/sdk/typescript/03-guides/06-send-erc20/index.html
      +++ b/sdk/typescript/03-guides/06-send-erc20/index.html
      @@ -7,16 +7,16 @@
           
           Sending ERC-20 Tokens – Sequence
           
      -    
      +    
           
           
           
         
      -    
      -    
      +    
      +    
         
         
      -    
      Skip to content

      Sending ERC-20 Tokens

      +
      Skip to content

      Sending ERC-20 Tokens

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

      const erc20Interface = new ethers.utils.Interface([
         'function transfer(address _to, uint256 _value)'
      diff --git a/sdk/typescript/03-guides/07-send-erc721/index.html b/sdk/typescript/03-guides/07-send-erc721/index.html
      index 68ab6fec83..a1b560979f 100644
      --- a/sdk/typescript/03-guides/07-send-erc721/index.html
      +++ b/sdk/typescript/03-guides/07-send-erc721/index.html
      @@ -7,16 +7,16 @@
           
           Sending ERC-721 (NFT) Tokens – Sequence
           
      -    
      +    
           
           
           
         
      -    
      -    
      +    
      +    
         
         
      -    
      Skip to content

      Sending ERC-721 (NFT) Tokens

      +
      Skip to content

      Sending ERC-721 (NFT) Tokens

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

      const erc721Interface = new ethers.utils.Interface([
      diff --git a/sdk/typescript/03-guides/08-send-erc1155/index.html b/sdk/typescript/03-guides/08-send-erc1155/index.html
      index 4d26625924..ff991eb6f6 100644
      --- a/sdk/typescript/03-guides/08-send-erc1155/index.html
      +++ b/sdk/typescript/03-guides/08-send-erc1155/index.html
      @@ -7,16 +7,16 @@
           
           Sending ERC-1155 (Collectible) Tokens – Sequence
           
      -    
      +    
           
           
           
         
      -    
      -    
      +    
      +    
         
         
      -    
      Skip to content

      Sending ERC-1155 (Collectible) Tokens

      +
      Skip to content

      Sending ERC-1155 (Collectible) Tokens

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

      const erc1155Interface = new ethers.utils.Interface([
      diff --git a/sdk/typescript/03-guides/09-send-batch-transactions/index.html b/sdk/typescript/03-guides/09-send-batch-transactions/index.html
      index ab838b7be0..330473dd74 100644
      --- a/sdk/typescript/03-guides/09-send-batch-transactions/index.html
      +++ b/sdk/typescript/03-guides/09-send-batch-transactions/index.html
      @@ -7,16 +7,16 @@
           
           Sending a Batch of Transactions – Sequence
           
      -    
      +    
           
           
           
         
      -    
      -    
      +    
      +    
         
         
      -    
      Skip to content

      Sending a Batch of Transactions

      +
      Skip to content

      Sending a Batch of Transactions

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

      const transaction1 = {
         to: recipient1Address,
      diff --git a/sdk/typescript/03-guides/10-building-backends/index.html b/sdk/typescript/03-guides/10-building-backends/index.html
      index 17f5f1d874..09f9f883d6 100644
      --- a/sdk/typescript/03-guides/10-building-backends/index.html
      +++ b/sdk/typescript/03-guides/10-building-backends/index.html
      @@ -7,16 +7,16 @@
           
           Building Backends with Sequence
           
      -    
      +    
           
           
           
         
      -    
      -    
      +    
      +    
         
         
      -    
      Skip to content

      Building Backends with Sequence

      +
      Skip to content

      Building Backends with Sequence

      nodejs

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

      diff --git a/sdk/typescript/04-platforms/index.html b/sdk/typescript/04-platforms/index.html index fc5f750862..5812a12deb 100644 --- a/sdk/typescript/04-platforms/index.html +++ b/sdk/typescript/04-platforms/index.html @@ -7,16 +7,16 @@ Platforms – Sequence - + - - + + -
      Skip to content

      Platforms

      +
      Skip to content

      Platforms

      Web Wallet

      Sequence works beautifully on all modern Web Browsers! Try it at https://sequence.app from any computer, phone or tablet.

      See Build With Sequence to get started.

      diff --git a/sdk/typescript/05-fiat-on-ramps/index.html b/sdk/typescript/05-fiat-on-ramps/index.html index 2aac2aa611..cc52ab52fd 100644 --- a/sdk/typescript/05-fiat-on-ramps/index.html +++ b/sdk/typescript/05-fiat-on-ramps/index.html @@ -7,16 +7,16 @@ Fiat On-Ramps – Sequence - + - - + + -
      Skip to content

      Fiat On-Ramps

      +
      Skip to content

      Fiat On-Ramps

      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;

      • Moonpay
      • diff --git a/sdk/typescript/06-key-management/index.html b/sdk/typescript/06-key-management/index.html index 07f67bed32..1e1c292e5c 100644 --- a/sdk/typescript/06-key-management/index.html +++ b/sdk/typescript/06-key-management/index.html @@ -7,16 +7,16 @@ Key Management – Sequence - + - - + + -
        Skip to content

        Key Management

        +
        Skip to content

        Key Management

        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.

        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.

        Social Login Wallets

        diff --git a/sdk/typescript/connectors/01-overview/index.html b/sdk/typescript/connectors/01-overview/index.html index 15741f0cde..f4684394c0 100644 --- a/sdk/typescript/connectors/01-overview/index.html +++ b/sdk/typescript/connectors/01-overview/index.html @@ -7,16 +7,16 @@ Wallet Connectors – Sequence - + - - + + -
        Skip to content

        Wallet Connectors

        +
        Skip to content

        Wallet Connectors

        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.

        Our SDKs offer all the functionality you'd need to build a web3 dapp, but you can also diff --git a/sdk/typescript/connectors/02-sequence-kit/index.html b/sdk/typescript/connectors/02-sequence-kit/index.html index 9a8307aef2..1328dc7dde 100644 --- a/sdk/typescript/connectors/02-sequence-kit/index.html +++ b/sdk/typescript/connectors/02-sequence-kit/index.html @@ -7,16 +7,16 @@ Sequence Kit Documentation - + - - + + -

        Skip to content

        Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications

        +
        Skip to content

        Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications

        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.

        Key Features

          diff --git a/sdk/typescript/connectors/03-wagmi/index.html b/sdk/typescript/connectors/03-wagmi/index.html index 3492d4d2c0..d3c08b0220 100644 --- a/sdk/typescript/connectors/03-wagmi/index.html +++ b/sdk/typescript/connectors/03-wagmi/index.html @@ -7,16 +7,16 @@ Using Wagmi – Sequence - + - - + + -
          Skip to content

          Using Wagmi

          +
          Skip to content

          Using Wagmi

          The Sequence wallet used with Wagmi through the connector.

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

          diff --git a/sdk/typescript/connectors/04-rainbow-kit/index.html b/sdk/typescript/connectors/04-rainbow-kit/index.html index acb95faa2d..b3528c991a 100644 --- a/sdk/typescript/connectors/04-rainbow-kit/index.html +++ b/sdk/typescript/connectors/04-rainbow-kit/index.html @@ -7,16 +7,16 @@ Using RainbowKit – Sequence - + - - + + -
          Skip to content

          Using RainbowKit

          +
          Skip to content

          Using RainbowKit

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

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

          diff --git a/sdk/typescript/connectors/05-web3-onboard/index.html b/sdk/typescript/connectors/05-web3-onboard/index.html index 7a45c14f1c..3dc4087ec0 100644 --- a/sdk/typescript/connectors/05-web3-onboard/index.html +++ b/sdk/typescript/connectors/05-web3-onboard/index.html @@ -7,16 +7,16 @@ Using Web3-Onboard – Sequence - + - - + + -
          Skip to content

          Using Web3-Onboard

          +
          Skip to content

          Using Web3-Onboard

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

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

          diff --git a/sdk/typescript/connectors/06-web3-react-v6/index.html b/sdk/typescript/connectors/06-web3-react-v6/index.html index 9a1f5acf59..cbd7a7b33f 100644 --- a/sdk/typescript/connectors/06-web3-react-v6/index.html +++ b/sdk/typescript/connectors/06-web3-react-v6/index.html @@ -7,16 +7,16 @@ Using Web3-React V6 – Sequence - + - - + + -
          Skip to content

          Using Web3-React V6

          +
          Skip to content

          Using Web3-React V6

          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.

          Installation

          The connector may be installed via the npm package:

          diff --git a/sdk/typescript/connectors/07-web3modal/index.html b/sdk/typescript/connectors/07-web3modal/index.html index 3f2706a959..dd3abc98a7 100644 --- a/sdk/typescript/connectors/07-web3modal/index.html +++ b/sdk/typescript/connectors/07-web3modal/index.html @@ -7,16 +7,16 @@ Using Web3Modal – Sequence - + - - + + -
          Skip to content

          Using Web3Modal

          +
          Skip to content

          Using Web3Modal

          The Sequence wallet can easily be used with Web3Modal.

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

          diff --git a/sdk/typescript/connectors/08-FAQ/index.html b/sdk/typescript/connectors/08-FAQ/index.html index 3ba8892226..036c733870 100644 --- a/sdk/typescript/connectors/08-FAQ/index.html +++ b/sdk/typescript/connectors/08-FAQ/index.html @@ -7,16 +7,16 @@ Sequence - + - - + + -
          Skip to content

          Below are frequently asked questions related to the integration of the Sequence wallet connector.

          +
          Skip to content

          Below are frequently asked questions related to the integration of the Sequence wallet connector.

          NextJs

          Why does my wallet integration produce an error when used with next.js?

          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/sdk/typescript/index.html b/sdk/typescript/index.html index e262bc5be3..a6dc0e05cd 100644 --- a/sdk/typescript/index.html +++ b/sdk/typescript/index.html @@ -7,15 +7,15 @@ Sequence - + - - + + -
          Skip to content
          +
          Skip to content
          diff --git a/sdk/unity/01-overview/index.html b/sdk/unity/01-overview/index.html index 5a095cde12..e79a26e4e2 100644 --- a/sdk/unity/01-overview/index.html +++ b/sdk/unity/01-overview/index.html @@ -7,16 +7,16 @@ Introduction – Sequence - + - - + + -
          Skip to content

          Introduction

          +
          Skip to content

          Introduction

          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!

          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.

          Requirements

          diff --git a/sdk/unity/02-installation/index.html b/sdk/unity/02-installation/index.html index f2fc11cfe0..944267e429 100644 --- a/sdk/unity/02-installation/index.html +++ b/sdk/unity/02-installation/index.html @@ -7,16 +7,16 @@ Installation – Sequence - + - - + + -
          Skip to content

          Installation

          +
          Skip to content

          Installation

          Package Manager - Recommended

          1. Ensure you have Git 2.14.0 or above installed on your machine
          2. diff --git a/sdk/unity/03-setup/index.html b/sdk/unity/03-setup/index.html index 0da0dbccf6..d241d150ec 100644 --- a/sdk/unity/03-setup/index.html +++ b/sdk/unity/03-setup/index.html @@ -7,16 +7,16 @@ Setup – Sequence - + - - + + -
            Skip to content

            Setup

            +
            Skip to content

            Setup

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

              diff --git a/sdk/unity/04-authentication/index.html b/sdk/unity/04-authentication/index.html index b11e80c196..fe72354e50 100644 --- a/sdk/unity/04-authentication/index.html +++ b/sdk/unity/04-authentication/index.html @@ -7,16 +7,16 @@ Authentication – Sequence - + - - + + -
              Skip to content

              Authentication

              +
              Skip to content

              Authentication

              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.

              To implement authentication, we recommend using our LoginPanel prefab. Locate this prefab under SequenceExamples > Prefabs and drag it under a Canvas in your scene. We 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.

              diff --git a/sdk/unity/05-write-to-blockchain/index.html b/sdk/unity/05-write-to-blockchain/index.html index cb24899e24..f3498994e4 100644 --- a/sdk/unity/05-write-to-blockchain/index.html +++ b/sdk/unity/05-write-to-blockchain/index.html @@ -7,16 +7,16 @@ Write to Blockchain – Sequence - + - - + + -
              Skip to content

              Write to Blockchain

              +
              Skip to content

              Write to Blockchain

              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.

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

              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:

              diff --git a/sdk/unity/06-read-from-blockchain/index.html b/sdk/unity/06-read-from-blockchain/index.html index ff2843221f..216fa3f4e7 100644 --- a/sdk/unity/06-read-from-blockchain/index.html +++ b/sdk/unity/06-read-from-blockchain/index.html @@ -7,16 +7,16 @@ Read from Blockchain – Sequence - + - - + + -
              Skip to content

              #TODO Add code tabs

              +
              Skip to content

              #TODO Add code tabs

              Read from Blockchain

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

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

              diff --git a/sdk/unity/07-sign-messages/index.html b/sdk/unity/07-sign-messages/index.html index 46c6039323..dd8c07f4c2 100644 --- a/sdk/unity/07-sign-messages/index.html +++ b/sdk/unity/07-sign-messages/index.html @@ -7,16 +7,16 @@ Sign Messages – Sequence - + - - + + -
              Skip to content

              Sign Messages

              +
              Skip to content

              Sign Messages

              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:

              public void OnSignMessageCompleteHandler(string signature) {
                   // Do something
              diff --git a/sdk/unity/08-deploy-contracts/index.html b/sdk/unity/08-deploy-contracts/index.html
              index eed07f7663..30c2656a23 100644
              --- a/sdk/unity/08-deploy-contracts/index.html
              +++ b/sdk/unity/08-deploy-contracts/index.html
              @@ -7,16 +7,16 @@
                   
                   Contract Deployment – Sequence
                   
              -    
              +    
                   
                   
                   
                 
              -    
              -    
              +    
              +    
                 
                 
              -    
              Skip to content

              Contract Deployment

              +
              Skip to content

              Contract Deployment

              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.

              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).

              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.

              diff --git a/sdk/unity/09-wallet-ui/index.html b/sdk/unity/09-wallet-ui/index.html index 7dfe0c51c6..523452229c 100644 --- a/sdk/unity/09-wallet-ui/index.html +++ b/sdk/unity/09-wallet-ui/index.html @@ -7,16 +7,16 @@ Wallet UI – Sequence - + - - + + -
              Skip to content

              Wallet UI

              +
              Skip to content

              Wallet UI

              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.

              This UI can be found under SequenceExamples.

              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.

              diff --git a/sdk/unity/Advanced/01-introduction/index.html b/sdk/unity/Advanced/01-introduction/index.html index 62914849a6..069a92cc57 100644 --- a/sdk/unity/Advanced/01-introduction/index.html +++ b/sdk/unity/Advanced/01-introduction/index.html @@ -7,16 +7,16 @@ Advanced - Introduction – Sequence - + - - + + -
              Skip to content

              Advanced - Introduction

              +
              Skip to content

              Advanced - Introduction

              For advanced users with experience developing applications on EVM-based blockchains, we've provided our own lightweight, custom-made for Unity, Ethereum library: 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 Nethereum library provides.

              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. diff --git a/sdk/unity/Advanced/02-wallets/index.html b/sdk/unity/Advanced/02-wallets/index.html index c1205cba14..6ab028a440 100644 --- a/sdk/unity/Advanced/02-wallets/index.html +++ b/sdk/unity/Advanced/02-wallets/index.html @@ -7,16 +7,16 @@ Wallets – Sequence - + - - + + -

              Skip to content

              Wallets

              +
              Skip to content

              Wallets

              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.

              1. EthWallet

              EthWallet is a standard EOA wallet for EVM chains.

              diff --git a/sdk/unity/Advanced/03-clients/index.html b/sdk/unity/Advanced/03-clients/index.html index 75ae63c340..ea4ce1bd01 100644 --- a/sdk/unity/Advanced/03-clients/index.html +++ b/sdk/unity/Advanced/03-clients/index.html @@ -7,16 +7,16 @@ Clients – Sequence - + - - + + -
              Skip to content

              Clients

              +
              Skip to content

              Clients

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

              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.

              You can create a client using this snippet:

              diff --git a/sdk/unity/Advanced/04-transfers/index.html b/sdk/unity/Advanced/04-transfers/index.html index 7665b4b71a..282fc50a37 100644 --- a/sdk/unity/Advanced/04-transfers/index.html +++ b/sdk/unity/Advanced/04-transfers/index.html @@ -7,16 +7,16 @@ Transfers – Sequence - + - - + + -
              Skip to content

              Transfers

              +
              Skip to content

              Transfers

              In order to transfer ETH (or the gas currency for your network), it is recommended to use TranferEth.CreateTransaction

              EthTransaction transferTransaction = await TransferEth.CreateTransaction(client, wallet, recipientAddress, DecimalNormalizer.Normalize(1));
               TransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transferTransaction);
              diff --git a/sdk/unity/Advanced/05-contracts/index.html b/sdk/unity/Advanced/05-contracts/index.html index a76f66434e..72ce15e3d4 100644 --- a/sdk/unity/Advanced/05-contracts/index.html +++ b/sdk/unity/Advanced/05-contracts/index.html @@ -7,16 +7,16 @@ Contracts – Sequence - + - - + + -
              Skip to content

              Contracts

              +
              Skip to content

              Contracts

              Creating a Contract object for an already deployed contract is rather straightforward.

              Contract contract = new Contract(contractAddress, abi);

              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. diff --git a/sdk/unity/Advanced/06-tokens/index.html b/sdk/unity/Advanced/06-tokens/index.html index ec0f2b914b..85be7930f8 100644 --- a/sdk/unity/Advanced/06-tokens/index.html +++ b/sdk/unity/Advanced/06-tokens/index.html @@ -7,16 +7,16 @@ Tokens – Sequence - + - - + + -

              Skip to content

              Tokens

              +
              Skip to content

              Tokens

              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.

              Any of these contract wrappers can be created via a standard constructor requiring only the contract address. For example:

              ERC20 erc20 = new ERC20(contractAddress);
              diff --git a/sdk/unity/index.html b/sdk/unity/index.html index f3679cbdfe..508779dc89 100644 --- a/sdk/unity/index.html +++ b/sdk/unity/index.html @@ -7,15 +7,15 @@ Sequence - + - - + + -
              Skip to content
              +
              Skip to content
              diff --git a/sdk/unreal/01-overview/index.html b/sdk/unreal/01-overview/index.html new file mode 100644 index 0000000000..6d74ba8d25 --- /dev/null +++ b/sdk/unreal/01-overview/index.html @@ -0,0 +1,32 @@ + + + + + + + + Introduction – Sequence + + + + + + + + + + +
              Skip to content

              Introduction

              +

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

              +

              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.

              +

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

              +

              Requirements

              +
                +
              • Unreal 5.2 or later
              • +
              • Android
              • +
              • iOS
              • +
              • PC standalone
              • +
              • Mac standalone
              • +
              + + diff --git a/sdk/unreal/02-installation/index.html b/sdk/unreal/02-installation/index.html new file mode 100644 index 0000000000..b265993d9a --- /dev/null +++ b/sdk/unreal/02-installation/index.html @@ -0,0 +1,30 @@ + + + + + + + + Installation – Sequence + + + + + + + + + + +
              Skip to content

              Installation

              +

              Credentials

              +

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

              +
                +
              • WaaSTenantKey: This key will be given to you by the Sequence team during WaaS onboarding
              • +
              • ProjectAccessKey: This key can be found in Sequence Builder under Settings > API Access Keys
              • +
              +

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

              +

              Security

              +

              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.

              + + diff --git a/sdk/unreal/03-setup/index.html b/sdk/unreal/03-setup/index.html new file mode 100644 index 0000000000..da2dbffe41 --- /dev/null +++ b/sdk/unreal/03-setup/index.html @@ -0,0 +1,40 @@ + + + + + + + + Setup – Sequence + + + + + + + + + + +
              Skip to content

              Setup

              +
                +
              1. +

                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.

                +
              2. +
              3. +

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

                +
              4. +
              5. +

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

                +
              6. +
              7. +

                If you wish to use the in built sequence UI for login +a) Create an [Actor] you wish to be responsible for the SequenceUI then attach the [Sequence_Pawn_Component_BP] to it +b) 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]

                +
              8. +
              9. +

                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.

                +
              10. +
              + + diff --git a/sdk/unreal/04-authentication/index.html b/sdk/unreal/04-authentication/index.html new file mode 100644 index 0000000000..c3d3084402 --- /dev/null +++ b/sdk/unreal/04-authentication/index.html @@ -0,0 +1,85 @@ + + + + + + + + Authentication – Sequence + + + + + + + + + + +
              Skip to content

              Authentication

              +

              Custom UI Integration

              +

              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

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

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

              +

              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:

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

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

              +
              FScriptDelegate del;
              +del.BindUFunction(this, "CallShowAuthSuccessScreen");
              +this->authenticator->AuthSuccess.Add(del);
              +

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

              +
              UFUNCTION()
              +void CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn);
              +

              And in SequenceBackendManager.cpp like so:

              +
              void ASequenceBackendManager::CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn) 
              +{
              +this->Credentials = CredentialsIn;
              +if (this->ShowAuthSuccessDelegate.IsBound())
              +  this->ShowAuthSuccessDelegate.Broadcast(Credentials);
              +else
              +  UE_LOG(LogTemp, Error, TEXT("`[Nothing bound to: ShowAuthSuccessDelegate]`"));
              +}
              +

              Email based Authentication

              +
                +
              1. +

                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.

                +
              2. +
              3. +

                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)].

                +
              4. +
              5. +

                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.

                +
              6. +
              +

              Social Signin based Authentication on Desktop

              +
                +
              1. +

                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.

                +
              2. +
              3. +

                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.

                +
              4. +
              +

              Social Signin based Authentication on Mobile

              +

              WIP

              + + diff --git a/sdk/unreal/05-api-integration/index.html b/sdk/unreal/05-api-integration/index.html new file mode 100644 index 0000000000..5d8cde4eb7 --- /dev/null +++ b/sdk/unreal/05-api-integration/index.html @@ -0,0 +1,69 @@ + + + + + + + + API Integration – Sequence + + + + + + + + + + +
              Skip to content

              API Integration

              +

              Sequence API

              +

              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:

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

              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.

              +

              `*

              +

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

              +

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

              +

              Show GUI Shows the UI

              +

              Hide GUI Hides the UI

              +

              GUI Visible Simple Visibility test for the UI

              +

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

              +

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

              +

              Modes:

              +
                +
              • Desktop (default)
              • +
              • Mobile Portrait (Custom built for portrait mode reducing the X width where ever possible)
              • +
              • Mobile Landscape
              • +
              +

              `*

              +

              Sequence Unreal API

              +

              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

              +

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

              +
                +
              1. On Successful Auth
              2. +
              3. On Successful Registering of a session
              4. +
              5. On Successful Closing of a session
              6. +
              +

              USequenceWallet

              +

              To get a USequenceWallet call either:

              +
              USequenceWallet::Make(FCredentials_BE CredentialsIn)
              +USequenceWallet::Make(FCredentials_BE CredentialsIn, FString ProviderURL)
              +

              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.

              +

              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.

              +

              Sequence API Methods

              +

              We make use of TFunctions with some callbacks:

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

              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]

              + + diff --git a/sdk/unreal/06-packaging/index.html b/sdk/unreal/06-packaging/index.html new file mode 100644 index 0000000000..04cf643f7a --- /dev/null +++ b/sdk/unreal/06-packaging/index.html @@ -0,0 +1,52 @@ + + + + + + + + Packaging – Sequence + + + + + + + + + + +
              Skip to content

              Packaging

              +

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

              + +

              Google SSO Setup

              +

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

              +

              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.

              +

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

              +

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

              +

              iOS

              +

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

              +

              Unreal and Xcode Specifics

              +

              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

              +
                +
              1. After packaging the project in Unreal, open the Xcode project (Sequence-unreal folder -> Intermediate -> ProjectFilesIOS -> SequenceUnreal.xcodeproj)
              2. +
              3. Click on the project name on the left hand side to open up project settings
              4. +
              5. Click the Build Phase Tab
              6. +
              7. Click on the "+" icon at the top left
              8. +
              9. Select Run Script
              10. +
              11. Drag the new run script to one below from the last item in the phase list
              12. +
              13. Expand the run script
              14. +
              15. In the script box, add the following command: xattr -cr /path-to-your-project/sequence-unreal/Binaries/IOS/Payload/SequenceUnreal.app
              16. +
              17. Click on the Build Settings tab
              18. +
              19. Click on each item under the Architectures header that contains macOS and hit the delete key
              20. +
              21. Click on the General tab
              22. +
              23. Click on Mac and Applevision Pro under supported destinations and hit the delete key
              24. +
              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. +
              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. +
              + + diff --git a/sdk/unreal/index.html b/sdk/unreal/index.html deleted file mode 100644 index 6228183979..0000000000 --- a/sdk/unreal/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Sequence - - - - - - - - - - -
              Skip to content
              - - diff --git a/solutions/builder/contracts/index.html b/solutions/builder/contracts/index.html index 1cd19d1103..575a427875 100644 --- a/solutions/builder/contracts/index.html +++ b/solutions/builder/contracts/index.html @@ -7,13 +7,13 @@ Contracts in Builder – Sequence - + - - + +
              Skip to content

              Contracts in Builder

              diff --git a/solutions/builder/gas-tank/index.html b/solutions/builder/gas-tank/index.html index dc839b4142..da9d3c92cc 100644 --- a/solutions/builder/gas-tank/index.html +++ b/solutions/builder/gas-tank/index.html @@ -7,13 +7,13 @@ Gas Tank in Builder – Sequence - + - - + +
              Skip to content

              Gas Tank in Builder

              diff --git a/solutions/builder/getting-started/index.html b/solutions/builder/getting-started/index.html index 04a74e4637..7f1ea24486 100644 --- a/solutions/builder/getting-started/index.html +++ b/solutions/builder/getting-started/index.html @@ -7,13 +7,13 @@ Get Started – Sequence - + - - + +
              Skip to content

              Get Started

              diff --git a/solutions/builder/indexer/index.html b/solutions/builder/indexer/index.html index 3d41af9b7d..46b062da7f 100644 --- a/solutions/builder/indexer/index.html +++ b/solutions/builder/indexer/index.html @@ -7,13 +7,13 @@ Indexer in Builder – Sequence - + - - + +
              Skip to content

              Indexer in Builder

              diff --git a/solutions/builder/marketplaces/index.html b/solutions/builder/marketplaces/index.html index 921d611420..effadececa 100644 --- a/solutions/builder/marketplaces/index.html +++ b/solutions/builder/marketplaces/index.html @@ -7,13 +7,13 @@ Launch your white-label marketplace – Sequence - + - - + +
              Skip to content

              Launch your white-label marketplace

              diff --git a/solutions/builder/node-gateway/index.html b/solutions/builder/node-gateway/index.html index f953377dd8..5e8f5a1eeb 100644 --- a/solutions/builder/node-gateway/index.html +++ b/solutions/builder/node-gateway/index.html @@ -7,13 +7,13 @@ Node Gateway in Builder – Sequence - + - - + +
              Skip to content

              Node Gateway in Builder

              diff --git a/solutions/builder/overview/index.html b/solutions/builder/overview/index.html index 5d6c18a274..3c9e0c2777 100644 --- a/solutions/builder/overview/index.html +++ b/solutions/builder/overview/index.html @@ -7,13 +7,13 @@ Sequence Builder - + - - + +
              Skip to content

              Sequence Builder

              diff --git a/solutions/builder/project-management/index.html b/solutions/builder/project-management/index.html index 743a1fcc23..44c1b9c3cb 100644 --- a/solutions/builder/project-management/index.html +++ b/solutions/builder/project-management/index.html @@ -7,13 +7,13 @@ Project Management – Sequence - + - - + +
              Skip to content

              Project Management

              diff --git a/solutions/builder/project-settings/index.html b/solutions/builder/project-settings/index.html index 993f79bc51..9b89b98cc1 100644 --- a/solutions/builder/project-settings/index.html +++ b/solutions/builder/project-settings/index.html @@ -7,13 +7,13 @@ Settings in Builder – Sequence - + - - + +
              Skip to content

              Settings in Builder

              diff --git a/solutions/builder/wallet-sdks/index.html b/solutions/builder/wallet-sdks/index.html index 843f6089b5..374fa6eeb5 100644 --- a/solutions/builder/wallet-sdks/index.html +++ b/solutions/builder/wallet-sdks/index.html @@ -7,13 +7,13 @@ Wallet SDKs in Builder – Sequence - + - - + +
              Skip to content

              Wallet SDKs in Builder

              diff --git a/solutions/collectibles/contracts/01-deploy-an-item-collection/index.html b/solutions/collectibles/contracts/01-deploy-an-item-collection/index.html index fe38bd0941..5440fe8d63 100644 --- a/solutions/collectibles/contracts/01-deploy-an-item-collection/index.html +++ b/solutions/collectibles/contracts/01-deploy-an-item-collection/index.html @@ -7,13 +7,13 @@ How to Deploy an Item Collection Contract – Sequence - + - - + +
              Skip to content

              How to Deploy an Item Collection Contract

              diff --git a/solutions/collectibles/contracts/02-deploy-ERC20-currency/index.html b/solutions/collectibles/contracts/02-deploy-ERC20-currency/index.html index 90ce92eedb..3aefad4ee0 100644 --- a/solutions/collectibles/contracts/02-deploy-ERC20-currency/index.html +++ b/solutions/collectibles/contracts/02-deploy-ERC20-currency/index.html @@ -7,13 +7,13 @@ How to Deploy in-game Currency in Builder – Sequence - + - - + +
              Skip to content

              How to Deploy in-game Currency in Builder

              @@ -61,7 +61,7 @@

              It's a typical pattern to use offchain compute like a cloudflare worker with a relayer wallet sending transactions, which would be inputted in the account field, more on how to accomplish this here

              Step 6: Mint tokens to your wallet address

              -

              Navigate to the mint card in the Write Contract section and input your wallet address and amount of tokens in 18 decimals. So for 100 tokens you would input: 100000000000000000000 with 18 additional trailing zeros

              +

              Navigate to the mint card in the Write Contract section and input your wallet address and amount of tokens in 18 decimals. So for 100 tokens you would input: 100000000000000000000

              mint tokens

              Step 7: Confirm your minted currency

              And you're done!

              diff --git a/solutions/collectibles/metadata/800-manage-metadata-builder/index.html b/solutions/collectibles/metadata/800-manage-metadata-builder/index.html index 0135224cc2..0ee9cae473 100644 --- a/solutions/collectibles/metadata/800-manage-metadata-builder/index.html +++ b/solutions/collectibles/metadata/800-manage-metadata-builder/index.html @@ -7,13 +7,13 @@ How to Manage Item Metadata in Sequence Builder - + - - + +
              Skip to content

              How to Manage Item Metadata in Sequence Builder

              diff --git a/solutions/index.html b/solutions/index.html index 702c0e7761..77f5fd8370 100644 --- a/solutions/index.html +++ b/solutions/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content
              diff --git a/solutions/indexer/01-overview/index.html b/solutions/indexer/01-overview/index.html index cef68a1484..8c51be9491 100644 --- a/solutions/indexer/01-overview/index.html +++ b/solutions/indexer/01-overview/index.html @@ -7,13 +7,13 @@ Indexer – Sequence - + - - + +
              Skip to content

              Indexer

              diff --git a/solutions/indexer/02-installation/index.html b/solutions/indexer/02-installation/index.html index 5958a95b1a..bffbdec028 100644 --- a/solutions/indexer/02-installation/index.html +++ b/solutions/indexer/02-installation/index.html @@ -7,13 +7,13 @@ Indexer Installation – Sequence - + - - + +
              Skip to content

              Indexer Installation

              @@ -74,7 +74,7 @@

              _, tokenBalances, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, nil, &includeMetadata, &metadataOptions, nil)


              Unity or Unreal Installation

              -

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

              +

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


              diff --git a/solutions/indexer/03-tokens-api/index.html b/solutions/indexer/03-tokens-api/index.html index ec0a91395d..384f123c54 100644 --- a/solutions/indexer/03-tokens-api/index.html +++ b/solutions/indexer/03-tokens-api/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content
              diff --git a/solutions/indexer/04-wallet-transaction-history/index.html b/solutions/indexer/04-wallet-transaction-history/index.html index 9c511714a0..34c4af4c81 100644 --- a/solutions/indexer/04-wallet-transaction-history/index.html +++ b/solutions/indexer/04-wallet-transaction-history/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content
              diff --git a/solutions/indexer/05-unique-tokens/index.html b/solutions/indexer/05-unique-tokens/index.html index b2b6050b9f..2c1d299804 100644 --- a/solutions/indexer/05-unique-tokens/index.html +++ b/solutions/indexer/05-unique-tokens/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content
              diff --git a/solutions/indexer/06-token-contract-history/index.html b/solutions/indexer/06-token-contract-history/index.html index 6ee21fb0e0..b203cf44d7 100644 --- a/solutions/indexer/06-token-contract-history/index.html +++ b/solutions/indexer/06-token-contract-history/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content
              diff --git a/solutions/indexer/07-native-network-balance/index.html b/solutions/indexer/07-native-network-balance/index.html index 6b8479e764..8ea565081c 100644 --- a/solutions/indexer/07-native-network-balance/index.html +++ b/solutions/indexer/07-native-network-balance/index.html @@ -7,13 +7,13 @@ Native network balances (ie. ETH, MATIC, etc.) – Sequence - + - - + +
              Skip to content

              Native network balances (ie. ETH, MATIC, etc.)

              diff --git a/solutions/indexer/08-metadata-spam-help/index.html b/solutions/indexer/08-metadata-spam-help/index.html index c59d7026fa..e60cb67564 100644 --- a/solutions/indexer/08-metadata-spam-help/index.html +++ b/solutions/indexer/08-metadata-spam-help/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content
              diff --git a/solutions/marketplaces/index.html b/solutions/marketplaces/index.html index f1f20d180d..f7e29f2244 100644 --- a/solutions/marketplaces/index.html +++ b/solutions/marketplaces/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content

              Page Not Found


              The page you were looking for could not be found.

              Go to Home Page
              diff --git a/solutions/marketplaces/orderbook/01-overview/index.html b/solutions/marketplaces/orderbook/01-overview/index.html index 68de92ab64..3979c19e05 100644 --- a/solutions/marketplaces/orderbook/01-overview/index.html +++ b/solutions/marketplaces/orderbook/01-overview/index.html @@ -7,13 +7,13 @@ Sequence Market - + - - + +
              Skip to content

              Sequence Market

              diff --git a/solutions/marketplaces/orderbook/02-quickstart/index.html b/solutions/marketplaces/orderbook/02-quickstart/index.html index d4508999a8..d274793e27 100644 --- a/solutions/marketplaces/orderbook/02-quickstart/index.html +++ b/solutions/marketplaces/orderbook/02-quickstart/index.html @@ -7,13 +7,13 @@ Quickstart – Sequence - + - - + +
              Skip to content

              Quickstart

              diff --git a/solutions/marketplaces/orderbook/03-get-top-orders/index.html b/solutions/marketplaces/orderbook/03-get-top-orders/index.html index 45cd78f8fc..6f94f8c0ca 100644 --- a/solutions/marketplaces/orderbook/03-get-top-orders/index.html +++ b/solutions/marketplaces/orderbook/03-get-top-orders/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content

              GetTopOrders

              diff --git a/solutions/marketplaces/orderbook/04-get-orderbook/index.html b/solutions/marketplaces/orderbook/04-get-orderbook/index.html index 592699841d..5bd14502aa 100644 --- a/solutions/marketplaces/orderbook/04-get-orderbook/index.html +++ b/solutions/marketplaces/orderbook/04-get-orderbook/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content

              GetOrderbookOrders

              diff --git a/solutions/marketplaces/orderbook/05-get-user-activities/index.html b/solutions/marketplaces/orderbook/05-get-user-activities/index.html index f93a4435e0..8d6ebcb848 100644 --- a/solutions/marketplaces/orderbook/05-get-user-activities/index.html +++ b/solutions/marketplaces/orderbook/05-get-user-activities/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content

              GetUserActivities

              diff --git a/solutions/marketplaces/orderbook/06-orderbook-transactions/index.html b/solutions/marketplaces/orderbook/06-orderbook-transactions/index.html index a7d664fd29..1795c98e1b 100644 --- a/solutions/marketplaces/orderbook/06-orderbook-transactions/index.html +++ b/solutions/marketplaces/orderbook/06-orderbook-transactions/index.html @@ -7,13 +7,13 @@ Sequence Market Orderbook Transactions - + - - + +
              Skip to content

              Sequence Market Orderbook Transactions

              @@ -54,7 +54,7 @@

              const signer = wallet.getSigner(421614); // on arbitrum-sepolia const sequenceMarketInterface = new ethers.utils.Interface( - "function createRequest(RequestParams calldata request) external nonReentrant returns (uint256 requestId)" + "function createRequest(tuple(bool isListing, bool isERC1155, address tokenContract, uint256 tokenId, uint256 quantity, uint96 expiry, address currency, uint256 pricePerToken)) external nonReentrant returns (uint256 requestId)" ); const erc1155Interface = new ethers.utils.Interface([ diff --git a/solutions/marketplaces/white-label-marketplace/index.html b/solutions/marketplaces/white-label-marketplace/index.html index ad9c76c789..88faaa3cc1 100644 --- a/solutions/marketplaces/white-label-marketplace/index.html +++ b/solutions/marketplaces/white-label-marketplace/index.html @@ -7,13 +7,13 @@ Launch your white-label marketplace – Sequence - + - - + +
              Skip to content

              Launch your white-label marketplace

              diff --git a/solutions/minter/index.html b/solutions/minter/index.html index 1ae7148564..8c5d95b342 100644 --- a/solutions/minter/index.html +++ b/solutions/minter/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content

              Mint tokens using Builder manually

              diff --git a/solutions/nft-checkout/index.html b/solutions/nft-checkout/index.html index 07ff1412a4..068f55f3f9 100644 --- a/solutions/nft-checkout/index.html +++ b/solutions/nft-checkout/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content

              Integrate NFT Checkout on web (coming soon)

              diff --git a/solutions/onramps/index.html b/solutions/onramps/index.html index c892c3a5f1..e718b8af8e 100644 --- a/solutions/onramps/index.html +++ b/solutions/onramps/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content

              Integrate onramp on web

              diff --git a/solutions/payments/onramps/01-fiat-on-ramps/index.html b/solutions/payments/onramps/01-fiat-on-ramps/index.html index a1cdfa4eb2..7e8464c305 100644 --- a/solutions/payments/onramps/01-fiat-on-ramps/index.html +++ b/solutions/payments/onramps/01-fiat-on-ramps/index.html @@ -7,13 +7,13 @@ Fiat On-Ramps – Sequence - + - - + +
              Skip to content

              Fiat On-Ramps

              diff --git a/solutions/technical-references/chain-support/index.html b/solutions/technical-references/chain-support/index.html index 884250ce59..93bc5f834a 100644 --- a/solutions/technical-references/chain-support/index.html +++ b/solutions/technical-references/chain-support/index.html @@ -7,13 +7,13 @@ Multi-Chain Support – Sequence - + - - + +
              Skip to content

              Multi-Chain Support

              @@ -24,6 +24,6 @@

              Networks

              NetworkChain HandleIndexer Endpoint
              Ethereum
              mainnet
              https://mainnet-indexer.sequence.app
              Arbitrum One
              arbitrum
              https://arbitrum-indexer.sequence.app
              Arbitrum Nova
              arbitrum-nova
              https://arbitrum-nova-indexer.sequence.app
              Polygon
              polygon
              https://polygon-indexer.sequence.app
              Polygon zkEVM
              polygon-zkevm
              https://polygon-zkevm-indexer.sequence.app
              Base
              base
              https://base-indexer.sequence.app
              Optimism
              optimism
              https://optimism-indexer.sequence.app
              Avalanche
              avalanche
              https://avalanche-indexer.sequence.app
              Homeverse
              homeverse
              https://homeverse-indexer.sequence.app
              BSC
              bsc
              https://bsc-indexer.sequence.app
              Gnosis
              gnosis
              https://gnosis-indexer.sequence.app

              Testnets

              -
              NetworkChain HandleIndexer Endpoint
              Ethereum Sepolia
              sepolia
              https://sepolia-indexer.sequence.app
              Arbitrum Sepolia
              arbitrum-sepolia
              https://arbitrum-sepolia-indexer.sequence.app
              Base Sepolia
              base-sepolia
              https://base-sepolia-indexer.sequence.app
              Optimism Sepolia
              optimism-sepolia
              https://optimism-indexer.sequence.app
              Polygon Mumbai
              mumbai
              https://mumbai-indexer.sequence.app
              BSC Testnet
              bsc-testnet
              https://bsc-testnet-indexer.sequence.app
              +
              NetworkChain HandleIndexer Endpoint
              Ethereum Sepolia
              sepolia
              https://sepolia-indexer.sequence.app
              Arbitrum Sepolia
              arbitrum-sepolia
              https://arbitrum-sepolia-indexer.sequence.app
              Base Sepolia
              base-sepolia
              https://base-sepolia-indexer.sequence.app
              Optimism Sepolia
              optimism-sepolia
              https://optimism-indexer.sequence.app
              BSC Testnet
              bsc-testnet
              https://bsc-testnet-indexer.sequence.app
              diff --git a/solutions/technical-references/node-gateway/index.html b/solutions/technical-references/node-gateway/index.html index e206b93d91..a159fcd0a3 100644 --- a/solutions/technical-references/node-gateway/index.html +++ b/solutions/technical-references/node-gateway/index.html @@ -7,13 +7,13 @@ Node Gateway – Sequence - + - - + +
              Skip to content

              Node Gateway

              diff --git a/solutions/technical-references/wallet-contracts/01-why/index.html b/solutions/technical-references/wallet-contracts/01-why/index.html index b58b6c4763..c560c750b0 100644 --- a/solutions/technical-references/wallet-contracts/01-why/index.html +++ b/solutions/technical-references/wallet-contracts/01-why/index.html @@ -7,13 +7,13 @@ Why smart contracts wallets? – Sequence - + - - + +
              Skip to content

              Why smart contracts wallets?

              diff --git a/solutions/technical-references/wallet-contracts/02-universal-deployer/index.html b/solutions/technical-references/wallet-contracts/02-universal-deployer/index.html index 07cdac9a91..458d34280d 100644 --- a/solutions/technical-references/wallet-contracts/02-universal-deployer/index.html +++ b/solutions/technical-references/wallet-contracts/02-universal-deployer/index.html @@ -7,13 +7,13 @@ Universal Deployer – Sequence - + - - + +
              Skip to content

              Universal Deployer

              diff --git a/solutions/technical-references/wallet-contracts/03-wallet-factory/index.html b/solutions/technical-references/wallet-contracts/03-wallet-factory/index.html index 29bf098753..af6fe1236c 100644 --- a/solutions/technical-references/wallet-contracts/03-wallet-factory/index.html +++ b/solutions/technical-references/wallet-contracts/03-wallet-factory/index.html @@ -7,13 +7,13 @@ Wallet Factory – Sequence - + - - + +
              Skip to content

              Wallet Factory

              diff --git a/solutions/technical-references/wallet-contracts/04-wallet-configuration/index.html b/solutions/technical-references/wallet-contracts/04-wallet-configuration/index.html index 2b871692d2..bfd4f092f4 100644 --- a/solutions/technical-references/wallet-contracts/04-wallet-configuration/index.html +++ b/solutions/technical-references/wallet-contracts/04-wallet-configuration/index.html @@ -7,13 +7,13 @@ Wallet Configuration – Sequence - + - - + +
              Skip to content

              Wallet Configuration

              diff --git a/solutions/technical-references/wallet-contracts/05-modules-and-updates/index.html b/solutions/technical-references/wallet-contracts/05-modules-and-updates/index.html index 16eba6ca95..903c516097 100644 --- a/solutions/technical-references/wallet-contracts/05-modules-and-updates/index.html +++ b/solutions/technical-references/wallet-contracts/05-modules-and-updates/index.html @@ -7,13 +7,13 @@ Modules & wallet update – Sequence - + - - + +
              Skip to content

              Modules & wallet update

              diff --git a/solutions/technical-references/wallet-contracts/06-main-module-upgradeable/index.html b/solutions/technical-references/wallet-contracts/06-main-module-upgradeable/index.html index 4fbbd71e82..f30a740cf7 100644 --- a/solutions/technical-references/wallet-contracts/06-main-module-upgradeable/index.html +++ b/solutions/technical-references/wallet-contracts/06-main-module-upgradeable/index.html @@ -7,13 +7,13 @@ MainModuleUpgradeable & configuration migration – Sequence - + - - + +
              Skip to content

              MainModuleUpgradeable & configuration migration

              diff --git a/solutions/technical-references/wallet-contracts/07-transaction-encoding/index.html b/solutions/technical-references/wallet-contracts/07-transaction-encoding/index.html index e9f22c138e..36f19e8d99 100644 --- a/solutions/technical-references/wallet-contracts/07-transaction-encoding/index.html +++ b/solutions/technical-references/wallet-contracts/07-transaction-encoding/index.html @@ -7,13 +7,13 @@ Transaction encoding – Sequence - + - - + +
              Skip to content

              Transaction encoding

              diff --git a/solutions/technical-references/wallet-contracts/08-signature-encoding/index.html b/solutions/technical-references/wallet-contracts/08-signature-encoding/index.html index 7dfbaef00e..f1174c02ce 100644 --- a/solutions/technical-references/wallet-contracts/08-signature-encoding/index.html +++ b/solutions/technical-references/wallet-contracts/08-signature-encoding/index.html @@ -7,13 +7,13 @@ Signature Encoding – Sequence - + - - + +
              Skip to content

              Signature Encoding

              diff --git a/solutions/technical-references/wallet-contracts/09-nested-transaction-batching/index.html b/solutions/technical-references/wallet-contracts/09-nested-transaction-batching/index.html index a2985a219e..d186a5c1bd 100644 --- a/solutions/technical-references/wallet-contracts/09-nested-transaction-batching/index.html +++ b/solutions/technical-references/wallet-contracts/09-nested-transaction-batching/index.html @@ -7,13 +7,13 @@ Nested Transaction Batching – Sequence - + - - + +
              Skip to content

              Nested Transaction Batching

              diff --git a/solutions/technical-references/wallet-contracts/10-guest-module/index.html b/solutions/technical-references/wallet-contracts/10-guest-module/index.html index 0883a99370..1499499251 100644 --- a/solutions/technical-references/wallet-contracts/10-guest-module/index.html +++ b/solutions/technical-references/wallet-contracts/10-guest-module/index.html @@ -7,13 +7,13 @@ GuestModule and on-demand deployment – Sequence - + - - + +
              Skip to content

              GuestModule and on-demand deployment

              diff --git a/solutions/technical-references/wallet-contracts/11-wallet-context/index.html b/solutions/technical-references/wallet-contracts/11-wallet-context/index.html index 6bd8b3ccb4..c9f108b797 100644 --- a/solutions/technical-references/wallet-contracts/11-wallet-context/index.html +++ b/solutions/technical-references/wallet-contracts/11-wallet-context/index.html @@ -7,13 +7,13 @@ Wallet Context – Sequence - + - - + +
              Skip to content

              Wallet Context

              diff --git a/solutions/technical-references/wallet-contracts/12-contract-audits/index.html b/solutions/technical-references/wallet-contracts/12-contract-audits/index.html index 27c39a4900..758483ba29 100644 --- a/solutions/technical-references/wallet-contracts/12-contract-audits/index.html +++ b/solutions/technical-references/wallet-contracts/12-contract-audits/index.html @@ -7,13 +7,13 @@ Contract Audits – Sequence - + - - + +
              Skip to content

              Contract Audits

              diff --git a/solutions/wallets/embedded-wallet/01-overview/index.html b/solutions/wallets/embedded-wallet/01-overview/index.html index 0fce913e81..d709f75d3e 100644 --- a/solutions/wallets/embedded-wallet/01-overview/index.html +++ b/solutions/wallets/embedded-wallet/01-overview/index.html @@ -7,13 +7,13 @@ Sequence Embedded Wallet - + - - + +
              Skip to content

              Sequence Embedded Wallet

              diff --git a/solutions/wallets/embedded-wallet/02-quickstart/index.html b/solutions/wallets/embedded-wallet/02-quickstart/index.html index f3c97cd242..bac2499c59 100644 --- a/solutions/wallets/embedded-wallet/02-quickstart/index.html +++ b/solutions/wallets/embedded-wallet/02-quickstart/index.html @@ -7,13 +7,13 @@ Quickstart – Sequence - + - - + +
              Skip to content

              Quickstart

              diff --git a/solutions/wallets/embedded-wallet/03-manage-sessions/index.html b/solutions/wallets/embedded-wallet/03-manage-sessions/index.html index b959acf37f..d5c60cc6f7 100644 --- a/solutions/wallets/embedded-wallet/03-manage-sessions/index.html +++ b/solutions/wallets/embedded-wallet/03-manage-sessions/index.html @@ -7,13 +7,13 @@ Session Management – Sequence - + - - + +
              Skip to content

              Session Management

              diff --git a/solutions/wallets/embedded-wallet/04-use-wallets/index.html b/solutions/wallets/embedded-wallet/04-use-wallets/index.html index 0b70ff0b50..34820d0d51 100644 --- a/solutions/wallets/embedded-wallet/04-use-wallets/index.html +++ b/solutions/wallets/embedded-wallet/04-use-wallets/index.html @@ -7,13 +7,13 @@ Wallets and transactions – Sequence - + - - + +
              Skip to content

              Wallets and transactions

              diff --git a/solutions/wallets/embedded-wallet/05-validation/index.html b/solutions/wallets/embedded-wallet/05-validation/index.html index 5c957adfde..e10f30f157 100644 --- a/solutions/wallets/embedded-wallet/05-validation/index.html +++ b/solutions/wallets/embedded-wallet/05-validation/index.html @@ -7,13 +7,13 @@ Validation – Sequence - + - - + +
              Skip to content

              Validation

              diff --git a/solutions/wallets/embedded-wallet/06-transaction-receipts/index.html b/solutions/wallets/embedded-wallet/06-transaction-receipts/index.html index c460e78a07..d93e0f23dc 100644 --- a/solutions/wallets/embedded-wallet/06-transaction-receipts/index.html +++ b/solutions/wallets/embedded-wallet/06-transaction-receipts/index.html @@ -7,13 +7,13 @@ Transaction receipts – Sequence - + - - + +
              Skip to content

              Transaction receipts

              diff --git a/solutions/wallets/overview/index.html b/solutions/wallets/overview/index.html index bfc9f233cf..7b06bb3b0b 100644 --- a/solutions/wallets/overview/index.html +++ b/solutions/wallets/overview/index.html @@ -7,13 +7,13 @@ Sequence - + - - + +
              Skip to content

              Comparison of wallet offerings, guides, etc

              diff --git a/solutions/wallets/universal-wallet/01-overview/index.html b/solutions/wallets/universal-wallet/01-overview/index.html index 0de94f4b2a..cef53ea4b0 100644 --- a/solutions/wallets/universal-wallet/01-overview/index.html +++ b/solutions/wallets/universal-wallet/01-overview/index.html @@ -7,13 +7,13 @@ Wallet – Sequence - + - - + +
              Skip to content

              Wallet

              diff --git a/solutions/wallets/universal-wallet/02-quickstart/index.html b/solutions/wallets/universal-wallet/02-quickstart/index.html index 7280cdccd4..22b901dab9 100644 --- a/solutions/wallets/universal-wallet/02-quickstart/index.html +++ b/solutions/wallets/universal-wallet/02-quickstart/index.html @@ -7,13 +7,13 @@ Quickstart – Sequence - + - - + +
              Skip to content

              Quickstart

              diff --git a/solutions/wallets/universal-wallet/04-sequence-kit/index.html b/solutions/wallets/universal-wallet/04-sequence-kit/index.html index 597f748d52..e079139f73 100644 --- a/solutions/wallets/universal-wallet/04-sequence-kit/index.html +++ b/solutions/wallets/universal-wallet/04-sequence-kit/index.html @@ -7,13 +7,13 @@ Sequence Kit Documentation - + - - + +
              Skip to content

              Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications

              diff --git a/solutions/wallets/universal-wallet/05-platforms/index.html b/solutions/wallets/universal-wallet/05-platforms/index.html index b26cfec275..0cbfa31631 100644 --- a/solutions/wallets/universal-wallet/05-platforms/index.html +++ b/solutions/wallets/universal-wallet/05-platforms/index.html @@ -7,13 +7,13 @@ Platforms – Sequence - + - - + +
              Skip to content

              Platforms

              diff --git a/solutions/wallets/universal-wallet/06-fiat-on-ramps/index.html b/solutions/wallets/universal-wallet/06-fiat-on-ramps/index.html index b449365edd..4e76cd60cf 100644 --- a/solutions/wallets/universal-wallet/06-fiat-on-ramps/index.html +++ b/solutions/wallets/universal-wallet/06-fiat-on-ramps/index.html @@ -7,13 +7,13 @@ Fiat On-Ramps – Sequence - + - - + +
              Skip to content

              Fiat On-Ramps

              diff --git a/solutions/wallets/universal-wallet/07-key-management/index.html b/solutions/wallets/universal-wallet/07-key-management/index.html index cd6012d5ea..20a45eafc9 100644 --- a/solutions/wallets/universal-wallet/07-key-management/index.html +++ b/solutions/wallets/universal-wallet/07-key-management/index.html @@ -7,13 +7,13 @@ Key Management – Sequence - + - - + +
              Skip to content

              Key Management

              diff --git a/solutions/wallets/universal-wallet/examples/01-connect-wallet/index.html b/solutions/wallets/universal-wallet/examples/01-connect-wallet/index.html index 866e803970..548fe310d0 100644 --- a/solutions/wallets/universal-wallet/examples/01-connect-wallet/index.html +++ b/solutions/wallets/universal-wallet/examples/01-connect-wallet/index.html @@ -7,13 +7,13 @@ Connect Wallet – Sequence - + - - + +
              Skip to content

              Connect Wallet

              diff --git a/solutions/wallets/universal-wallet/examples/02-auth-address/index.html b/solutions/wallets/universal-wallet/examples/02-auth-address/index.html index ee4c0873af..f89a1966fa 100644 --- a/solutions/wallets/universal-wallet/examples/02-auth-address/index.html +++ b/solutions/wallets/universal-wallet/examples/02-auth-address/index.html @@ -7,13 +7,13 @@ Authenticate Users with Message Signature – Sequence - + - - + +
              Skip to content

              Authenticate Users with Message Signature

              diff --git a/solutions/wallets/universal-wallet/examples/03-sign-message/index.html b/solutions/wallets/universal-wallet/examples/03-sign-message/index.html index 2aba6435c8..a4329654c4 100644 --- a/solutions/wallets/universal-wallet/examples/03-sign-message/index.html +++ b/solutions/wallets/universal-wallet/examples/03-sign-message/index.html @@ -7,13 +7,13 @@ Signing & Verifying Messages – Sequence - + - - + +
              Skip to content

              Signing & Verifying Messages

              @@ -77,11 +77,8 @@

              ); console.log(isValid);

      -

      :::info Sequence is a Smart Contract based account -These signatures are by default encoded using EIP-6492, see https://eips.ethereum.org/EIPS/eip-6492.

      -

      This means that the signatures can be verified using the standard process defined in the UniversalVerified contract on EIP-6492.

      -

      The wallet.utils.isValidMessageSignature implements EIP-6492 verification, it can be used to verify signatures from any kind of wallet. -:::

      +

      Verifying Message Signatures (via Sequence API)