{"version":3,"file":"static/js/main.8dc02143.js","mappings":"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","sources":["../node_modules/bech32/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/eventemitter3/index.js","../node_modules/hash.js/lib/hash.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/hash.js/lib/hash/ripemd.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/utils.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/inherits/inherits_browser.js","../node_modules/js-sha3/src/sha3.js","../node_modules/minimalistic-assert/index.js","../node_modules/object-assign/index.js","../node_modules/path-to-regexp/index.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-side-effect/lib/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/abitype/src/regex.ts","../node_modules/viem/accounts/utils/parseAccount.ts","../node_modules/abitype/src/human-readable/runtime/signatures.ts","../node_modules/abitype/src/errors.ts","../node_modules/abitype/src/human-readable/errors/abiItem.ts","../node_modules/abitype/src/human-readable/errors/abiParameter.ts","../node_modules/abitype/src/human-readable/errors/signature.ts","../node_modules/abitype/src/human-readable/errors/struct.ts","../node_modules/abitype/src/human-readable/errors/splitParameters.ts","../node_modules/abitype/src/human-readable/runtime/cache.ts","../node_modules/abitype/src/human-readable/runtime/utils.ts","../node_modules/abitype/src/human-readable/runtime/structs.ts","../node_modules/abitype/src/human-readable/parseAbi.ts","../node_modules/viem/constants/contract.ts","../node_modules/viem/constants/contracts.ts","../node_modules/viem/utils/abi/encodeDeployData.ts","../node_modules/viem/errors/node.ts","../node_modules/viem/utils/errors/getCallError.ts","../node_modules/viem/utils/errors/getNodeError.ts","../node_modules/viem/utils/formatters/extract.ts","../node_modules/viem/utils/formatters/transactionRequest.ts","../node_modules/viem/utils/stateOverride.ts","../node_modules/viem/constants/number.ts","../node_modules/viem/actions/public/call.ts","../node_modules/viem/utils/transaction/assertRequest.ts","../node_modules/viem/constants/abis.ts","../node_modules/viem/constants/solidity.ts","../node_modules/viem/constants/unit.ts","../node_modules/viem/errors/abi.ts","../node_modules/viem/errors/address.ts","../node_modules/viem/errors/version.ts","../node_modules/viem/errors/base.ts","../node_modules/viem/errors/chain.ts","../node_modules/viem/utils/abi/formatAbiItemWithArgs.ts","../node_modules/viem/errors/contract.ts","../node_modules/viem/errors/data.ts","../node_modules/viem/errors/encoding.ts","../node_modules/viem/errors/request.ts","../node_modules/viem/errors/stateOverride.ts","../node_modules/viem/errors/transaction.ts","../node_modules/viem/errors/utils.ts","../node_modules/viem/errors/cursor.ts","../node_modules/viem/utils/cursor.ts","../node_modules/viem/utils/encoding/fromBytes.ts","../node_modules/viem/utils/abi/decodeAbiParameters.ts","../node_modules/viem/utils/abi/decodeErrorResult.ts","../node_modules/viem/utils/abi/decodeFunctionResult.ts","../node_modules/viem/utils/abi/encodeAbiParameters.ts","../node_modules/viem/utils/abi/prepareEncodeFunctionData.ts","../node_modules/viem/utils/abi/encodeFunctionData.ts","../node_modules/viem/utils/abi/formatAbiItem.ts","../node_modules/viem/utils/hash/toEventSelector.ts","../node_modules/viem/utils/abi/getAbiItem.ts","../node_modules/viem/utils/address/getAddress.ts","../node_modules/viem/utils/address/isAddress.ts","../node_modules/viem/utils/chain/getChainContractAddress.ts","../node_modules/viem/utils/data/concat.ts","../node_modules/viem/utils/data/isHex.ts","../node_modules/viem/utils/data/pad.ts","../node_modules/viem/utils/data/size.ts","../node_modules/viem/utils/data/slice.ts","../node_modules/viem/utils/data/trim.ts","../node_modules/viem/utils/encoding/fromHex.ts","../node_modules/viem/utils/encoding/toBytes.ts","../node_modules/viem/utils/encoding/toHex.ts","../node_modules/viem/node_modules/@noble/hashes/src/_assert.ts","../node_modules/viem/node_modules/@noble/hashes/src/_u64.ts","../node_modules/viem/node_modules/@noble/hashes/src/utils.ts","../node_modules/viem/node_modules/@noble/hashes/src/sha3.ts","../node_modules/viem/utils/hash/keccak256.ts","../node_modules/viem/utils/hash/toFunctionSelector.ts","../node_modules/viem/utils/hash/hashSignature.ts","../node_modules/abitype/src/human-readable/formatAbiParameter.ts","../node_modules/abitype/src/human-readable/formatAbiParameters.ts","../node_modules/viem/utils/hash/toSignature.ts","../node_modules/viem/utils/hash/normalizeSignature.ts","../node_modules/abitype/src/human-readable/formatAbiItem.ts","../node_modules/viem/utils/hash/toSignatureHash.ts","../node_modules/viem/utils/lru.ts","../node_modules/viem/utils/promise/createBatchScheduler.ts","../node_modules/viem/utils/stringify.ts","../node_modules/viem/utils/unit/formatEther.ts","../node_modules/viem/utils/unit/formatGwei.ts","../node_modules/viem/utils/unit/formatUnits.ts","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/history/esm/history.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","assets/svg/arrow-right.svg","../node_modules/react-helmet/es/Helmet.js","../node_modules/@wagmi/core/src/utils/deepEqual.ts","../node_modules/@wagmi/core/src/actions/getAccount.ts","../node_modules/@wagmi/core/src/actions/reconnect.ts","../node_modules/@wagmi/core/src/hydrate.ts","../node_modules/wagmi/src/hydrate.ts","../node_modules/wagmi/src/context.ts","../node_modules/@wagmi/core/src/version.ts","../node_modules/@wagmi/core/src/errors/base.ts","../node_modules/@wagmi/core/src/utils/getVersion.ts","../node_modules/wagmi/src/errors/base.ts","../node_modules/wagmi/src/utils/getVersion.ts","../node_modules/wagmi/src/errors/context.ts","../node_modules/wagmi/src/hooks/useConfig.ts","../node_modules/wagmi/src/hooks/useSyncExternalStoreWithTracked.ts","../node_modules/wagmi/src/hooks/useAccount.ts","../node_modules/@wagmi/core/src/actions/watchAccount.ts","../node_modules/@tanstack/query-core/src/notifyManager.ts","../node_modules/@tanstack/query-core/src/utils.ts","../node_modules/@tanstack/query-core/src/removable.ts","../node_modules/@tanstack/query-core/src/subscribable.ts","../node_modules/@tanstack/query-core/src/focusManager.ts","../node_modules/@tanstack/query-core/src/onlineManager.ts","../node_modules/@tanstack/query-core/src/retryer.ts","../node_modules/@tanstack/query-core/src/mutation.ts","../node_modules/@tanstack/query-core/src/mutationObserver.ts","../node_modules/@tanstack/react-query/src/QueryClientProvider.tsx","../node_modules/@tanstack/react-query/src/utils.ts","../node_modules/@tanstack/react-query/src/useMutation.ts","../node_modules/@wagmi/core/src/errors/config.ts","../node_modules/@wagmi/core/src/query/connect.ts","../node_modules/@wagmi/core/src/actions/connect.ts","../node_modules/@wagmi/core/src/actions/getConnectors.ts","../node_modules/wagmi/src/hooks/useConnectors.ts","../node_modules/@wagmi/core/src/actions/watchConnectors.ts","../node_modules/wagmi/src/hooks/useConnect.ts","../node_modules/viem/utils/uid.ts","../node_modules/viem/clients/createClient.ts","../node_modules/viem/errors/rpc.ts","../node_modules/viem/utils/promise/withDedupe.ts","../node_modules/viem/utils/promise/withRetry.ts","../node_modules/viem/utils/wait.ts","../node_modules/viem/utils/buildRequest.ts","../node_modules/viem/clients/transports/createTransport.ts","../node_modules/@wagmi/core/src/actions/getConnectorClient.ts","../node_modules/viem/clients/transports/custom.ts","../node_modules/@wagmi/core/src/query/utils.ts","../node_modules/@wagmi/core/src/query/getConnectorClient.ts","../node_modules/@tanstack/query-core/src/query.ts","../node_modules/@tanstack/query-core/src/queryObserver.ts","../node_modules/@tanstack/react-query/src/QueryErrorResetBoundary.tsx","../node_modules/@tanstack/react-query/src/isRestoring.ts","../node_modules/@tanstack/react-query/src/errorBoundaryUtils.ts","../node_modules/@tanstack/react-query/src/suspense.ts","../node_modules/@tanstack/react-query/src/useQuery.ts","../node_modules/@tanstack/react-query/src/useBaseQuery.ts","../node_modules/wagmi/src/utils/query.ts","../node_modules/@wagmi/core/src/actions/getChainId.ts","../node_modules/wagmi/src/hooks/useChainId.ts","../node_modules/@wagmi/core/src/actions/watchChainId.ts","../node_modules/wagmi/src/hooks/useConnectorClient.ts","../node_modules/@wagmi/core/src/errors/connector.ts","../node_modules/@wagmi/core/src/query/switchChain.ts","../node_modules/@wagmi/core/src/actions/switchChain.ts","../node_modules/@wagmi/core/src/actions/getChains.ts","../node_modules/wagmi/src/hooks/useChains.ts","../node_modules/@wagmi/core/src/actions/watchChains.ts","../node_modules/wagmi/src/hooks/useSwitchChain.ts","../node_modules/@wagmi/core/src/query/disconnect.ts","../node_modules/@wagmi/core/src/actions/disconnect.ts","../node_modules/@wagmi/core/src/actions/getConnections.ts","../node_modules/wagmi/src/hooks/useConnections.ts","../node_modules/@wagmi/core/src/actions/watchConnections.ts","../node_modules/viem/actions/public/getBalance.ts","../node_modules/@wagmi/core/src/utils/getAction.ts","../node_modules/@wagmi/core/src/utils/getUnit.ts","../node_modules/viem/utils/errors/getContractError.ts","../node_modules/viem/utils/getAction.ts","../node_modules/viem/actions/public/readContract.ts","../node_modules/viem/actions/public/multicall.ts","../node_modules/@wagmi/core/src/actions/readContracts.ts","../node_modules/@wagmi/core/src/actions/multicall.ts","../node_modules/@wagmi/core/src/actions/readContract.ts","../node_modules/@wagmi/core/src/actions/getBalance.ts","../node_modules/@wagmi/core/src/query/getBalance.ts","../node_modules/@ethersproject/logger/src.ts/index.ts","../node_modules/@ethersproject/logger/src.ts/_version.ts","../node_modules/@ethersproject/providers/node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/providers/node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/providers/src.ts/_version.ts","../node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/abstract-signer/node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/abstract-signer/src.ts/index.ts","../node_modules/@ethersproject/abstract-signer/src.ts/_version.ts","../node_modules/@ethersproject/bytes/src.ts/_version.ts","../node_modules/@ethersproject/bytes/src.ts/index.ts","../node_modules/@ethersproject/bignumber/src.ts/_version.ts","../node_modules/@ethersproject/bignumber/src.ts/bignumber.ts","../node_modules/@ethersproject/keccak256/src.ts/index.ts","../node_modules/@ethersproject/rlp/src.ts/_version.ts","../node_modules/@ethersproject/rlp/src.ts/index.ts","../node_modules/@ethersproject/address/src.ts/_version.ts","../node_modules/@ethersproject/address/src.ts/index.ts","../node_modules/@ethersproject/hash/node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/hash/node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/hash/src.ts/_version.ts","../node_modules/@ethersproject/strings/src.ts/utf8.ts","../node_modules/@ethersproject/strings/src.ts/_version.ts","../node_modules/@ethersproject/hash/src.ts/id.ts","../node_modules/@ethersproject/hash/src.ts/typed-data.ts","../node_modules/@ethersproject/constants/src.ts/bignumbers.ts","../node_modules/node_modules/minimalistic-assert/index.js","../node_modules/node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/node_modules/inherits/inherits_browser.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/node_modules/elliptic/lib/elliptic/curves.js","../node_modules/node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../node_modules/node_modules/elliptic/lib/elliptic.js","../node_modules/@ethersproject/signing-key/node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/signing-key/node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/signing-key/src.ts/_version.ts","../node_modules/@ethersproject/signing-key/src.ts/index.ts","../node_modules/@ethersproject/transactions/src.ts/_version.ts","../node_modules/@ethersproject/transactions/src.ts/index.ts","../node_modules/@ethersproject/base64/src.ts/browser-base64.ts","../node_modules/@ethersproject/providers/node_modules/@ethersproject/web/src.ts/browser-geturl.ts","../node_modules/@ethersproject/providers/node_modules/@ethersproject/web/src.ts/index.ts","../node_modules/@ethersproject/providers/node_modules/@ethersproject/web/src.ts/_version.ts","../node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/abstract-provider/node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/abstract-provider/src.ts/index.ts","../node_modules/@ethersproject/abstract-provider/src.ts/_version.ts","../node_modules/@ethersproject/basex/node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/basex/node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/basex/src.ts/index.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/decoder.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/lib.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/include.ts","../node_modules/@ethersproject/hash/src.ts/namehash.ts","../node_modules/@ethersproject/networks/src.ts/_version.ts","../node_modules/@ethersproject/networks/src.ts/index.ts","../node_modules/@ethersproject/sha2/src.ts/browser-sha2.ts","../node_modules/@ethersproject/sha2/src.ts/_version.ts","../node_modules/@ethersproject/constants/src.ts/addresses.ts","../node_modules/@ethersproject/providers/src.ts/formatter.ts","../node_modules/@ethersproject/providers/src.ts/base-provider.ts","../node_modules/@ethersproject/constants/src.ts/hashes.ts","../node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts","../node_modules/@ethersproject/providers/src.ts/web3-provider.ts","../node_modules/@airdao/ui-library/node_modules/tslib/tslib.es6.js","../node_modules/@airdao/ui-library/node_modules/style-inject/dist/style-inject.es.js","../node_modules/@airdao/ui-library/node_modules/prop-types/index.js","../node_modules/@airdao/ui-library/node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/@airdao/ui-library/node_modules/object-assign/index.js","../node_modules/@airdao/ui-library/node_modules/prop-types/lib/ReactPropTypesSecret.js","../../components/Button/Button.tsx","../../components/Input/Input.tsx","../../components/ButtonIcon/ButtonIcon.tsx","../../components/TabsRound/TabsRound.tsx","../node_modules/@airdao/ui-library/src/components/Footer/assets/twitter-icon.svg","../../components/Footer/Footer.tsx","../node_modules/@airdao/ui-library/src/components/Footer/assets/telegram-icon.svg","../node_modules/@airdao/ui-library/src/components/Footer/assets/reddit-icon.svg","../node_modules/@airdao/ui-library/src/components/Footer/assets/medium-icon.svg","../node_modules/@airdao/ui-library/src/components/Footer/assets/youtube-icon.svg","../node_modules/@airdao/ui-library/src/components/Footer/assets/discord-icon.svg","../node_modules/@airdao/ui-library/src/components/Footer/assets/linkedin-icon.svg","../node_modules/@airdao/ui-library/src/components/Footer/assets/github-icon.svg","../../components/Loader/Loader.tsx","../node_modules/@airdao/ui-library/node_modules/@prismicio/react/dist/PrismicProvider.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/react/dist/useStatefulPrismicClientMethod.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/react/dist/clientHooks.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/react/dist/usePrismicClient.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/react/dist/usePrismicContext.js","../../hooks/useBodyScroll.ts","../node_modules/@airdao/ui-library/node_modules/lodash.debounce/index.js","../node_modules/@airdao/ui-library/node_modules/usehooks-ts/dist/index.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/filter.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/castArray.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/appendFilters.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/package.json.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/devMsg.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/everyTagFilter.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/PrismicError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/findRef.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/findMasterRef.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/findRefByID.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/findRefByLabel.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/getPreviewCookie.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/someTagsFilter.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/typeFilter.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/ForbiddenError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/NotFoundError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/ParsingError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/PreviewTokenExpired.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/RefExpiredError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/RefNotFoundError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/errors/RepositoryNotFoundError.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/types/value/link.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/BaseClient.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/pLimit.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/buildQueryURL.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/isRepositoryEndpoint.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/Client.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/createClient.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/helpers/asText.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/richtext/asText.js","../../components/Icons/TailArrow.tsx","../../components/Icons/ArrowRight.tsx","../../components/Icons/ArrowTail.tsx","../../components/Header/components/HeaderNav.tsx","../../components/Icons/ArrowTop.tsx","../../components/AddressInfo/AddressInfo.tsx","../node_modules/@airdao/ui-library/src/components/Header/assets/copy.svg","../node_modules/@airdao/ui-library/src/components/Header/assets/airdao.svg","../node_modules/@airdao/ui-library/src/components/Header/assets/logout.svg","../node_modules/@airdao/ui-library/src/components/Modal_V2/assets/close-icon.svg","../../components/Modal_V2/Modal.tsx","../../components/ConnectWallet/index.tsx","../node_modules/@airdao/ui-library/src/components/ConnectWallet/assets/airdao.svg","../node_modules/@airdao/ui-library/src/components/ConnectWallet/assets/arrow-right.svg","../../components/ConnectWalletModal/ConnectWalletModal.tsx","../../constants.ts","../../utils/formatAmount.ts","../node_modules/@airdao/ui-library/src/utils/wagmiConnectors/icons/walletconnect-icon.svg","../node_modules/@airdao/ui-library/src/utils/wagmiConnectors/icons/metamask-icon.svg","../node_modules/@airdao/ui-library/src/utils/wagmiConnectors/icons/safepal-icon.svg","../node_modules/@airdao/ui-library/src/utils/wagmiConnectors/icons/bitget-icon.svg","../node_modules/@airdao/ui-library/src/utils/wagmiConnectors/icons/gateweb3-icon.svg","../../utils/wagmiConnectors/names.ts","../../utils/wagmiConnectors/icons.ts","../../utils/wagmiConnectors/overrideIconInConnector.ts","../../utils/wagmiConnectors/mockedConnectors.ts","../../components/Header/components/HeaderBody.tsx","../node_modules/@airdao/ui-library/src/components/Header/assets/logo.svg","../node_modules/@airdao/ui-library/src/components/Header/assets/pocket.svg","../node_modules/@airdao/ui-library/src/components/Header/assets/cross.svg","../node_modules/@airdao/ui-library/src/components/Header/assets/hamburger.svg","../../hooks/useIsMobilePlatform.ts","../../hooks/useWindowSize.ts","../../hooks/useFilteredConnectors.ts","../../hooks/useEthersAdapter.ts","../../components/Header/prismic.ts","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/getRepositoryName.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/getRepositoryEndpoint.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/isRepositoryName.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/helpers/asLink.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/helpers/documentToLinkField.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/minifyGraphQLQuery.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/cookie.js","../node_modules/@airdao/ui-library/node_modules/@prismicio/client/dist/lib/castThunk.js","../../components/Header/Header.tsx","../node_modules/wagmi/src/hooks/useDisconnect.ts","../node_modules/wagmi/src/hooks/useBalance.ts","../../components/Modal/Modal.tsx","../node_modules/@airdao/ui-library/src/components/Modal/assets/cross.svg","../../components/Notification/components/Content.tsx","../node_modules/@airdao/ui-library/node_modules/clsx/dist/clsx.m.js","../node_modules/@airdao/ui-library/node_modules/react-toastify/dist/react-toastify.esm.mjs","../../components/Notification/assets/error.tsx","../../components/Notification/assets/info.tsx","../../components/Notification/assets/success.tsx","../../components/Notification/assets/warning.tsx","../../components/Spinner/Spinner.tsx","../../components/Notification/Notify.tsx","../../components/Notification/components/CloseButton.tsx","../node_modules/@airdao/ui-library/src/components/Notification/assets/close.svg","../../components/Notification/NotificationContainer.tsx","../../components/Tooltip/getPosition.ts","../../components/Tooltip/Tooltip.tsx","../../components/Textarea/Textarea.tsx","../../hooks/useClickOutside.ts","../node_modules/@airdao/ui-library/src/components/ConnectWallet_old/assets/airdao-icon.svg","../node_modules/@airdao/ui-library/src/components/ConnectWallet_old/assets/metamask.svg","../node_modules/@airdao/ui-library/src/components/ConnectWallet_old/assets/arrow.svg","../../components/ConnectWallet_old/ConnectWallet_old.tsx","../node_modules/@airdao/ui-library/src/components/ConnectWallet_old/assets/safepal.svg","../node_modules/@airdao/ui-library/src/components/ConnectWallet_old/assets/wallet-connect.svg","../../components/ConnectWalletModal_old/ConnectWalletModal_old.tsx","../../components/Badge/Badge.tsx","../../components/Radio/Radio.tsx","../../components/Checkbox/Checkbox.tsx","../../components/InlineLoader/InlineLoader.tsx","../../contexts/ConnectWalletModalProvider/context.ts","../../contexts/ConnectWalletModalProvider/provider.tsx","assets/svg/status-check.svg","assets/icons/amb.svg","assets/icons/eth.svg","assets/icons/bnb.svg","assets/icons/bsc.svg","assets/icons/usdc.svg","assets/icons/busd.svg","assets/icons/usdt.svg","components/NetworkOrTokenIcon.js","utils/networks.js","../node_modules/@ethersproject/providers/src.ts/browser-ws.ts","../node_modules/@ethersproject/providers/src.ts/websocket-provider.ts","../node_modules/@ethersproject/providers/src.ts/url-json-rpc-provider.ts","../node_modules/@ethersproject/providers/src.ts/infura-provider.ts","utils/providers.js","utils/nativeTokens.js","utils/helpers/getTransferredTokens.js","contexts/ConfigContext/context.js","hooks/useTokens.js","pages/Status.js","assets/svg/exchange__swap-button.svg","assets/svg/history.svg","components/InlineLoader.js","assets/svg/chevron.svg","hooks/useClickOutside.js","assets/svg/selected.svg","pages/Exchange/Dropdown.js","pages/Exchange/NetworkSelect.js","pages/Exchange/ExchangeField.js","../node_modules/@ethersproject/bignumber/src.ts/fixednumber.ts","../node_modules/@ethersproject/units/src.ts/index.ts","../node_modules/@ethersproject/units/src.ts/_version.ts","../node_modules/@ethersproject/abi/node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/abi/node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/abi/src.ts/_version.ts","../node_modules/@ethersproject/abi/src.ts/coders/abstract-coder.ts","../node_modules/@ethersproject/abi/src.ts/coders/address.ts","../node_modules/@ethersproject/abi/src.ts/coders/anonymous.ts","../node_modules/@ethersproject/abi/src.ts/coders/array.ts","../node_modules/@ethersproject/abi/src.ts/coders/boolean.ts","../node_modules/@ethersproject/abi/src.ts/coders/bytes.ts","../node_modules/@ethersproject/abi/src.ts/coders/fixed-bytes.ts","../node_modules/@ethersproject/abi/src.ts/coders/null.ts","../node_modules/@ethersproject/abi/src.ts/coders/number.ts","../node_modules/@ethersproject/abi/src.ts/coders/string.ts","../node_modules/@ethersproject/abi/src.ts/coders/tuple.ts","../node_modules/@ethersproject/abi/src.ts/fragments.ts","../node_modules/@ethersproject/abi/src.ts/abi-coder.ts","../node_modules/@ethersproject/abi/src.ts/interface.ts","../node_modules/@ethersproject/contracts/node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/contracts/node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/contracts/src.ts/index.ts","../node_modules/@ethersproject/contracts/src.ts/_version.ts","utils/ethers/getTokenBalance.js","utils/ethers/validateTransactionAmount.js","pages/Exchange/ReceiveField.js","utils/getFee.js","utils/helpers/formatAmount.js","hooks/usePrevious.js","hooks/useSelectedTokens.js","hooks/useCoinBalance.js","contracts/index.js","hooks/useBridges.js","hooks/useSetMax.js","hooks/useAvailableForTransferTokens.js","components/AmountInput.js","pages/Exchange/CurrencyInput.js","pages/Exchange/Exchange.js","../../contexts/ConnectWalletModalProvider/hook.ts","../../hooks/useSwitchToConfiguredChain.ts","pages/Exchange/index.js","assets/svg/heading-bg.svg","components/Heading.js","assets/svg/info-icon.svg","assets/svg/chat-help-icon.svg","components/Layout.js","utils/ethers/increaseAllowanceIfNeeded.js","utils/ethers/withdrawCoins.js","contexts/ErrorContext/context.js","hooks/useError.js","assets/svg/circle-loader.svg","pages/Confirmation.js","assets/svg/arrow-up-right.svg","utils/helpers/getTxLink.js","components/TransactionListItem.js","pages/TransactionList.js","utils/helpers/formatBridgesFromConfig.js","utils/helpers/formatNewTokenList.js","contexts/ConfigContext/provider.js","contexts/ErrorContext/provider.js","hooks/useUnsupportedChainError.js","pages/NotFound.js","hooks/useGtag.js","../node_modules/@tanstack/query-core/src/queryCache.ts","../node_modules/@tanstack/query-core/src/mutationCache.ts","../node_modules/@tanstack/query-core/src/infiniteQueryBehavior.ts","../node_modules/viem/utils/chain/defineChain.ts","../node_modules/viem/chains/definitions/mainnet.ts","../node_modules/viem/chains/definitions/bsc.ts","../node_modules/viem/chains/definitions/sepolia.ts","../node_modules/viem/chains/definitions/bscTestnet.ts","../node_modules/@wagmi/connectors/src/walletConnect.ts","../node_modules/@wagmi/core/src/utils/extractRpcUrls.ts","../node_modules/mipd/src/store.ts","../node_modules/mipd/src/utils.ts","../node_modules/zustand/esm/middleware.mjs","../node_modules/zustand/esm/vanilla.mjs","../node_modules/viem/utils/promise/withTimeout.ts","../node_modules/@wagmi/core/src/connectors/injected.ts","../node_modules/@wagmi/core/src/createEmitter.ts","../node_modules/@wagmi/core/src/utils/deserialize.ts","../node_modules/@wagmi/core/src/utils/serialize.ts","../node_modules/@wagmi/core/src/createStorage.ts","../node_modules/@wagmi/core/src/utils/uid.ts","../node_modules/viem/errors/transport.ts","../node_modules/viem/utils/rpc/id.ts","../node_modules/viem/clients/transports/http.ts","../node_modules/viem/utils/rpc/http.ts","utils/wagmiConfig.js","../node_modules/@wagmi/core/src/createConfig.ts","Main.js","../node_modules/@tanstack/query-core/src/queryClient.ts","index.js"],"sourcesContent":["'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,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(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"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(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 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(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={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,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({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});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){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 wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){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 a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3 &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","// TODO: This looks cool. Need to check the performance of `new RegExp` versus defined inline though.\n// https://twitter.com/GabrielVergnaud/status/1622906834343366657\nexport function execTyped(regex: RegExp, string: string) {\n const match = regex.exec(string)\n return match?.groups as type | undefined\n}\n\n// `bytes`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/\n\n// `(u)int`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex =\n /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/\n\nexport const isTupleRegex = /^\\(.+?\\).*?$/\n","import type { Address } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Account } from '../types.js'\n\nexport type ParseAccountErrorType = ErrorType\n\nexport function parseAccount(\n account: accountOrAddress,\n): accountOrAddress extends Address ? Account : accountOrAddress {\n if (typeof account === 'string')\n return { address: account, type: 'json-rpc' } as any\n return account as any\n}\n","import type { AbiStateMutability } from '../../abi.js'\nimport { execTyped } from '../../regex.js'\nimport type {\n EventModifier,\n FunctionModifier,\n Modifier,\n} from '../types/signatures.js'\n\n// https://regexr.com/7gmok\nconst errorSignatureRegex =\n /^error (?[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?.*?)\\)$/\nexport function isErrorSignature(signature: string) {\n return errorSignatureRegex.test(signature)\n}\nexport function execErrorSignature(signature: string) {\n return execTyped<{ name: string; parameters: string }>(\n errorSignatureRegex,\n signature,\n )\n}\n\n// https://regexr.com/7gmoq\nconst eventSignatureRegex =\n /^event (?[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?.*?)\\)$/\nexport function isEventSignature(signature: string) {\n return eventSignatureRegex.test(signature)\n}\nexport function execEventSignature(signature: string) {\n return execTyped<{ name: string; parameters: string }>(\n eventSignatureRegex,\n signature,\n )\n}\n\n// https://regexr.com/7gmot\nconst functionSignatureRegex =\n /^function (?[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?.*?)\\)(?: (?external|public{1}))?(?: (?pure|view|nonpayable|payable{1}))?(?: returns\\s?\\((?.*?)\\))?$/\nexport function isFunctionSignature(signature: string) {\n return functionSignatureRegex.test(signature)\n}\nexport function execFunctionSignature(signature: string) {\n return execTyped<{\n name: string\n parameters: string\n stateMutability?: AbiStateMutability\n returns?: string\n }>(functionSignatureRegex, signature)\n}\n\n// https://regexr.com/7gmp3\nconst structSignatureRegex =\n /^struct (?[a-zA-Z$_][a-zA-Z0-9$_]*) \\{(?.*?)\\}$/\nexport function isStructSignature(signature: string) {\n return structSignatureRegex.test(signature)\n}\nexport function execStructSignature(signature: string) {\n return execTyped<{ name: string; properties: string }>(\n structSignatureRegex,\n signature,\n )\n}\n\n// https://regexr.com/78u01\nconst constructorSignatureRegex =\n /^constructor\\((?.*?)\\)(?:\\s(?payable{1}))?$/\nexport function isConstructorSignature(signature: string) {\n return constructorSignatureRegex.test(signature)\n}\nexport function execConstructorSignature(signature: string) {\n return execTyped<{\n parameters: string\n stateMutability?: Extract\n }>(constructorSignatureRegex, signature)\n}\n\n// https://regexr.com/7srtn\nconst fallbackSignatureRegex =\n /^fallback\\(\\) external(?:\\s(?payable{1}))?$/\nexport function isFallbackSignature(signature: string) {\n return fallbackSignatureRegex.test(signature)\n}\n\n// https://regexr.com/78u1k\nconst receiveSignatureRegex = /^receive\\(\\) external payable$/\nexport function isReceiveSignature(signature: string) {\n return receiveSignatureRegex.test(signature)\n}\n\nexport const modifiers = new Set([\n 'memory',\n 'indexed',\n 'storage',\n 'calldata',\n])\nexport const eventModifiers = new Set(['indexed'])\nexport const functionModifiers = new Set([\n 'calldata',\n 'memory',\n 'storage',\n])\n","import type { OneOf, Pretty } from './types.js'\nimport { version } from './version.js'\n\ntype BaseErrorArgs = Pretty<\n {\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n } & OneOf<{ details?: string | undefined } | { cause?: BaseError | Error }>\n>\n\nexport class BaseError extends Error {\n details: string\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n shortMessage: string\n\n override name = 'AbiTypeError'\n\n constructor(shortMessage: string, args: BaseErrorArgs = {}) {\n const details =\n args.cause instanceof BaseError\n ? args.cause.details\n : args.cause?.message\n ? args.cause.message\n : args.details!\n const docsPath =\n args.cause instanceof BaseError\n ? args.cause.docsPath || args.docsPath\n : args.docsPath\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsPath ? [`Docs: https://abitype.dev${docsPath}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n `Version: abitype@${version}`,\n ].join('\\n')\n\n super(message)\n\n if (args.cause) this.cause = args.cause\n this.details = details\n this.docsPath = docsPath\n this.metaMessages = args.metaMessages\n this.shortMessage = shortMessage\n }\n}\n","import { BaseError } from '../../errors.js'\n\nexport class InvalidAbiItemError extends BaseError {\n override name = 'InvalidAbiItemError'\n\n constructor({ signature }: { signature: string | object }) {\n super('Failed to parse ABI item.', {\n details: `parseAbiItem(${JSON.stringify(signature, null, 2)})`,\n docsPath: '/api/human#parseabiitem-1',\n })\n }\n}\n\nexport class UnknownTypeError extends BaseError {\n override name = 'UnknownTypeError'\n\n constructor({ type }: { type: string }) {\n super('Unknown type.', {\n metaMessages: [\n `Type \"${type}\" is not a valid ABI type. Perhaps you forgot to include a struct signature?`,\n ],\n })\n }\n}\n\nexport class UnknownSolidityTypeError extends BaseError {\n override name = 'UnknownSolidityTypeError'\n\n constructor({ type }: { type: string }) {\n super('Unknown type.', {\n metaMessages: [`Type \"${type}\" is not a valid ABI type.`],\n })\n }\n}\n","import type { AbiItemType, AbiParameter } from '../../abi.js'\nimport { BaseError } from '../../errors.js'\nimport type { Modifier } from '../types/signatures.js'\n\nexport class InvalidAbiParameterError extends BaseError {\n override name = 'InvalidAbiParameterError'\n\n constructor({ param }: { param: string | object }) {\n super('Failed to parse ABI parameter.', {\n details: `parseAbiParameter(${JSON.stringify(param, null, 2)})`,\n docsPath: '/api/human#parseabiparameter-1',\n })\n }\n}\n\nexport class InvalidAbiParametersError extends BaseError {\n override name = 'InvalidAbiParametersError'\n\n constructor({ params }: { params: string | object }) {\n super('Failed to parse ABI parameters.', {\n details: `parseAbiParameters(${JSON.stringify(params, null, 2)})`,\n docsPath: '/api/human#parseabiparameters-1',\n })\n }\n}\n\nexport class InvalidParameterError extends BaseError {\n override name = 'InvalidParameterError'\n\n constructor({ param }: { param: string }) {\n super('Invalid ABI parameter.', {\n details: param,\n })\n }\n}\n\nexport class SolidityProtectedKeywordError extends BaseError {\n override name = 'SolidityProtectedKeywordError'\n\n constructor({ param, name }: { param: string; name: string }) {\n super('Invalid ABI parameter.', {\n details: param,\n metaMessages: [\n `\"${name}\" is a protected Solidity keyword. More info: https://docs.soliditylang.org/en/latest/cheatsheet.html`,\n ],\n })\n }\n}\n\nexport class InvalidModifierError extends BaseError {\n override name = 'InvalidModifierError'\n\n constructor({\n param,\n type,\n modifier,\n }: {\n param: string\n type?: AbiItemType | 'struct' | undefined\n modifier: Modifier\n }) {\n super('Invalid ABI parameter.', {\n details: param,\n metaMessages: [\n `Modifier \"${modifier}\" not allowed${\n type ? ` in \"${type}\" type` : ''\n }.`,\n ],\n })\n }\n}\n\nexport class InvalidFunctionModifierError extends BaseError {\n override name = 'InvalidFunctionModifierError'\n\n constructor({\n param,\n type,\n modifier,\n }: {\n param: string\n type?: AbiItemType | 'struct' | undefined\n modifier: Modifier\n }) {\n super('Invalid ABI parameter.', {\n details: param,\n metaMessages: [\n `Modifier \"${modifier}\" not allowed${\n type ? ` in \"${type}\" type` : ''\n }.`,\n `Data location can only be specified for array, struct, or mapping types, but \"${modifier}\" was given.`,\n ],\n })\n }\n}\n\nexport class InvalidAbiTypeParameterError extends BaseError {\n override name = 'InvalidAbiTypeParameterError'\n\n constructor({\n abiParameter,\n }: {\n abiParameter: AbiParameter & { indexed?: boolean | undefined }\n }) {\n super('Invalid ABI parameter.', {\n details: JSON.stringify(abiParameter, null, 2),\n metaMessages: ['ABI parameter type is invalid.'],\n })\n }\n}\n","import type { AbiItemType } from '../../abi.js'\nimport { BaseError } from '../../errors.js'\n\nexport class InvalidSignatureError extends BaseError {\n override name = 'InvalidSignatureError'\n\n constructor({\n signature,\n type,\n }: {\n signature: string\n type: AbiItemType | 'struct'\n }) {\n super(`Invalid ${type} signature.`, {\n details: signature,\n })\n }\n}\n\nexport class UnknownSignatureError extends BaseError {\n override name = 'UnknownSignatureError'\n\n constructor({ signature }: { signature: string }) {\n super('Unknown signature.', {\n details: signature,\n })\n }\n}\n\nexport class InvalidStructSignatureError extends BaseError {\n override name = 'InvalidStructSignatureError'\n\n constructor({ signature }: { signature: string }) {\n super('Invalid struct signature.', {\n details: signature,\n metaMessages: ['No properties exist.'],\n })\n }\n}\n","import { BaseError } from '../../errors.js'\n\nexport class CircularReferenceError extends BaseError {\n override name = 'CircularReferenceError'\n\n constructor({ type }: { type: string }) {\n super('Circular reference detected.', {\n metaMessages: [`Struct \"${type}\" is a circular reference.`],\n })\n }\n}\n","import { BaseError } from '../../errors.js'\n\nexport class InvalidParenthesisError extends BaseError {\n override name = 'InvalidParenthesisError'\n\n constructor({ current, depth }: { current: string; depth: number }) {\n super('Unbalanced parentheses.', {\n metaMessages: [\n `\"${current.trim()}\" has too many ${\n depth > 0 ? 'opening' : 'closing'\n } parentheses.`,\n ],\n details: `Depth \"${depth}\"`,\n })\n }\n}\n","import type { AbiItemType, AbiParameter } from '../../abi.js'\n\n/**\n * Gets {@link parameterCache} cache key namespaced by {@link type}. This prevents parameters from being accessible to types that don't allow them (e.g. `string indexed foo` not allowed outside of `type: 'event'`).\n * @param param ABI parameter string\n * @param type ABI parameter type\n * @returns Cache key for {@link parameterCache}\n */\nexport function getParameterCacheKey(\n param: string,\n type?: AbiItemType | 'struct',\n) {\n if (type) return `${type}:${param}`\n return param\n}\n\n/**\n * Basic cache seeded with common ABI parameter strings.\n *\n * **Note: When seeding more parameters, make sure you benchmark performance. The current number is the ideal balance between performance and having an already existing cache.**\n */\nexport const parameterCache = new Map<\n string,\n AbiParameter & { indexed?: boolean }\n>([\n // Unnamed\n ['address', { type: 'address' }],\n ['bool', { type: 'bool' }],\n ['bytes', { type: 'bytes' }],\n ['bytes32', { type: 'bytes32' }],\n ['int', { type: 'int256' }],\n ['int256', { type: 'int256' }],\n ['string', { type: 'string' }],\n ['uint', { type: 'uint256' }],\n ['uint8', { type: 'uint8' }],\n ['uint16', { type: 'uint16' }],\n ['uint24', { type: 'uint24' }],\n ['uint32', { type: 'uint32' }],\n ['uint64', { type: 'uint64' }],\n ['uint96', { type: 'uint96' }],\n ['uint112', { type: 'uint112' }],\n ['uint160', { type: 'uint160' }],\n ['uint192', { type: 'uint192' }],\n ['uint256', { type: 'uint256' }],\n\n // Named\n ['address owner', { type: 'address', name: 'owner' }],\n ['address to', { type: 'address', name: 'to' }],\n ['bool approved', { type: 'bool', name: 'approved' }],\n ['bytes _data', { type: 'bytes', name: '_data' }],\n ['bytes data', { type: 'bytes', name: 'data' }],\n ['bytes signature', { type: 'bytes', name: 'signature' }],\n ['bytes32 hash', { type: 'bytes32', name: 'hash' }],\n ['bytes32 r', { type: 'bytes32', name: 'r' }],\n ['bytes32 root', { type: 'bytes32', name: 'root' }],\n ['bytes32 s', { type: 'bytes32', name: 's' }],\n ['string name', { type: 'string', name: 'name' }],\n ['string symbol', { type: 'string', name: 'symbol' }],\n ['string tokenURI', { type: 'string', name: 'tokenURI' }],\n ['uint tokenId', { type: 'uint256', name: 'tokenId' }],\n ['uint8 v', { type: 'uint8', name: 'v' }],\n ['uint256 balance', { type: 'uint256', name: 'balance' }],\n ['uint256 tokenId', { type: 'uint256', name: 'tokenId' }],\n ['uint256 value', { type: 'uint256', name: 'value' }],\n\n // Indexed\n [\n 'event:address indexed from',\n { type: 'address', name: 'from', indexed: true },\n ],\n ['event:address indexed to', { type: 'address', name: 'to', indexed: true }],\n [\n 'event:uint indexed tokenId',\n { type: 'uint256', name: 'tokenId', indexed: true },\n ],\n [\n 'event:uint256 indexed tokenId',\n { type: 'uint256', name: 'tokenId', indexed: true },\n ],\n])\n","import type {\n AbiItemType,\n AbiType,\n SolidityArray,\n SolidityBytes,\n SolidityString,\n SolidityTuple,\n} from '../../abi.js'\nimport {\n bytesRegex,\n execTyped,\n integerRegex,\n isTupleRegex,\n} from '../../regex.js'\nimport { UnknownSolidityTypeError } from '../errors/abiItem.js'\nimport {\n InvalidFunctionModifierError,\n InvalidModifierError,\n InvalidParameterError,\n SolidityProtectedKeywordError,\n} from '../errors/abiParameter.js'\nimport {\n InvalidSignatureError,\n UnknownSignatureError,\n} from '../errors/signature.js'\nimport { InvalidParenthesisError } from '../errors/splitParameters.js'\nimport type { FunctionModifier, Modifier } from '../types/signatures.js'\nimport type { StructLookup } from '../types/structs.js'\nimport { getParameterCacheKey, parameterCache } from './cache.js'\nimport {\n eventModifiers,\n execConstructorSignature,\n execErrorSignature,\n execEventSignature,\n execFunctionSignature,\n functionModifiers,\n isConstructorSignature,\n isErrorSignature,\n isEventSignature,\n isFallbackSignature,\n isFunctionSignature,\n isReceiveSignature,\n} from './signatures.js'\n\nexport function parseSignature(signature: string, structs: StructLookup = {}) {\n if (isFunctionSignature(signature)) {\n const match = execFunctionSignature(signature)\n if (!match) throw new InvalidSignatureError({ signature, type: 'function' })\n\n const inputParams = splitParameters(match.parameters)\n const inputs = []\n const inputLength = inputParams.length\n for (let i = 0; i < inputLength; i++) {\n inputs.push(\n parseAbiParameter(inputParams[i]!, {\n modifiers: functionModifiers,\n structs,\n type: 'function',\n }),\n )\n }\n\n const outputs = []\n if (match.returns) {\n const outputParams = splitParameters(match.returns)\n const outputLength = outputParams.length\n for (let i = 0; i < outputLength; i++) {\n outputs.push(\n parseAbiParameter(outputParams[i]!, {\n modifiers: functionModifiers,\n structs,\n type: 'function',\n }),\n )\n }\n }\n\n return {\n name: match.name,\n type: 'function',\n stateMutability: match.stateMutability ?? 'nonpayable',\n inputs,\n outputs,\n }\n }\n\n if (isEventSignature(signature)) {\n const match = execEventSignature(signature)\n if (!match) throw new InvalidSignatureError({ signature, type: 'event' })\n\n const params = splitParameters(match.parameters)\n const abiParameters = []\n const length = params.length\n for (let i = 0; i < length; i++) {\n abiParameters.push(\n parseAbiParameter(params[i]!, {\n modifiers: eventModifiers,\n structs,\n type: 'event',\n }),\n )\n }\n return { name: match.name, type: 'event', inputs: abiParameters }\n }\n\n if (isErrorSignature(signature)) {\n const match = execErrorSignature(signature)\n if (!match) throw new InvalidSignatureError({ signature, type: 'error' })\n\n const params = splitParameters(match.parameters)\n const abiParameters = []\n const length = params.length\n for (let i = 0; i < length; i++) {\n abiParameters.push(\n parseAbiParameter(params[i]!, { structs, type: 'error' }),\n )\n }\n return { name: match.name, type: 'error', inputs: abiParameters }\n }\n\n if (isConstructorSignature(signature)) {\n const match = execConstructorSignature(signature)\n if (!match)\n throw new InvalidSignatureError({ signature, type: 'constructor' })\n\n const params = splitParameters(match.parameters)\n const abiParameters = []\n const length = params.length\n for (let i = 0; i < length; i++) {\n abiParameters.push(\n parseAbiParameter(params[i]!, { structs, type: 'constructor' }),\n )\n }\n return {\n type: 'constructor',\n stateMutability: match.stateMutability ?? 'nonpayable',\n inputs: abiParameters,\n }\n }\n\n if (isFallbackSignature(signature)) return { type: 'fallback' }\n if (isReceiveSignature(signature))\n return {\n type: 'receive',\n stateMutability: 'payable',\n }\n\n throw new UnknownSignatureError({ signature })\n}\n\nconst abiParameterWithoutTupleRegex =\n /^(?[a-zA-Z$_][a-zA-Z0-9$_]*)(?(?:\\[\\d*?\\])+?)?(?:\\s(?calldata|indexed|memory|storage{1}))?(?:\\s(?[a-zA-Z$_][a-zA-Z0-9$_]*))?$/\nconst abiParameterWithTupleRegex =\n /^\\((?.+?)\\)(?(?:\\[\\d*?\\])+?)?(?:\\s(?calldata|indexed|memory|storage{1}))?(?:\\s(?[a-zA-Z$_][a-zA-Z0-9$_]*))?$/\nconst dynamicIntegerRegex = /^u?int$/\n\ntype ParseOptions = {\n modifiers?: Set\n structs?: StructLookup\n type?: AbiItemType | 'struct'\n}\n\nexport function parseAbiParameter(param: string, options?: ParseOptions) {\n // optional namespace cache by `type`\n const parameterCacheKey = getParameterCacheKey(param, options?.type)\n if (parameterCache.has(parameterCacheKey))\n return parameterCache.get(parameterCacheKey)!\n\n const isTuple = isTupleRegex.test(param)\n const match = execTyped<{\n array?: string\n modifier?: Modifier\n name?: string\n type: string\n }>(\n isTuple ? abiParameterWithTupleRegex : abiParameterWithoutTupleRegex,\n param,\n )\n if (!match) throw new InvalidParameterError({ param })\n\n if (match.name && isSolidityKeyword(match.name))\n throw new SolidityProtectedKeywordError({ param, name: match.name })\n\n const name = match.name ? { name: match.name } : {}\n const indexed = match.modifier === 'indexed' ? { indexed: true } : {}\n const structs = options?.structs ?? {}\n let type: string\n let components = {}\n if (isTuple) {\n type = 'tuple'\n const params = splitParameters(match.type)\n const components_ = []\n const length = params.length\n for (let i = 0; i < length; i++) {\n // remove `modifiers` from `options` to prevent from being added to tuple components\n components_.push(parseAbiParameter(params[i]!, { structs }))\n }\n components = { components: components_ }\n } else if (match.type in structs) {\n type = 'tuple'\n components = { components: structs[match.type] }\n } else if (dynamicIntegerRegex.test(match.type)) {\n type = `${match.type}256`\n } else {\n type = match.type\n if (!(options?.type === 'struct') && !isSolidityType(type))\n throw new UnknownSolidityTypeError({ type })\n }\n\n if (match.modifier) {\n // Check if modifier exists, but is not allowed (e.g. `indexed` in `functionModifiers`)\n if (!options?.modifiers?.has?.(match.modifier))\n throw new InvalidModifierError({\n param,\n type: options?.type,\n modifier: match.modifier,\n })\n\n // Check if resolved `type` is valid if there is a function modifier\n if (\n functionModifiers.has(match.modifier as FunctionModifier) &&\n !isValidDataLocation(type, !!match.array)\n )\n throw new InvalidFunctionModifierError({\n param,\n type: options?.type,\n modifier: match.modifier,\n })\n }\n\n const abiParameter = {\n type: `${type}${match.array ?? ''}`,\n ...name,\n ...indexed,\n ...components,\n }\n parameterCache.set(parameterCacheKey, abiParameter)\n return abiParameter\n}\n\n// s/o latika for this\nexport function splitParameters(\n params: string,\n result: string[] = [],\n current = '',\n depth = 0,\n): readonly string[] {\n const length = params.trim().length\n // biome-ignore lint/correctness/noUnreachable: recursive\n for (let i = 0; i < length; i++) {\n const char = params[i]\n const tail = params.slice(i + 1)\n switch (char) {\n case ',':\n return depth === 0\n ? splitParameters(tail, [...result, current.trim()])\n : splitParameters(tail, result, `${current}${char}`, depth)\n case '(':\n return splitParameters(tail, result, `${current}${char}`, depth + 1)\n case ')':\n return splitParameters(tail, result, `${current}${char}`, depth - 1)\n default:\n return splitParameters(tail, result, `${current}${char}`, depth)\n }\n }\n\n if (current === '') return result\n if (depth !== 0) throw new InvalidParenthesisError({ current, depth })\n\n result.push(current.trim())\n return result\n}\n\nexport function isSolidityType(\n type: string,\n): type is Exclude {\n return (\n type === 'address' ||\n type === 'bool' ||\n type === 'function' ||\n type === 'string' ||\n bytesRegex.test(type) ||\n integerRegex.test(type)\n )\n}\n\nconst protectedKeywordsRegex =\n /^(?:after|alias|anonymous|apply|auto|byte|calldata|case|catch|constant|copyof|default|defined|error|event|external|false|final|function|immutable|implements|in|indexed|inline|internal|let|mapping|match|memory|mutable|null|of|override|partial|private|promise|public|pure|reference|relocatable|return|returns|sizeof|static|storage|struct|super|supports|switch|this|true|try|typedef|typeof|var|view|virtual)$/\n\n/** @internal */\nexport function isSolidityKeyword(name: string) {\n return (\n name === 'address' ||\n name === 'bool' ||\n name === 'function' ||\n name === 'string' ||\n name === 'tuple' ||\n bytesRegex.test(name) ||\n integerRegex.test(name) ||\n protectedKeywordsRegex.test(name)\n )\n}\n\n/** @internal */\nexport function isValidDataLocation(\n type: string,\n isArray: boolean,\n): type is Exclude<\n AbiType,\n SolidityString | Extract | SolidityArray\n> {\n return isArray || type === 'bytes' || type === 'string' || type === 'tuple'\n}\n","import type { AbiParameter } from '../../abi.js'\nimport { execTyped, isTupleRegex } from '../../regex.js'\nimport { UnknownTypeError } from '../errors/abiItem.js'\nimport { InvalidAbiTypeParameterError } from '../errors/abiParameter.js'\nimport {\n InvalidSignatureError,\n InvalidStructSignatureError,\n} from '../errors/signature.js'\nimport { CircularReferenceError } from '../errors/struct.js'\nimport type { StructLookup } from '../types/structs.js'\nimport { execStructSignature, isStructSignature } from './signatures.js'\nimport { isSolidityType, parseAbiParameter } from './utils.js'\n\nexport function parseStructs(signatures: readonly string[]) {\n // Create \"shallow\" version of each struct (and filter out non-structs or invalid structs)\n const shallowStructs: StructLookup = {}\n const signaturesLength = signatures.length\n for (let i = 0; i < signaturesLength; i++) {\n const signature = signatures[i]!\n if (!isStructSignature(signature)) continue\n\n const match = execStructSignature(signature)\n if (!match) throw new InvalidSignatureError({ signature, type: 'struct' })\n\n const properties = match.properties.split(';')\n\n const components: AbiParameter[] = []\n const propertiesLength = properties.length\n for (let k = 0; k < propertiesLength; k++) {\n const property = properties[k]!\n const trimmed = property.trim()\n if (!trimmed) continue\n const abiParameter = parseAbiParameter(trimmed, {\n type: 'struct',\n })\n components.push(abiParameter)\n }\n\n if (!components.length) throw new InvalidStructSignatureError({ signature })\n shallowStructs[match.name] = components\n }\n\n // Resolve nested structs inside each parameter\n const resolvedStructs: StructLookup = {}\n const entries = Object.entries(shallowStructs)\n const entriesLength = entries.length\n for (let i = 0; i < entriesLength; i++) {\n const [name, parameters] = entries[i]!\n resolvedStructs[name] = resolveStructs(parameters, shallowStructs)\n }\n\n return resolvedStructs\n}\n\nconst typeWithoutTupleRegex =\n /^(?[a-zA-Z$_][a-zA-Z0-9$_]*)(?(?:\\[\\d*?\\])+?)?$/\n\nfunction resolveStructs(\n abiParameters: readonly (AbiParameter & { indexed?: true })[],\n structs: StructLookup,\n ancestors = new Set(),\n) {\n const components: AbiParameter[] = []\n const length = abiParameters.length\n for (let i = 0; i < length; i++) {\n const abiParameter = abiParameters[i]!\n const isTuple = isTupleRegex.test(abiParameter.type)\n if (isTuple) components.push(abiParameter)\n else {\n const match = execTyped<{ array?: string; type: string }>(\n typeWithoutTupleRegex,\n abiParameter.type,\n )\n if (!match?.type) throw new InvalidAbiTypeParameterError({ abiParameter })\n\n const { array, type } = match\n if (type in structs) {\n if (ancestors.has(type)) throw new CircularReferenceError({ type })\n\n components.push({\n ...abiParameter,\n type: `tuple${array ?? ''}`,\n components: resolveStructs(\n structs[type] ?? [],\n structs,\n new Set([...ancestors, type]),\n ),\n })\n } else {\n if (isSolidityType(type)) components.push(abiParameter)\n else throw new UnknownTypeError({ type })\n }\n }\n }\n\n return components\n}\n","import type { Abi } from '../abi.js'\nimport type { Error, Filter } from '../types.js'\nimport { isStructSignature } from './runtime/signatures.js'\nimport { parseStructs } from './runtime/structs.js'\nimport { parseSignature } from './runtime/utils.js'\nimport type { Signatures } from './types/signatures.js'\nimport type { ParseStructs } from './types/structs.js'\nimport type { ParseSignature } from './types/utils.js'\n\n/**\n * Parses human-readable ABI into JSON {@link Abi}\n *\n * @param signatures - Human-readable ABI\n * @returns Parsed {@link Abi}\n *\n * @example\n * type Result = ParseAbi<\n * // ^? type Result = readonly [{ name: \"balanceOf\"; type: \"function\"; stateMutability:...\n * [\n * 'function balanceOf(address owner) view returns (uint256)',\n * 'event Transfer(address indexed from, address indexed to, uint256 amount)',\n * ]\n * >\n */\nexport type ParseAbi =\n string[] extends signatures\n ? Abi // If `T` was not able to be inferred (e.g. just `string[]`), return `Abi`\n : signatures extends readonly string[]\n ? signatures extends Signatures // Validate signatures\n ? ParseStructs extends infer sructs\n ? {\n [key in keyof signatures]: signatures[key] extends string\n ? ParseSignature\n : never\n } extends infer mapped extends readonly unknown[]\n ? Filter extends infer result\n ? result extends readonly []\n ? never\n : result\n : never\n : never\n : never\n : never\n : never\n\n/**\n * Parses human-readable ABI into JSON {@link Abi}\n *\n * @param signatures - Human-Readable ABI\n * @returns Parsed {@link Abi}\n *\n * @example\n * const abi = parseAbi([\n * // ^? const abi: readonly [{ name: \"balanceOf\"; type: \"function\"; stateMutability:...\n * 'function balanceOf(address owner) view returns (uint256)',\n * 'event Transfer(address indexed from, address indexed to, uint256 amount)',\n * ])\n */\nexport function parseAbi(\n signatures: signatures['length'] extends 0\n ? Error<'At least one signature required'>\n : Signatures extends signatures\n ? signatures\n : Signatures,\n): ParseAbi {\n const structs = parseStructs(signatures as readonly string[])\n const abi = []\n const length = signatures.length as number\n for (let i = 0; i < length; i++) {\n const signature = (signatures as readonly string[])[i]!\n if (isStructSignature(signature)) continue\n abi.push(parseSignature(signature, structs))\n }\n return abi as unknown as ParseAbi\n}\n","export const aggregate3Signature = '0x82ad56cb'\n","export const deploylessCallViaBytecodeBytecode =\n '0x608060405234801561001057600080fd5b5060405161018e38038061018e83398101604081905261002f91610124565b6000808351602085016000f59050803b61004857600080fd5b6000808351602085016000855af16040513d6000823e81610067573d81fd5b3d81f35b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009257600080fd5b81516001600160401b038111156100ab576100ab61006b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d9576100d961006b565b6040528181528382016020018510156100f157600080fd5b60005b82811015610110576020818601810151838301820152016100f4565b506000918101602001919091529392505050565b6000806040838503121561013757600080fd5b82516001600160401b0381111561014d57600080fd5b61015985828601610081565b602085015190935090506001600160401b0381111561017757600080fd5b61018385828601610081565b915050925092905056fe'\n\nexport const deploylessCallViaFactoryBytecode =\n '0x608060405234801561001057600080fd5b506040516102c03803806102c083398101604081905261002f916101e6565b836001600160a01b03163b6000036100e457600080836001600160a01b03168360405161005c9190610270565b6000604051808303816000865af19150503d8060008114610099576040519150601f19603f3d011682016040523d82523d6000602084013e61009e565b606091505b50915091508115806100b857506001600160a01b0386163b155b156100e1578060405163101bb98d60e01b81526004016100d8919061028c565b60405180910390fd5b50505b6000808451602086016000885af16040513d6000823e81610103573d81fd5b3d81f35b80516001600160a01b038116811461011e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561015457818101518382015260200161013c565b50506000910152565b600082601f83011261016e57600080fd5b81516001600160401b0381111561018757610187610123565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101b5576101b5610123565b6040528181528382016020018510156101cd57600080fd5b6101de826020830160208701610139565b949350505050565b600080600080608085870312156101fc57600080fd5b61020585610107565b60208601519094506001600160401b0381111561022157600080fd5b61022d8782880161015d565b93505061023c60408601610107565b60608601519092506001600160401b0381111561025857600080fd5b6102648782880161015d565b91505092959194509250565b60008251610282818460208701610139565b9190910192915050565b60208152600082518060208401526102ab816040850160208701610139565b601f01601f1916919091016040019291505056fe'\n\nexport const universalSignatureValidatorByteCode =\n '0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572'\n","import type { Abi } from 'abitype'\n\nimport {\n AbiConstructorNotFoundError,\n type AbiConstructorNotFoundErrorType,\n AbiConstructorParamsNotFoundError,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ContractConstructorArgs } from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { UnionEvaluate } from '../../types/utils.js'\nimport { type ConcatHexErrorType, concatHex } from '../data/concat.js'\nimport {\n type EncodeAbiParametersErrorType,\n encodeAbiParameters,\n} from './encodeAbiParameters.js'\n\nconst docsPath = '/docs/contract/encodeDeployData'\n\nexport type EncodeDeployDataParameters<\n abi extends Abi | readonly unknown[] = Abi,\n ///\n hasConstructor = abi extends Abi\n ? Abi extends abi\n ? true\n : [Extract] extends [never]\n ? false\n : true\n : true,\n allArgs = ContractConstructorArgs,\n> = {\n abi: abi\n bytecode: Hex\n} & UnionEvaluate<\n hasConstructor extends false\n ? { args?: undefined }\n : readonly [] extends allArgs\n ? { args?: allArgs | undefined }\n : { args: allArgs }\n>\n\nexport type EncodeDeployDataReturnType = Hex\n\nexport type EncodeDeployDataErrorType =\n | AbiConstructorNotFoundErrorType\n | ConcatHexErrorType\n | EncodeAbiParametersErrorType\n | ErrorType\n\nexport function encodeDeployData(\n parameters: EncodeDeployDataParameters,\n): EncodeDeployDataReturnType {\n const { abi, args, bytecode } = parameters as EncodeDeployDataParameters\n if (!args || args.length === 0) return bytecode\n\n const description = abi.find((x) => 'type' in x && x.type === 'constructor')\n if (!description) throw new AbiConstructorNotFoundError({ docsPath })\n if (!('inputs' in description))\n throw new AbiConstructorParamsNotFoundError({ docsPath })\n if (!description.inputs || description.inputs.length === 0)\n throw new AbiConstructorParamsNotFoundError({ docsPath })\n\n const data = encodeAbiParameters(description.inputs, args)\n return concatHex([bytecode, data!])\n}\n","import { formatGwei } from '../utils/unit/formatGwei.js'\n\nimport { BaseError } from './base.js'\n\n/**\n * geth: https://github.com/ethereum/go-ethereum/blob/master/core/error.go\n * https://github.com/ethereum/go-ethereum/blob/master/core/types/transaction.go#L34-L41\n *\n * erigon: https://github.com/ledgerwatch/erigon/blob/master/core/error.go\n * https://github.com/ledgerwatch/erigon/blob/master/core/types/transaction.go#L41-L46\n *\n * anvil: https://github.com/foundry-rs/foundry/blob/master/anvil/src/eth/error.rs#L108\n */\nexport type ExecutionRevertedErrorType = ExecutionRevertedError & {\n code: 3\n name: 'ExecutionRevertedError'\n}\nexport class ExecutionRevertedError extends BaseError {\n static code = 3\n static nodeMessage = /execution reverted/\n\n constructor({\n cause,\n message,\n }: { cause?: BaseError | undefined; message?: string | undefined } = {}) {\n const reason = message\n ?.replace('execution reverted: ', '')\n ?.replace('execution reverted', '')\n super(\n `Execution reverted ${\n reason ? `with reason: ${reason}` : 'for an unknown reason'\n }.`,\n {\n cause,\n name: 'ExecutionRevertedError',\n },\n )\n }\n}\n\nexport type FeeCapTooHighErrorType = FeeCapTooHighError & {\n name: 'FeeCapTooHighError'\n}\nexport class FeeCapTooHighError extends BaseError {\n static nodeMessage =\n /max fee per gas higher than 2\\^256-1|fee cap higher than 2\\^256-1/\n constructor({\n cause,\n maxFeePerGas,\n }: {\n cause?: BaseError | undefined\n maxFeePerGas?: bigint | undefined\n } = {}) {\n super(\n `The fee cap (\\`maxFeePerGas\\`${\n maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : ''\n }) cannot be higher than the maximum allowed value (2^256-1).`,\n {\n cause,\n name: 'FeeCapTooHighError',\n },\n )\n }\n}\n\nexport type FeeCapTooLowErrorType = FeeCapTooLowError & {\n name: 'FeeCapTooLowError'\n}\nexport class FeeCapTooLowError extends BaseError {\n static nodeMessage =\n /max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/\n constructor({\n cause,\n maxFeePerGas,\n }: {\n cause?: BaseError | undefined\n maxFeePerGas?: bigint | undefined\n } = {}) {\n super(\n `The fee cap (\\`maxFeePerGas\\`${\n maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)}` : ''\n } gwei) cannot be lower than the block base fee.`,\n {\n cause,\n name: 'FeeCapTooLowError',\n },\n )\n }\n}\n\nexport type NonceTooHighErrorType = NonceTooHighError & {\n name: 'NonceTooHighError'\n}\nexport class NonceTooHighError extends BaseError {\n static nodeMessage = /nonce too high/\n constructor({\n cause,\n nonce,\n }: { cause?: BaseError | undefined; nonce?: number | undefined } = {}) {\n super(\n `Nonce provided for the transaction ${\n nonce ? `(${nonce}) ` : ''\n }is higher than the next one expected.`,\n { cause, name: 'NonceTooHighError' },\n )\n }\n}\n\nexport type NonceTooLowErrorType = NonceTooLowError & {\n name: 'NonceTooLowError'\n}\nexport class NonceTooLowError extends BaseError {\n static nodeMessage =\n /nonce too low|transaction already imported|already known/\n constructor({\n cause,\n nonce,\n }: { cause?: BaseError | undefined; nonce?: number | undefined } = {}) {\n super(\n [\n `Nonce provided for the transaction ${\n nonce ? `(${nonce}) ` : ''\n }is lower than the current nonce of the account.`,\n 'Try increasing the nonce or find the latest nonce with `getTransactionCount`.',\n ].join('\\n'),\n { cause, name: 'NonceTooLowError' },\n )\n }\n}\n\nexport type NonceMaxValueErrorType = NonceMaxValueError & {\n name: 'NonceMaxValueError'\n}\nexport class NonceMaxValueError extends BaseError {\n static nodeMessage = /nonce has max value/\n constructor({\n cause,\n nonce,\n }: { cause?: BaseError | undefined; nonce?: number | undefined } = {}) {\n super(\n `Nonce provided for the transaction ${\n nonce ? `(${nonce}) ` : ''\n }exceeds the maximum allowed nonce.`,\n { cause, name: 'NonceMaxValueError' },\n )\n }\n}\n\nexport type InsufficientFundsErrorType = InsufficientFundsError & {\n name: 'InsufficientFundsError'\n}\nexport class InsufficientFundsError extends BaseError {\n static nodeMessage =\n /insufficient funds|exceeds transaction sender account balance/\n constructor({ cause }: { cause?: BaseError | undefined } = {}) {\n super(\n [\n 'The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.',\n ].join('\\n'),\n {\n cause,\n metaMessages: [\n 'This error could arise when the account does not have enough funds to:',\n ' - pay for the total gas fee,',\n ' - pay for the value to send.',\n ' ',\n 'The cost of the transaction is calculated as `gas * gas fee + value`, where:',\n ' - `gas` is the amount of gas needed for transaction to execute,',\n ' - `gas fee` is the gas fee,',\n ' - `value` is the amount of ether to send to the recipient.',\n ],\n name: 'InsufficientFundsError',\n },\n )\n }\n}\n\nexport type IntrinsicGasTooHighErrorType = IntrinsicGasTooHighError & {\n name: 'IntrinsicGasTooHighError'\n}\nexport class IntrinsicGasTooHighError extends BaseError {\n static nodeMessage = /intrinsic gas too high|gas limit reached/\n constructor({\n cause,\n gas,\n }: { cause?: BaseError | undefined; gas?: bigint | undefined } = {}) {\n super(\n `The amount of gas ${\n gas ? `(${gas}) ` : ''\n }provided for the transaction exceeds the limit allowed for the block.`,\n {\n cause,\n name: 'IntrinsicGasTooHighError',\n },\n )\n }\n}\n\nexport type IntrinsicGasTooLowErrorType = IntrinsicGasTooLowError & {\n name: 'IntrinsicGasTooLowError'\n}\nexport class IntrinsicGasTooLowError extends BaseError {\n static nodeMessage = /intrinsic gas too low/\n constructor({\n cause,\n gas,\n }: { cause?: BaseError | undefined; gas?: bigint | undefined } = {}) {\n super(\n `The amount of gas ${\n gas ? `(${gas}) ` : ''\n }provided for the transaction is too low.`,\n {\n cause,\n name: 'IntrinsicGasTooLowError',\n },\n )\n }\n}\n\nexport type TransactionTypeNotSupportedErrorType =\n TransactionTypeNotSupportedError & {\n name: 'TransactionTypeNotSupportedError'\n }\nexport class TransactionTypeNotSupportedError extends BaseError {\n static nodeMessage = /transaction type not valid/\n constructor({ cause }: { cause?: BaseError | undefined }) {\n super('The transaction type is not supported for this chain.', {\n cause,\n name: 'TransactionTypeNotSupportedError',\n })\n }\n}\n\nexport type TipAboveFeeCapErrorType = TipAboveFeeCapError & {\n name: 'TipAboveFeeCapError'\n}\nexport class TipAboveFeeCapError extends BaseError {\n static nodeMessage =\n /max priority fee per gas higher than max fee per gas|tip higher than fee cap/\n constructor({\n cause,\n maxPriorityFeePerGas,\n maxFeePerGas,\n }: {\n cause?: BaseError | undefined\n maxPriorityFeePerGas?: bigint | undefined\n maxFeePerGas?: bigint | undefined\n } = {}) {\n super(\n [\n `The provided tip (\\`maxPriorityFeePerGas\\`${\n maxPriorityFeePerGas\n ? ` = ${formatGwei(maxPriorityFeePerGas)} gwei`\n : ''\n }) cannot be higher than the fee cap (\\`maxFeePerGas\\`${\n maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : ''\n }).`,\n ].join('\\n'),\n {\n cause,\n name: 'TipAboveFeeCapError',\n },\n )\n }\n}\n\nexport type UnknownNodeErrorType = UnknownNodeError & {\n name: 'UnknownNodeError'\n}\nexport class UnknownNodeError extends BaseError {\n constructor({ cause }: { cause?: BaseError | undefined }) {\n super(`An error occurred while executing: ${cause?.shortMessage}`, {\n cause,\n name: 'UnknownNodeError',\n })\n }\n}\n","import type { CallParameters } from '../../actions/public/call.js'\nimport type { BaseError } from '../../errors/base.js'\nimport {\n CallExecutionError,\n type CallExecutionErrorType,\n} from '../../errors/contract.js'\nimport { UnknownNodeError } from '../../errors/node.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\n\nimport {\n type GetNodeErrorParameters,\n type GetNodeErrorReturnType,\n getNodeError,\n} from './getNodeError.js'\n\nexport type GetCallErrorReturnType = Omit<\n CallExecutionErrorType,\n 'cause'\n> & {\n cause: cause | GetNodeErrorReturnType\n}\n\nexport function getCallError>(\n err: err,\n {\n docsPath,\n ...args\n }: CallParameters & {\n chain?: Chain | undefined\n docsPath?: string | undefined\n },\n): GetCallErrorReturnType {\n const cause = (() => {\n const cause = getNodeError(\n err as {} as BaseError,\n args as GetNodeErrorParameters,\n )\n if (cause instanceof UnknownNodeError) return err as {} as BaseError\n return cause\n })()\n return new CallExecutionError(cause, {\n docsPath,\n ...args,\n }) as GetCallErrorReturnType\n}\n","import type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js'\nimport { BaseError } from '../../errors/base.js'\nimport {\n ExecutionRevertedError,\n type ExecutionRevertedErrorType,\n FeeCapTooHighError,\n type FeeCapTooHighErrorType,\n FeeCapTooLowError,\n type FeeCapTooLowErrorType,\n InsufficientFundsError,\n type InsufficientFundsErrorType,\n IntrinsicGasTooHighError,\n type IntrinsicGasTooHighErrorType,\n IntrinsicGasTooLowError,\n type IntrinsicGasTooLowErrorType,\n NonceMaxValueError,\n type NonceMaxValueErrorType,\n NonceTooHighError,\n type NonceTooHighErrorType,\n NonceTooLowError,\n type NonceTooLowErrorType,\n TipAboveFeeCapError,\n type TipAboveFeeCapErrorType,\n TransactionTypeNotSupportedError,\n type TransactionTypeNotSupportedErrorType,\n UnknownNodeError,\n type UnknownNodeErrorType,\n} from '../../errors/node.js'\nimport { RpcRequestError } from '../../errors/request.js'\nimport {\n InvalidInputRpcError,\n TransactionRejectedRpcError,\n} from '../../errors/rpc.js'\nimport type { ExactPartial } from '../../types/utils.js'\n\nexport function containsNodeError(err: BaseError) {\n return (\n err instanceof TransactionRejectedRpcError ||\n err instanceof InvalidInputRpcError ||\n (err instanceof RpcRequestError && err.code === ExecutionRevertedError.code)\n )\n}\n\nexport type GetNodeErrorParameters = ExactPartial<\n SendTransactionParameters\n>\n\nexport type GetNodeErrorReturnType =\n | ExecutionRevertedErrorType\n | FeeCapTooHighErrorType\n | FeeCapTooLowErrorType\n | NonceTooHighErrorType\n | NonceTooLowErrorType\n | NonceMaxValueErrorType\n | InsufficientFundsErrorType\n | IntrinsicGasTooHighErrorType\n | IntrinsicGasTooLowErrorType\n | TransactionTypeNotSupportedErrorType\n | TipAboveFeeCapErrorType\n | UnknownNodeErrorType\n\nexport function getNodeError(\n err: BaseError,\n args: GetNodeErrorParameters,\n): GetNodeErrorReturnType {\n const message = (err.details || '').toLowerCase()\n\n const executionRevertedError =\n err instanceof BaseError\n ? err.walk(\n (e) =>\n (e as { code: number } | null | undefined)?.code ===\n ExecutionRevertedError.code,\n )\n : err\n if (executionRevertedError instanceof BaseError)\n return new ExecutionRevertedError({\n cause: err,\n message: executionRevertedError.details,\n }) as any\n if (ExecutionRevertedError.nodeMessage.test(message))\n return new ExecutionRevertedError({\n cause: err,\n message: err.details,\n }) as any\n if (FeeCapTooHighError.nodeMessage.test(message))\n return new FeeCapTooHighError({\n cause: err,\n maxFeePerGas: args?.maxFeePerGas,\n }) as any\n if (FeeCapTooLowError.nodeMessage.test(message))\n return new FeeCapTooLowError({\n cause: err,\n maxFeePerGas: args?.maxFeePerGas,\n }) as any\n if (NonceTooHighError.nodeMessage.test(message))\n return new NonceTooHighError({ cause: err, nonce: args?.nonce }) as any\n if (NonceTooLowError.nodeMessage.test(message))\n return new NonceTooLowError({ cause: err, nonce: args?.nonce }) as any\n if (NonceMaxValueError.nodeMessage.test(message))\n return new NonceMaxValueError({ cause: err, nonce: args?.nonce }) as any\n if (InsufficientFundsError.nodeMessage.test(message))\n return new InsufficientFundsError({ cause: err }) as any\n if (IntrinsicGasTooHighError.nodeMessage.test(message))\n return new IntrinsicGasTooHighError({ cause: err, gas: args?.gas }) as any\n if (IntrinsicGasTooLowError.nodeMessage.test(message))\n return new IntrinsicGasTooLowError({ cause: err, gas: args?.gas }) as any\n if (TransactionTypeNotSupportedError.nodeMessage.test(message))\n return new TransactionTypeNotSupportedError({ cause: err }) as any\n if (TipAboveFeeCapError.nodeMessage.test(message))\n return new TipAboveFeeCapError({\n cause: err,\n maxFeePerGas: args?.maxFeePerGas,\n maxPriorityFeePerGas: args?.maxPriorityFeePerGas,\n }) as any\n return new UnknownNodeError({\n cause: err,\n }) as any\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ChainFormatter } from '../../types/chain.js'\n\nexport type ExtractErrorType = ErrorType\n\n/**\n * @description Picks out the keys from `value` that exist in the formatter..\n */\nexport function extract(\n value_: Record,\n { format }: { format?: ChainFormatter['format'] | undefined },\n) {\n if (!format) return {}\n\n const value: Record = {}\n function extract_(formatted: Record) {\n const keys = Object.keys(formatted)\n for (const key of keys) {\n if (key in value_) value[key] = value_[key]\n if (\n formatted[key] &&\n typeof formatted[key] === 'object' &&\n !Array.isArray(formatted[key])\n )\n extract_(formatted[key])\n }\n }\n\n const formatted = format(value_ || {})\n extract_(formatted)\n\n return value\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { AuthorizationList } from '../../experimental/eip7702/types/authorization.js'\nimport type { RpcAuthorizationList } from '../../experimental/eip7702/types/rpc.js'\nimport type {\n Chain,\n ExtractChainFormatterParameters,\n} from '../../types/chain.js'\nimport type { ByteArray } from '../../types/misc.js'\nimport type { RpcTransactionRequest } from '../../types/rpc.js'\nimport type { TransactionRequest } from '../../types/transaction.js'\nimport type { ExactPartial } from '../../types/utils.js'\nimport { bytesToHex, numberToHex } from '../encoding/toHex.js'\nimport { type DefineFormatterErrorType, defineFormatter } from './formatter.js'\n\nexport type FormattedTransactionRequest<\n chain extends Chain | undefined = Chain | undefined,\n> = ExtractChainFormatterParameters<\n chain,\n 'transactionRequest',\n TransactionRequest\n>\n\nexport const rpcTransactionType = {\n legacy: '0x0',\n eip2930: '0x1',\n eip1559: '0x2',\n eip4844: '0x3',\n eip7702: '0x4',\n} as const\n\nexport type FormatTransactionRequestErrorType = ErrorType\n\nexport function formatTransactionRequest(\n request: ExactPartial,\n) {\n const rpcRequest = {} as RpcTransactionRequest\n\n if (typeof request.authorizationList !== 'undefined')\n rpcRequest.authorizationList = formatAuthorizationList(\n request.authorizationList,\n )\n if (typeof request.accessList !== 'undefined')\n rpcRequest.accessList = request.accessList\n if (typeof request.blobVersionedHashes !== 'undefined')\n rpcRequest.blobVersionedHashes = request.blobVersionedHashes\n if (typeof request.blobs !== 'undefined') {\n if (typeof request.blobs[0] !== 'string')\n rpcRequest.blobs = (request.blobs as ByteArray[]).map((x) =>\n bytesToHex(x),\n )\n else rpcRequest.blobs = request.blobs\n }\n if (typeof request.data !== 'undefined') rpcRequest.data = request.data\n if (typeof request.from !== 'undefined') rpcRequest.from = request.from\n if (typeof request.gas !== 'undefined')\n rpcRequest.gas = numberToHex(request.gas)\n if (typeof request.gasPrice !== 'undefined')\n rpcRequest.gasPrice = numberToHex(request.gasPrice)\n if (typeof request.maxFeePerBlobGas !== 'undefined')\n rpcRequest.maxFeePerBlobGas = numberToHex(request.maxFeePerBlobGas)\n if (typeof request.maxFeePerGas !== 'undefined')\n rpcRequest.maxFeePerGas = numberToHex(request.maxFeePerGas)\n if (typeof request.maxPriorityFeePerGas !== 'undefined')\n rpcRequest.maxPriorityFeePerGas = numberToHex(request.maxPriorityFeePerGas)\n if (typeof request.nonce !== 'undefined')\n rpcRequest.nonce = numberToHex(request.nonce)\n if (typeof request.to !== 'undefined') rpcRequest.to = request.to\n if (typeof request.type !== 'undefined')\n rpcRequest.type = rpcTransactionType[request.type]\n if (typeof request.value !== 'undefined')\n rpcRequest.value = numberToHex(request.value)\n\n return rpcRequest\n}\n\nexport type DefineTransactionRequestErrorType =\n | DefineFormatterErrorType\n | ErrorType\n\nexport const defineTransactionRequest = /*#__PURE__*/ defineFormatter(\n 'transactionRequest',\n formatTransactionRequest,\n)\n\n//////////////////////////////////////////////////////////////////////////////\n\nfunction formatAuthorizationList(\n authorizationList: AuthorizationList,\n): RpcAuthorizationList {\n return authorizationList.map(\n (authorization) =>\n ({\n address: authorization.contractAddress,\n r: authorization.r,\n s: authorization.s,\n chainId: numberToHex(authorization.chainId),\n nonce: numberToHex(authorization.nonce),\n ...(typeof authorization.yParity !== 'undefined'\n ? { yParity: numberToHex(authorization.yParity) }\n : {}),\n ...(typeof authorization.v !== 'undefined' &&\n typeof authorization.yParity === 'undefined'\n ? { v: numberToHex(authorization.v) }\n : {}),\n }) as any,\n ) as RpcAuthorizationList\n}\n","import {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../errors/address.js'\nimport {\n InvalidBytesLengthError,\n type InvalidBytesLengthErrorType,\n} from '../errors/data.js'\nimport {\n AccountStateConflictError,\n type AccountStateConflictErrorType,\n StateAssignmentConflictError,\n type StateAssignmentConflictErrorType,\n} from '../errors/stateOverride.js'\nimport type {\n RpcAccountStateOverride,\n RpcStateMapping,\n RpcStateOverride,\n} from '../types/rpc.js'\nimport type { StateMapping, StateOverride } from '../types/stateOverride.js'\nimport { isAddress } from './address/isAddress.js'\nimport { type NumberToHexErrorType, numberToHex } from './encoding/toHex.js'\n\ntype SerializeStateMappingParameters = StateMapping | undefined\n\ntype SerializeStateMappingErrorType = InvalidBytesLengthErrorType\n\n/** @internal */\nexport function serializeStateMapping(\n stateMapping: SerializeStateMappingParameters,\n): RpcStateMapping | undefined {\n if (!stateMapping || stateMapping.length === 0) return undefined\n return stateMapping.reduce((acc, { slot, value }) => {\n if (slot.length !== 66)\n throw new InvalidBytesLengthError({\n size: slot.length,\n targetSize: 66,\n type: 'hex',\n })\n if (value.length !== 66)\n throw new InvalidBytesLengthError({\n size: value.length,\n targetSize: 66,\n type: 'hex',\n })\n acc[slot] = value\n return acc\n }, {} as RpcStateMapping)\n}\n\ntype SerializeAccountStateOverrideParameters = Omit<\n StateOverride[number],\n 'address'\n>\n\ntype SerializeAccountStateOverrideErrorType =\n | NumberToHexErrorType\n | StateAssignmentConflictErrorType\n | SerializeStateMappingErrorType\n\n/** @internal */\nexport function serializeAccountStateOverride(\n parameters: SerializeAccountStateOverrideParameters,\n): RpcAccountStateOverride {\n const { balance, nonce, state, stateDiff, code } = parameters\n const rpcAccountStateOverride: RpcAccountStateOverride = {}\n if (code !== undefined) rpcAccountStateOverride.code = code\n if (balance !== undefined)\n rpcAccountStateOverride.balance = numberToHex(balance)\n if (nonce !== undefined) rpcAccountStateOverride.nonce = numberToHex(nonce)\n if (state !== undefined)\n rpcAccountStateOverride.state = serializeStateMapping(state)\n if (stateDiff !== undefined) {\n if (rpcAccountStateOverride.state) throw new StateAssignmentConflictError()\n rpcAccountStateOverride.stateDiff = serializeStateMapping(stateDiff)\n }\n return rpcAccountStateOverride\n}\n\ntype SerializeStateOverrideParameters = StateOverride | undefined\n\nexport type SerializeStateOverrideErrorType =\n | InvalidAddressErrorType\n | AccountStateConflictErrorType\n | SerializeAccountStateOverrideErrorType\n\n/** @internal */\nexport function serializeStateOverride(\n parameters?: SerializeStateOverrideParameters,\n): RpcStateOverride | undefined {\n if (!parameters) return undefined\n const rpcStateOverride: RpcStateOverride = {}\n for (const { address, ...accountState } of parameters) {\n if (!isAddress(address, { strict: false }))\n throw new InvalidAddressError({ address })\n if (rpcStateOverride[address])\n throw new AccountStateConflictError({ address: address })\n rpcStateOverride[address] = serializeAccountStateOverride(accountState)\n }\n return rpcStateOverride\n}\n","export const maxInt8 = 2n ** (8n - 1n) - 1n\nexport const maxInt16 = 2n ** (16n - 1n) - 1n\nexport const maxInt24 = 2n ** (24n - 1n) - 1n\nexport const maxInt32 = 2n ** (32n - 1n) - 1n\nexport const maxInt40 = 2n ** (40n - 1n) - 1n\nexport const maxInt48 = 2n ** (48n - 1n) - 1n\nexport const maxInt56 = 2n ** (56n - 1n) - 1n\nexport const maxInt64 = 2n ** (64n - 1n) - 1n\nexport const maxInt72 = 2n ** (72n - 1n) - 1n\nexport const maxInt80 = 2n ** (80n - 1n) - 1n\nexport const maxInt88 = 2n ** (88n - 1n) - 1n\nexport const maxInt96 = 2n ** (96n - 1n) - 1n\nexport const maxInt104 = 2n ** (104n - 1n) - 1n\nexport const maxInt112 = 2n ** (112n - 1n) - 1n\nexport const maxInt120 = 2n ** (120n - 1n) - 1n\nexport const maxInt128 = 2n ** (128n - 1n) - 1n\nexport const maxInt136 = 2n ** (136n - 1n) - 1n\nexport const maxInt144 = 2n ** (144n - 1n) - 1n\nexport const maxInt152 = 2n ** (152n - 1n) - 1n\nexport const maxInt160 = 2n ** (160n - 1n) - 1n\nexport const maxInt168 = 2n ** (168n - 1n) - 1n\nexport const maxInt176 = 2n ** (176n - 1n) - 1n\nexport const maxInt184 = 2n ** (184n - 1n) - 1n\nexport const maxInt192 = 2n ** (192n - 1n) - 1n\nexport const maxInt200 = 2n ** (200n - 1n) - 1n\nexport const maxInt208 = 2n ** (208n - 1n) - 1n\nexport const maxInt216 = 2n ** (216n - 1n) - 1n\nexport const maxInt224 = 2n ** (224n - 1n) - 1n\nexport const maxInt232 = 2n ** (232n - 1n) - 1n\nexport const maxInt240 = 2n ** (240n - 1n) - 1n\nexport const maxInt248 = 2n ** (248n - 1n) - 1n\nexport const maxInt256 = 2n ** (256n - 1n) - 1n\n\nexport const minInt8 = -(2n ** (8n - 1n))\nexport const minInt16 = -(2n ** (16n - 1n))\nexport const minInt24 = -(2n ** (24n - 1n))\nexport const minInt32 = -(2n ** (32n - 1n))\nexport const minInt40 = -(2n ** (40n - 1n))\nexport const minInt48 = -(2n ** (48n - 1n))\nexport const minInt56 = -(2n ** (56n - 1n))\nexport const minInt64 = -(2n ** (64n - 1n))\nexport const minInt72 = -(2n ** (72n - 1n))\nexport const minInt80 = -(2n ** (80n - 1n))\nexport const minInt88 = -(2n ** (88n - 1n))\nexport const minInt96 = -(2n ** (96n - 1n))\nexport const minInt104 = -(2n ** (104n - 1n))\nexport const minInt112 = -(2n ** (112n - 1n))\nexport const minInt120 = -(2n ** (120n - 1n))\nexport const minInt128 = -(2n ** (128n - 1n))\nexport const minInt136 = -(2n ** (136n - 1n))\nexport const minInt144 = -(2n ** (144n - 1n))\nexport const minInt152 = -(2n ** (152n - 1n))\nexport const minInt160 = -(2n ** (160n - 1n))\nexport const minInt168 = -(2n ** (168n - 1n))\nexport const minInt176 = -(2n ** (176n - 1n))\nexport const minInt184 = -(2n ** (184n - 1n))\nexport const minInt192 = -(2n ** (192n - 1n))\nexport const minInt200 = -(2n ** (200n - 1n))\nexport const minInt208 = -(2n ** (208n - 1n))\nexport const minInt216 = -(2n ** (216n - 1n))\nexport const minInt224 = -(2n ** (224n - 1n))\nexport const minInt232 = -(2n ** (232n - 1n))\nexport const minInt240 = -(2n ** (240n - 1n))\nexport const minInt248 = -(2n ** (248n - 1n))\nexport const minInt256 = -(2n ** (256n - 1n))\n\nexport const maxUint8 = 2n ** 8n - 1n\nexport const maxUint16 = 2n ** 16n - 1n\nexport const maxUint24 = 2n ** 24n - 1n\nexport const maxUint32 = 2n ** 32n - 1n\nexport const maxUint40 = 2n ** 40n - 1n\nexport const maxUint48 = 2n ** 48n - 1n\nexport const maxUint56 = 2n ** 56n - 1n\nexport const maxUint64 = 2n ** 64n - 1n\nexport const maxUint72 = 2n ** 72n - 1n\nexport const maxUint80 = 2n ** 80n - 1n\nexport const maxUint88 = 2n ** 88n - 1n\nexport const maxUint96 = 2n ** 96n - 1n\nexport const maxUint104 = 2n ** 104n - 1n\nexport const maxUint112 = 2n ** 112n - 1n\nexport const maxUint120 = 2n ** 120n - 1n\nexport const maxUint128 = 2n ** 128n - 1n\nexport const maxUint136 = 2n ** 136n - 1n\nexport const maxUint144 = 2n ** 144n - 1n\nexport const maxUint152 = 2n ** 152n - 1n\nexport const maxUint160 = 2n ** 160n - 1n\nexport const maxUint168 = 2n ** 168n - 1n\nexport const maxUint176 = 2n ** 176n - 1n\nexport const maxUint184 = 2n ** 184n - 1n\nexport const maxUint192 = 2n ** 192n - 1n\nexport const maxUint200 = 2n ** 200n - 1n\nexport const maxUint208 = 2n ** 208n - 1n\nexport const maxUint216 = 2n ** 216n - 1n\nexport const maxUint224 = 2n ** 224n - 1n\nexport const maxUint232 = 2n ** 232n - 1n\nexport const maxUint240 = 2n ** 240n - 1n\nexport const maxUint248 = 2n ** 248n - 1n\nexport const maxUint256 = 2n ** 256n - 1n\n","import { type Address, parseAbi } from 'abitype'\n\nimport type { Account } from '../../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport { multicall3Abi } from '../../constants/abis.js'\nimport { aggregate3Signature } from '../../constants/contract.js'\nimport {\n deploylessCallViaBytecodeBytecode,\n deploylessCallViaFactoryBytecode,\n} from '../../constants/contracts.js'\nimport { BaseError } from '../../errors/base.js'\nimport {\n ChainDoesNotSupportContract,\n ClientChainNotConfiguredError,\n} from '../../errors/chain.js'\nimport {\n CounterfactualDeploymentFailedError,\n RawContractError,\n type RawContractErrorType,\n} from '../../errors/contract.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { RpcTransactionRequest } from '../../types/rpc.js'\nimport type { StateOverride } from '../../types/stateOverride.js'\nimport type { TransactionRequest } from '../../types/transaction.js'\nimport type { ExactPartial, UnionOmit } from '../../types/utils.js'\nimport {\n type DecodeFunctionResultErrorType,\n decodeFunctionResult,\n} from '../../utils/abi/decodeFunctionResult.js'\nimport {\n type EncodeDeployDataErrorType,\n encodeDeployData,\n} from '../../utils/abi/encodeDeployData.js'\nimport {\n type EncodeFunctionDataErrorType,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type GetChainContractAddressErrorType,\n getChainContractAddress,\n} from '../../utils/chain/getChainContractAddress.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\nimport {\n type GetCallErrorReturnType,\n getCallError,\n} from '../../utils/errors/getCallError.js'\nimport { extract } from '../../utils/formatters/extract.js'\nimport {\n type FormatTransactionRequestErrorType,\n type FormattedTransactionRequest,\n formatTransactionRequest,\n} from '../../utils/formatters/transactionRequest.js'\nimport {\n type CreateBatchSchedulerErrorType,\n createBatchScheduler,\n} from '../../utils/promise/createBatchScheduler.js'\nimport {\n type SerializeStateOverrideErrorType,\n serializeStateOverride,\n} from '../../utils/stateOverride.js'\nimport { assertRequest } from '../../utils/transaction/assertRequest.js'\nimport type {\n AssertRequestErrorType,\n AssertRequestParameters,\n} from '../../utils/transaction/assertRequest.js'\n\nexport type CallParameters<\n chain extends Chain | undefined = Chain | undefined,\n> = UnionOmit, 'from'> & {\n /** Account attached to the call (msg.sender). */\n account?: Account | Address | undefined\n /** Whether or not to enable multicall batching on this call. */\n batch?: boolean | undefined\n /** Bytecode to perform the call on. */\n code?: Hex | undefined\n /** Contract deployment factory address (ie. Create2 factory, Smart Account factory, etc). */\n factory?: Address | undefined\n /** Calldata to execute on the factory to deploy the contract. */\n factoryData?: Hex | undefined\n /** State overrides for the call. */\n stateOverride?: StateOverride | undefined\n} & (\n | {\n /** The balance of the account at a block number. */\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n | {\n blockNumber?: undefined\n /**\n * The balance of the account at a block tag.\n * @default 'latest'\n */\n blockTag?: BlockTag | undefined\n }\n )\ntype FormattedCall =\n FormattedTransactionRequest\n\nexport type CallReturnType = { data: Hex | undefined }\n\nexport type CallErrorType = GetCallErrorReturnType<\n | ParseAccountErrorType\n | SerializeStateOverrideErrorType\n | AssertRequestErrorType\n | NumberToHexErrorType\n | FormatTransactionRequestErrorType\n | ScheduleMulticallErrorType\n | RequestErrorType\n | ToDeploylessCallViaBytecodeDataErrorType\n | ToDeploylessCallViaFactoryDataErrorType\n>\n\n/**\n * Executes a new message call immediately without submitting a transaction to the network.\n *\n * - Docs: https://viem.sh/docs/actions/public/call\n * - JSON-RPC Methods: [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call)\n *\n * @param client - Client to use\n * @param parameters - {@link CallParameters}\n * @returns The call data. {@link CallReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { call } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const data = await call(client, {\n * account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',\n * data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * })\n */\nexport async function call(\n client: Client,\n args: CallParameters,\n): Promise {\n const {\n account: account_ = client.account,\n batch = Boolean(client.batch?.multicall),\n blockNumber,\n blockTag = 'latest',\n accessList,\n blobs,\n code,\n data: data_,\n factory,\n factoryData,\n gas,\n gasPrice,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n stateOverride,\n ...rest\n } = args\n const account = account_ ? parseAccount(account_) : undefined\n\n if (code && (factory || factoryData))\n throw new BaseError(\n 'Cannot provide both `code` & `factory`/`factoryData` as parameters.',\n )\n if (code && to)\n throw new BaseError('Cannot provide both `code` & `to` as parameters.')\n\n // Check if the call is deployless via bytecode.\n const deploylessCallViaBytecode = code && data_\n // Check if the call is deployless via a factory.\n const deploylessCallViaFactory = factory && factoryData && to && data_\n const deploylessCall = deploylessCallViaBytecode || deploylessCallViaFactory\n\n const data = (() => {\n if (deploylessCallViaBytecode)\n return toDeploylessCallViaBytecodeData({\n code,\n data: data_,\n })\n if (deploylessCallViaFactory)\n return toDeploylessCallViaFactoryData({\n data: data_,\n factory,\n factoryData,\n to,\n })\n return data_\n })()\n\n try {\n assertRequest(args as AssertRequestParameters)\n\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n const block = blockNumberHex || blockTag\n\n const rpcStateOverride = serializeStateOverride(stateOverride)\n\n const chainFormat = client.chain?.formatters?.transactionRequest?.format\n const format = chainFormat || formatTransactionRequest\n\n const request = format({\n // Pick out extra data that might exist on the chain's transaction request type.\n ...extract(rest, { format: chainFormat }),\n from: account?.address,\n accessList,\n blobs,\n data,\n gas,\n gasPrice,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to: deploylessCall ? undefined : to,\n value,\n } as TransactionRequest) as TransactionRequest\n\n if (batch && shouldPerformMulticall({ request }) && !rpcStateOverride) {\n try {\n return await scheduleMulticall(client, {\n ...request,\n blockNumber,\n blockTag,\n } as unknown as ScheduleMulticallParameters)\n } catch (err) {\n if (\n !(err instanceof ClientChainNotConfiguredError) &&\n !(err instanceof ChainDoesNotSupportContract)\n )\n throw err\n }\n }\n\n const response = await client.request({\n method: 'eth_call',\n params: rpcStateOverride\n ? [\n request as ExactPartial,\n block,\n rpcStateOverride,\n ]\n : [request as ExactPartial, block],\n })\n if (response === '0x') return { data: undefined }\n return { data: response }\n } catch (err) {\n const data = getRevertErrorData(err)\n\n // Check for CCIP-Read offchain lookup signature.\n const { offchainLookup, offchainLookupSignature } = await import(\n '../../utils/ccip.js'\n )\n if (\n client.ccipRead !== false &&\n data?.slice(0, 10) === offchainLookupSignature &&\n to\n )\n return { data: await offchainLookup(client, { data, to }) }\n\n // Check for counterfactual deployment error.\n if (deploylessCall && data?.slice(0, 10) === '0x101bb98d')\n throw new CounterfactualDeploymentFailedError({ factory })\n\n throw getCallError(err as ErrorType, {\n ...args,\n account,\n chain: client.chain,\n })\n }\n}\n\n// We only want to perform a scheduled multicall if:\n// - The request has calldata,\n// - The request has a target address,\n// - The target address is not already the aggregate3 signature,\n// - The request has no other properties (`nonce`, `gas`, etc cannot be sent with a multicall).\nfunction shouldPerformMulticall({ request }: { request: TransactionRequest }) {\n const { data, to, ...request_ } = request\n if (!data) return false\n if (data.startsWith(aggregate3Signature)) return false\n if (!to) return false\n if (\n Object.values(request_).filter((x) => typeof x !== 'undefined').length > 0\n )\n return false\n return true\n}\n\ntype ScheduleMulticallParameters = Pick<\n CallParameters,\n 'blockNumber' | 'blockTag'\n> & {\n data: Hex\n multicallAddress?: Address | undefined\n to: Address\n}\n\ntype ScheduleMulticallErrorType =\n | GetChainContractAddressErrorType\n | NumberToHexErrorType\n | CreateBatchSchedulerErrorType\n | EncodeFunctionDataErrorType\n | DecodeFunctionResultErrorType\n | RawContractErrorType\n | ErrorType\n\nasync function scheduleMulticall(\n client: Client,\n args: ScheduleMulticallParameters,\n) {\n const { batchSize = 1024, wait = 0 } =\n typeof client.batch?.multicall === 'object' ? client.batch.multicall : {}\n const {\n blockNumber,\n blockTag = 'latest',\n data,\n multicallAddress: multicallAddress_,\n to,\n } = args\n\n let multicallAddress = multicallAddress_\n if (!multicallAddress) {\n if (!client.chain) throw new ClientChainNotConfiguredError()\n\n multicallAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'multicall3',\n })\n }\n\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n const block = blockNumberHex || blockTag\n\n const { schedule } = createBatchScheduler({\n id: `${client.uid}.${block}`,\n wait,\n shouldSplitBatch(args) {\n const size = args.reduce((size, { data }) => size + (data.length - 2), 0)\n return size > batchSize * 2\n },\n fn: async (\n requests: {\n data: Hex\n to: Address\n }[],\n ) => {\n const calls = requests.map((request) => ({\n allowFailure: true,\n callData: request.data,\n target: request.to,\n }))\n\n const calldata = encodeFunctionData({\n abi: multicall3Abi,\n args: [calls],\n functionName: 'aggregate3',\n })\n\n const data = await client.request({\n method: 'eth_call',\n params: [\n {\n data: calldata,\n to: multicallAddress,\n },\n block,\n ],\n })\n\n return decodeFunctionResult({\n abi: multicall3Abi,\n args: [calls],\n functionName: 'aggregate3',\n data: data || '0x',\n })\n },\n })\n\n const [{ returnData, success }] = await schedule({ data, to })\n\n if (!success) throw new RawContractError({ data: returnData })\n if (returnData === '0x') return { data: undefined }\n return { data: returnData }\n}\n\ntype ToDeploylessCallViaBytecodeDataErrorType =\n | EncodeDeployDataErrorType\n | ErrorType\n\nfunction toDeploylessCallViaBytecodeData(parameters: {\n code: Hex\n data: Hex\n}) {\n const { code, data } = parameters\n return encodeDeployData({\n abi: parseAbi(['constructor(bytes, bytes)']),\n bytecode: deploylessCallViaBytecodeBytecode,\n args: [code, data],\n })\n}\n\ntype ToDeploylessCallViaFactoryDataErrorType =\n | EncodeDeployDataErrorType\n | ErrorType\n\nfunction toDeploylessCallViaFactoryData(parameters: {\n data: Hex\n factory: Address\n factoryData: Hex\n to: Address\n}) {\n const { data, factory, factoryData, to } = parameters\n return encodeDeployData({\n abi: parseAbi(['constructor(address, bytes, address, bytes)']),\n bytecode: deploylessCallViaFactoryBytecode,\n args: [to, data, factory, factoryData],\n })\n}\n\n/** @internal */\nexport type GetRevertErrorDataErrorType = ErrorType\n\n/** @internal */\nexport function getRevertErrorData(err: unknown) {\n if (!(err instanceof BaseError)) return undefined\n const error = err.walk() as RawContractError\n return typeof error?.data === 'object' ? error.data?.data : error.data\n}\n","import {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js'\nimport { maxUint256 } from '../../constants/number.js'\nimport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../../errors/address.js'\nimport {\n FeeCapTooHighError,\n type FeeCapTooHighErrorType,\n TipAboveFeeCapError,\n type TipAboveFeeCapErrorType,\n} from '../../errors/node.js'\nimport {\n FeeConflictError,\n type FeeConflictErrorType,\n} from '../../errors/transaction.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { ExactPartial } from '../../types/utils.js'\nimport { isAddress } from '../address/isAddress.js'\n\nexport type AssertRequestParameters = ExactPartial<\n SendTransactionParameters\n>\n\nexport type AssertRequestErrorType =\n | InvalidAddressErrorType\n | FeeConflictErrorType\n | FeeCapTooHighErrorType\n | ParseAccountErrorType\n | TipAboveFeeCapErrorType\n | ErrorType\n\nexport function assertRequest(args: AssertRequestParameters) {\n const {\n account: account_,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n to,\n } = args\n const account = account_ ? parseAccount(account_) : undefined\n if (account && !isAddress(account.address))\n throw new InvalidAddressError({ address: account.address })\n if (to && !isAddress(to)) throw new InvalidAddressError({ address: to })\n if (\n typeof gasPrice !== 'undefined' &&\n (typeof maxFeePerGas !== 'undefined' ||\n typeof maxPriorityFeePerGas !== 'undefined')\n )\n throw new FeeConflictError()\n\n if (maxFeePerGas && maxFeePerGas > maxUint256)\n throw new FeeCapTooHighError({ maxFeePerGas })\n if (\n maxPriorityFeePerGas &&\n maxFeePerGas &&\n maxPriorityFeePerGas > maxFeePerGas\n )\n throw new TipAboveFeeCapError({ maxFeePerGas, maxPriorityFeePerGas })\n}\n","/* [Multicall3](https://github.com/mds1/multicall) */\nexport const multicall3Abi = [\n {\n inputs: [\n {\n components: [\n {\n name: 'target',\n type: 'address',\n },\n {\n name: 'allowFailure',\n type: 'bool',\n },\n {\n name: 'callData',\n type: 'bytes',\n },\n ],\n name: 'calls',\n type: 'tuple[]',\n },\n ],\n name: 'aggregate3',\n outputs: [\n {\n components: [\n {\n name: 'success',\n type: 'bool',\n },\n {\n name: 'returnData',\n type: 'bytes',\n },\n ],\n name: 'returnData',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n\nconst universalResolverErrors = [\n {\n inputs: [],\n name: 'ResolverNotFound',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ResolverWildcardNotSupported',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ResolverNotContract',\n type: 'error',\n },\n {\n inputs: [\n {\n name: 'returnData',\n type: 'bytes',\n },\n ],\n name: 'ResolverError',\n type: 'error',\n },\n {\n inputs: [\n {\n components: [\n {\n name: 'status',\n type: 'uint16',\n },\n {\n name: 'message',\n type: 'string',\n },\n ],\n name: 'errors',\n type: 'tuple[]',\n },\n ],\n name: 'HttpError',\n type: 'error',\n },\n] as const\n\nexport const universalResolverResolveAbi = [\n ...universalResolverErrors,\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n { name: 'gateways', type: 'string[]' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n] as const\n\nexport const universalResolverReverseAbi = [\n ...universalResolverErrors,\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ type: 'bytes', name: 'reverseName' }],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { type: 'bytes', name: 'reverseName' },\n { type: 'string[]', name: 'gateways' },\n ],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n] as const\n\nexport const textResolverAbi = [\n {\n name: 'text',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes32' },\n { name: 'key', type: 'string' },\n ],\n outputs: [{ name: '', type: 'string' }],\n },\n] as const\n\nexport const addressResolverAbi = [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'name', type: 'bytes32' }],\n outputs: [{ name: '', type: 'address' }],\n },\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes32' },\n { name: 'coinType', type: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bytes' }],\n },\n] as const\n\n// ERC-1271\n// isValidSignature(bytes32 hash, bytes signature) → bytes4 magicValue\n/** @internal */\nexport const smartAccountAbi = [\n {\n name: 'isValidSignature',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'hash', type: 'bytes32' },\n { name: 'signature', type: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4' }],\n },\n] as const\n\n// ERC-6492 - universal deployless signature validator contract\n// constructor(address _signer, bytes32 _hash, bytes _signature) → bytes4 returnValue\n// returnValue is either 0x1 (valid) or 0x0 (invalid)\nexport const universalSignatureValidatorAbi = [\n {\n inputs: [\n {\n name: '_signer',\n type: 'address',\n },\n {\n name: '_hash',\n type: 'bytes32',\n },\n {\n name: '_signature',\n type: 'bytes',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n] as const\n\n/** [ERC-20 Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-20) */\nexport const erc20Abi = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint8',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n] as const\n\n/**\n * [bytes32-flavored ERC-20](https://docs.makerdao.com/smart-contract-modules/mkr-module#4.-gotchas-potential-source-of-user-error)\n * for tokens (ie. Maker) that use bytes32 instead of string.\n */\nexport const erc20Abi_bytes32 = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint8',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'bytes32',\n },\n ],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'bytes32',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n] as const\n\n/** [ERC-721 Non-Fungible Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-721) */\nexport const erc721Abi = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'ApprovalForAll',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'operator',\n type: 'address',\n },\n {\n indexed: false,\n name: 'approved',\n type: 'bool',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: true,\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'getApproved',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'operator',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'ownerOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'id',\n type: 'uint256',\n },\n {\n name: 'data',\n type: 'bytes',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'operator',\n type: 'address',\n },\n {\n name: 'approved',\n type: 'bool',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenByIndex',\n stateMutability: 'view',\n inputs: [\n {\n name: 'index',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenByIndex',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'index',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenURI',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'tokeId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n] as const\n\n/** [ERC-4626 Tokenized Vaults Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-4626) */\nexport const erc4626Abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Approval',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'receiver',\n type: 'address',\n },\n {\n indexed: false,\n name: 'assets',\n type: 'uint256',\n },\n {\n indexed: false,\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Transfer',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'receiver',\n type: 'address',\n },\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: false,\n name: 'assets',\n type: 'uint256',\n },\n {\n indexed: false,\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'Withdraw',\n type: 'event',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'asset',\n outputs: [\n {\n name: 'assetTokenAddress',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'convertToAssets',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'convertToShares',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n ],\n name: 'deposit',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'caller',\n type: 'address',\n },\n ],\n name: 'maxDeposit',\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'caller',\n type: 'address',\n },\n ],\n name: 'maxMint',\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'maxRedeem',\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'maxWithdraw',\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n ],\n name: 'mint',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'previewDeposit',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'previewMint',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'previewRedeem',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'previewWithdraw',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'redeem',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalAssets',\n outputs: [\n {\n name: 'totalManagedAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'withdraw',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","import type { AbiError } from 'abitype'\n\n// https://docs.soliditylang.org/en/v0.8.16/control-structures.html#panic-via-assert-and-error-via-require\nexport const panicReasons = {\n 1: 'An `assert` condition failed.',\n 17: 'Arithmetic operation resulted in underflow or overflow.',\n 18: 'Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).',\n 33: 'Attempted to convert to an invalid type.',\n 34: 'Attempted to access a storage byte array that is incorrectly encoded.',\n 49: 'Performed `.pop()` on an empty array',\n 50: 'Array index is out of bounds.',\n 65: 'Allocated too much memory or created an array which is too large.',\n 81: 'Attempted to call a zero-initialized variable of internal function type.',\n} as const\n\nexport const solidityError: AbiError = {\n inputs: [\n {\n name: 'message',\n type: 'string',\n },\n ],\n name: 'Error',\n type: 'error',\n}\nexport const solidityPanic: AbiError = {\n inputs: [\n {\n name: 'reason',\n type: 'uint256',\n },\n ],\n name: 'Panic',\n type: 'error',\n}\n","export const etherUnits = {\n gwei: 9,\n wei: 18,\n}\nexport const gweiUnits = {\n ether: -9,\n wei: 9,\n}\nexport const weiUnits = {\n ether: -18,\n gwei: -9,\n}\n","import type { Abi, AbiEvent, AbiParameter } from 'abitype'\n\nimport type { Hex } from '../types/misc.js'\nimport { formatAbiItem, formatAbiParams } from '../utils/abi/formatAbiItem.js'\nimport { size } from '../utils/data/size.js'\n\nimport { BaseError } from './base.js'\n\nexport type AbiConstructorNotFoundErrorType = AbiConstructorNotFoundError & {\n name: 'AbiConstructorNotFoundError'\n}\nexport class AbiConstructorNotFoundError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super(\n [\n 'A constructor was not found on the ABI.',\n 'Make sure you are using the correct ABI and that the constructor exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiConstructorNotFoundError',\n },\n )\n }\n}\n\nexport type AbiConstructorParamsNotFoundErrorType =\n AbiConstructorParamsNotFoundError & {\n name: 'AbiConstructorParamsNotFoundError'\n }\n\nexport class AbiConstructorParamsNotFoundError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super(\n [\n 'Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.',\n 'Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiConstructorParamsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiDecodingDataSizeInvalidErrorType =\n AbiDecodingDataSizeInvalidError & {\n name: 'AbiDecodingDataSizeInvalidError'\n }\nexport class AbiDecodingDataSizeInvalidError extends BaseError {\n constructor({ data, size }: { data: Hex; size: number }) {\n super(\n [\n `Data size of ${size} bytes is invalid.`,\n 'Size must be in increments of 32 bytes (size % 32 === 0).',\n ].join('\\n'),\n {\n metaMessages: [`Data: ${data} (${size} bytes)`],\n name: 'AbiDecodingDataSizeInvalidError',\n },\n )\n }\n}\n\nexport type AbiDecodingDataSizeTooSmallErrorType =\n AbiDecodingDataSizeTooSmallError & {\n name: 'AbiDecodingDataSizeTooSmallError'\n }\nexport class AbiDecodingDataSizeTooSmallError extends BaseError {\n data: Hex\n params: readonly AbiParameter[]\n size: number\n\n constructor({\n data,\n params,\n size,\n }: { data: Hex; params: readonly AbiParameter[]; size: number }) {\n super(\n [`Data size of ${size} bytes is too small for given parameters.`].join(\n '\\n',\n ),\n {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'AbiDecodingDataSizeTooSmallError',\n },\n )\n\n this.data = data\n this.params = params\n this.size = size\n }\n}\n\nexport type AbiDecodingZeroDataErrorType = AbiDecodingZeroDataError & {\n name: 'AbiDecodingZeroDataError'\n}\nexport class AbiDecodingZeroDataError extends BaseError {\n constructor() {\n super('Cannot decode zero data (\"0x\") with ABI parameters.', {\n name: 'AbiDecodingZeroDataError',\n })\n }\n}\n\nexport type AbiEncodingArrayLengthMismatchErrorType =\n AbiEncodingArrayLengthMismatchError & {\n name: 'AbiEncodingArrayLengthMismatchError'\n }\nexport class AbiEncodingArrayLengthMismatchError extends BaseError {\n constructor({\n expectedLength,\n givenLength,\n type,\n }: { expectedLength: number; givenLength: number; type: string }) {\n super(\n [\n `ABI encoding array length mismatch for type ${type}.`,\n `Expected length: ${expectedLength}`,\n `Given length: ${givenLength}`,\n ].join('\\n'),\n { name: 'AbiEncodingArrayLengthMismatchError' },\n )\n }\n}\n\nexport type AbiEncodingBytesSizeMismatchErrorType =\n AbiEncodingBytesSizeMismatchError & {\n name: 'AbiEncodingBytesSizeMismatchError'\n }\nexport class AbiEncodingBytesSizeMismatchError extends BaseError {\n constructor({ expectedSize, value }: { expectedSize: number; value: Hex }) {\n super(\n `Size of bytes \"${value}\" (bytes${size(\n value,\n )}) does not match expected size (bytes${expectedSize}).`,\n { name: 'AbiEncodingBytesSizeMismatchError' },\n )\n }\n}\n\nexport type AbiEncodingLengthMismatchErrorType =\n AbiEncodingLengthMismatchError & {\n name: 'AbiEncodingLengthMismatchError'\n }\nexport class AbiEncodingLengthMismatchError extends BaseError {\n constructor({\n expectedLength,\n givenLength,\n }: { expectedLength: number; givenLength: number }) {\n super(\n [\n 'ABI encoding params/values length mismatch.',\n `Expected length (params): ${expectedLength}`,\n `Given length (values): ${givenLength}`,\n ].join('\\n'),\n { name: 'AbiEncodingLengthMismatchError' },\n )\n }\n}\n\nexport type AbiErrorInputsNotFoundErrorType = AbiErrorInputsNotFoundError & {\n name: 'AbiErrorInputsNotFoundError'\n}\nexport class AbiErrorInputsNotFoundError extends BaseError {\n constructor(errorName: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Arguments (\\`args\\`) were provided to \"${errorName}\", but \"${errorName}\" on the ABI does not contain any parameters (\\`inputs\\`).`,\n 'Cannot encode error result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the inputs exist on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorInputsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiErrorNotFoundErrorType = AbiErrorNotFoundError & {\n name: 'AbiErrorNotFoundError'\n}\nexport class AbiErrorNotFoundError extends BaseError {\n constructor(\n errorName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Error ${errorName ? `\"${errorName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorNotFoundError',\n },\n )\n }\n}\n\nexport type AbiErrorSignatureNotFoundErrorType =\n AbiErrorSignatureNotFoundError & {\n name: 'AbiErrorSignatureNotFoundError'\n }\nexport class AbiErrorSignatureNotFoundError extends BaseError {\n signature: Hex\n\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded error signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorSignatureNotFoundError',\n },\n )\n this.signature = signature\n }\n}\n\nexport type AbiEventSignatureEmptyTopicsErrorType =\n AbiEventSignatureEmptyTopicsError & {\n name: 'AbiEventSignatureEmptyTopicsError'\n }\nexport class AbiEventSignatureEmptyTopicsError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super('Cannot extract event signature from empty topics.', {\n docsPath,\n name: 'AbiEventSignatureEmptyTopicsError',\n })\n }\n}\n\nexport type AbiEventSignatureNotFoundErrorType =\n AbiEventSignatureNotFoundError & {\n name: 'AbiEventSignatureNotFoundError'\n }\nexport class AbiEventSignatureNotFoundError extends BaseError {\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded event signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiEventSignatureNotFoundError',\n },\n )\n }\n}\n\nexport type AbiEventNotFoundErrorType = AbiEventNotFoundError & {\n name: 'AbiEventNotFoundError'\n}\nexport class AbiEventNotFoundError extends BaseError {\n constructor(\n eventName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Event ${eventName ? `\"${eventName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiEventNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionNotFoundErrorType = AbiFunctionNotFoundError & {\n name: 'AbiFunctionNotFoundError'\n}\nexport class AbiFunctionNotFoundError extends BaseError {\n constructor(\n functionName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Function ${functionName ? `\"${functionName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionOutputsNotFoundErrorType =\n AbiFunctionOutputsNotFoundError & {\n name: 'AbiFunctionOutputsNotFoundError'\n }\nexport class AbiFunctionOutputsNotFoundError extends BaseError {\n constructor(functionName: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Function \"${functionName}\" does not contain any \\`outputs\\` on ABI.`,\n 'Cannot decode function result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionOutputsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionSignatureNotFoundErrorType =\n AbiFunctionSignatureNotFoundError & {\n name: 'AbiFunctionSignatureNotFoundError'\n }\nexport class AbiFunctionSignatureNotFoundError extends BaseError {\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded function signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionSignatureNotFoundError',\n },\n )\n }\n}\n\nexport type AbiItemAmbiguityErrorType = AbiItemAmbiguityError & {\n name: 'AbiItemAmbiguityError'\n}\nexport class AbiItemAmbiguityError extends BaseError {\n constructor(\n x: { abiItem: Abi[number]; type: string },\n y: { abiItem: Abi[number]; type: string },\n ) {\n super('Found ambiguous types in overloaded ABI items.', {\n metaMessages: [\n `\\`${x.type}\\` in \\`${formatAbiItem(x.abiItem)}\\`, and`,\n `\\`${y.type}\\` in \\`${formatAbiItem(y.abiItem)}\\``,\n '',\n 'These types encode differently and cannot be distinguished at runtime.',\n 'Remove one of the ambiguous items in the ABI.',\n ],\n name: 'AbiItemAmbiguityError',\n })\n }\n}\n\nexport type BytesSizeMismatchErrorType = BytesSizeMismatchError & {\n name: 'BytesSizeMismatchError'\n}\nexport class BytesSizeMismatchError extends BaseError {\n constructor({\n expectedSize,\n givenSize,\n }: { expectedSize: number; givenSize: number }) {\n super(`Expected bytes${expectedSize}, got bytes${givenSize}.`, {\n name: 'BytesSizeMismatchError',\n })\n }\n}\n\nexport type DecodeLogDataMismatchErrorType = DecodeLogDataMismatch & {\n name: 'DecodeLogDataMismatch'\n}\nexport class DecodeLogDataMismatch extends BaseError {\n abiItem: AbiEvent\n data: Hex\n params: readonly AbiParameter[]\n size: number\n\n constructor({\n abiItem,\n data,\n params,\n size,\n }: {\n abiItem: AbiEvent\n data: Hex\n params: readonly AbiParameter[]\n size: number\n }) {\n super(\n [\n `Data size of ${size} bytes is too small for non-indexed event parameters.`,\n ].join('\\n'),\n {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'DecodeLogDataMismatch',\n },\n )\n\n this.abiItem = abiItem\n this.data = data\n this.params = params\n this.size = size\n }\n}\n\nexport type DecodeLogTopicsMismatchErrorType = DecodeLogTopicsMismatch & {\n name: 'DecodeLogTopicsMismatch'\n}\nexport class DecodeLogTopicsMismatch extends BaseError {\n abiItem: AbiEvent\n\n constructor({\n abiItem,\n param,\n }: {\n abiItem: AbiEvent\n param: AbiParameter & { indexed: boolean }\n }) {\n super(\n [\n `Expected a topic for indexed event parameter${\n param.name ? ` \"${param.name}\"` : ''\n } on event \"${formatAbiItem(abiItem, { includeName: true })}\".`,\n ].join('\\n'),\n { name: 'DecodeLogTopicsMismatch' },\n )\n\n this.abiItem = abiItem\n }\n}\n\nexport type InvalidAbiEncodingTypeErrorType = InvalidAbiEncodingTypeError & {\n name: 'InvalidAbiEncodingTypeError'\n}\nexport class InvalidAbiEncodingTypeError extends BaseError {\n constructor(type: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Type \"${type}\" is not a valid encoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'),\n { docsPath, name: 'InvalidAbiEncodingType' },\n )\n }\n}\n\nexport type InvalidAbiDecodingTypeErrorType = InvalidAbiDecodingTypeError & {\n name: 'InvalidAbiDecodingTypeError'\n}\nexport class InvalidAbiDecodingTypeError extends BaseError {\n constructor(type: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Type \"${type}\" is not a valid decoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'),\n { docsPath, name: 'InvalidAbiDecodingType' },\n )\n }\n}\n\nexport type InvalidArrayErrorType = InvalidArrayError & {\n name: 'InvalidArrayError'\n}\nexport class InvalidArrayError extends BaseError {\n constructor(value: unknown) {\n super([`Value \"${value}\" is not a valid array.`].join('\\n'), {\n name: 'InvalidArrayError',\n })\n }\n}\n\nexport type InvalidDefinitionTypeErrorType = InvalidDefinitionTypeError & {\n name: 'InvalidDefinitionTypeError'\n}\nexport class InvalidDefinitionTypeError extends BaseError {\n constructor(type: string) {\n super(\n [\n `\"${type}\" is not a valid definition type.`,\n 'Valid types: \"function\", \"event\", \"error\"',\n ].join('\\n'),\n { name: 'InvalidDefinitionTypeError' },\n )\n }\n}\n\nexport type UnsupportedPackedAbiTypeErrorType = UnsupportedPackedAbiType & {\n name: 'UnsupportedPackedAbiType'\n}\nexport class UnsupportedPackedAbiType extends BaseError {\n constructor(type: unknown) {\n super(`Type \"${type}\" is not supported for packed encoding.`, {\n name: 'UnsupportedPackedAbiType',\n })\n }\n}\n","import { BaseError } from './base.js'\n\nexport type InvalidAddressErrorType = InvalidAddressError & {\n name: 'InvalidAddressError'\n}\nexport class InvalidAddressError extends BaseError {\n constructor({ address }: { address: string }) {\n super(`Address \"${address}\" is invalid.`, {\n metaMessages: [\n '- Address must be a hex value of 20 bytes (40 hex characters).',\n '- Address must match its checksum counterpart.',\n ],\n name: 'InvalidAddressError',\n })\n }\n}\n","export const version = '2.21.15'\n","import { version } from './version.js'\n\ntype ErrorConfig = {\n getDocsUrl?: ((args: BaseErrorParameters) => string | undefined) | undefined\n version?: string | undefined\n}\n\nlet errorConfig: ErrorConfig = {\n getDocsUrl: ({\n docsBaseUrl,\n docsPath = '',\n docsSlug,\n }: BaseErrorParameters) =>\n docsPath\n ? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${\n docsSlug ? `#${docsSlug}` : ''\n }`\n : undefined,\n version,\n}\n\nexport function setErrorConfig(config: ErrorConfig) {\n errorConfig = config\n}\n\ntype BaseErrorParameters = {\n cause?: BaseError | Error | undefined\n details?: string | undefined\n docsBaseUrl?: string | undefined\n docsPath?: string | undefined\n docsSlug?: string | undefined\n metaMessages?: string[] | undefined\n name?: string | undefined\n}\n\nexport type BaseErrorType = BaseError & { name: 'BaseError' }\nexport class BaseError extends Error {\n details: string\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n shortMessage: string\n version: string\n\n override name = 'BaseError'\n\n constructor(shortMessage: string, args: BaseErrorParameters = {}) {\n const details = (() => {\n if (args.cause instanceof BaseError) return args.cause.details\n if (args.cause?.message) return args.cause.message\n return args.details!\n })()\n const docsPath = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.docsPath || args.docsPath\n return args.docsPath\n })()\n const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath })\n\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n ...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),\n ].join('\\n')\n\n super(message, args.cause ? { cause: args.cause } : undefined)\n\n this.details = details\n this.docsPath = docsPath\n this.metaMessages = args.metaMessages\n this.name = args.name ?? this.name\n this.shortMessage = shortMessage\n this.version = version\n }\n\n walk(): Error\n walk(fn: (err: unknown) => boolean): Error | null\n walk(fn?: any): any {\n return walk(this, fn)\n }\n}\n\nfunction walk(\n err: unknown,\n fn?: ((err: unknown) => boolean) | undefined,\n): unknown {\n if (fn?.(err)) return err\n if (err && typeof err === 'object' && 'cause' in err)\n return walk(err.cause, fn)\n return fn ? null : err\n}\n","import type { Chain } from '../types/chain.js'\n\nimport { BaseError } from './base.js'\n\nexport type ChainDoesNotSupportContractErrorType =\n ChainDoesNotSupportContract & {\n name: 'ChainDoesNotSupportContract'\n }\nexport class ChainDoesNotSupportContract extends BaseError {\n constructor({\n blockNumber,\n chain,\n contract,\n }: {\n blockNumber?: bigint | undefined\n chain: Chain\n contract: { name: string; blockCreated?: number | undefined }\n }) {\n super(\n `Chain \"${chain.name}\" does not support contract \"${contract.name}\".`,\n {\n metaMessages: [\n 'This could be due to any of the following:',\n ...(blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n ? [\n `- The contract \"${contract.name}\" was not deployed until block ${contract.blockCreated} (current block ${blockNumber}).`,\n ]\n : [\n `- The chain does not have the contract \"${contract.name}\" configured.`,\n ]),\n ],\n name: 'ChainDoesNotSupportContract',\n },\n )\n }\n}\n\nexport type ChainMismatchErrorType = ChainMismatchError & {\n name: 'ChainMismatchError'\n}\nexport class ChainMismatchError extends BaseError {\n constructor({\n chain,\n currentChainId,\n }: {\n chain: Chain\n currentChainId: number\n }) {\n super(\n `The current chain of the wallet (id: ${currentChainId}) does not match the target chain for the transaction (id: ${chain.id} – ${chain.name}).`,\n {\n metaMessages: [\n `Current Chain ID: ${currentChainId}`,\n `Expected Chain ID: ${chain.id} – ${chain.name}`,\n ],\n name: 'ChainMismatchError',\n },\n )\n }\n}\n\nexport type ChainNotFoundErrorType = ChainNotFoundError & {\n name: 'ChainNotFoundError'\n}\nexport class ChainNotFoundError extends BaseError {\n constructor() {\n super(\n [\n 'No chain was provided to the request.',\n 'Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient.',\n ].join('\\n'),\n {\n name: 'ChainNotFoundError',\n },\n )\n }\n}\n\nexport type ClientChainNotConfiguredErrorType =\n ClientChainNotConfiguredError & {\n name: 'ClientChainNotConfiguredError'\n }\nexport class ClientChainNotConfiguredError extends BaseError {\n constructor() {\n super('No chain was provided to the Client.', {\n name: 'ClientChainNotConfiguredError',\n })\n }\n}\n\nexport type InvalidChainIdErrorType = InvalidChainIdError & {\n name: 'InvalidChainIdError'\n}\nexport class InvalidChainIdError extends BaseError {\n constructor({ chainId }: { chainId?: number | undefined }) {\n super(\n typeof chainId === 'number'\n ? `Chain ID \"${chainId}\" is invalid.`\n : 'Chain ID is invalid.',\n { name: 'InvalidChainIdError' },\n )\n }\n}\n","import type { AbiParameter } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { AbiItem } from '../../types/contract.js'\nimport { stringify } from '../stringify.js'\n\nexport type FormatAbiItemWithArgsErrorType = ErrorType\n\nexport function formatAbiItemWithArgs({\n abiItem,\n args,\n includeFunctionName = true,\n includeName = false,\n}: {\n abiItem: AbiItem\n args: readonly unknown[]\n includeFunctionName?: boolean | undefined\n includeName?: boolean | undefined\n}) {\n if (!('name' in abiItem)) return\n if (!('inputs' in abiItem)) return\n if (!abiItem.inputs) return\n return `${includeFunctionName ? abiItem.name : ''}(${abiItem.inputs\n .map(\n (input: AbiParameter, i: number) =>\n `${includeName && input.name ? `${input.name}: ` : ''}${\n typeof args[i] === 'object' ? stringify(args[i]) : args[i]\n }`,\n )\n .join(', ')})`\n}\n","import type { Abi, Address } from 'abitype'\n\nimport { parseAccount } from '../accounts/utils/parseAccount.js'\nimport type { CallParameters } from '../actions/public/call.js'\nimport { panicReasons } from '../constants/solidity.js'\nimport type { Chain } from '../types/chain.js'\nimport type { Hex } from '../types/misc.js'\nimport {\n type DecodeErrorResultReturnType,\n decodeErrorResult,\n} from '../utils/abi/decodeErrorResult.js'\nimport { formatAbiItem } from '../utils/abi/formatAbiItem.js'\nimport { formatAbiItemWithArgs } from '../utils/abi/formatAbiItemWithArgs.js'\nimport { getAbiItem } from '../utils/abi/getAbiItem.js'\nimport { formatEther } from '../utils/unit/formatEther.js'\nimport { formatGwei } from '../utils/unit/formatGwei.js'\n\nimport { AbiErrorSignatureNotFoundError } from './abi.js'\nimport { BaseError } from './base.js'\nimport { prettyStateOverride } from './stateOverride.js'\nimport { prettyPrint } from './transaction.js'\nimport { getContractAddress } from './utils.js'\n\nexport type CallExecutionErrorType = CallExecutionError & {\n name: 'CallExecutionError'\n}\nexport class CallExecutionError extends BaseError {\n override cause: BaseError\n\n constructor(\n cause: BaseError,\n {\n account: account_,\n docsPath,\n chain,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n stateOverride,\n }: CallParameters & {\n chain?: Chain | undefined\n docsPath?: string | undefined\n },\n ) {\n const account = account_ ? parseAccount(account_) : undefined\n let prettyArgs = prettyPrint({\n from: account?.address,\n to,\n value:\n typeof value !== 'undefined' &&\n `${formatEther(value)} ${chain?.nativeCurrency?.symbol || 'ETH'}`,\n data,\n gas,\n gasPrice:\n typeof gasPrice !== 'undefined' && `${formatGwei(gasPrice)} gwei`,\n maxFeePerGas:\n typeof maxFeePerGas !== 'undefined' &&\n `${formatGwei(maxFeePerGas)} gwei`,\n maxPriorityFeePerGas:\n typeof maxPriorityFeePerGas !== 'undefined' &&\n `${formatGwei(maxPriorityFeePerGas)} gwei`,\n nonce,\n })\n\n if (stateOverride) {\n prettyArgs += `\\n${prettyStateOverride(stateOverride)}`\n }\n\n super(cause.shortMessage, {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n 'Raw Call Arguments:',\n prettyArgs,\n ].filter(Boolean) as string[],\n name: 'CallExecutionError',\n })\n this.cause = cause\n }\n}\n\nexport type ContractFunctionExecutionErrorType =\n ContractFunctionExecutionError & {\n name: 'ContractFunctionExecutionError'\n }\nexport class ContractFunctionExecutionError extends BaseError {\n abi: Abi\n args?: unknown[] | undefined\n override cause: BaseError\n contractAddress?: Address | undefined\n formattedArgs?: string | undefined\n functionName: string\n sender?: Address | undefined\n\n constructor(\n cause: BaseError,\n {\n abi,\n args,\n contractAddress,\n docsPath,\n functionName,\n sender,\n }: {\n abi: Abi\n args?: any | undefined\n contractAddress?: Address | undefined\n docsPath?: string | undefined\n functionName: string\n sender?: Address | undefined\n },\n ) {\n const abiItem = getAbiItem({ abi, args, name: functionName })\n const formattedArgs = abiItem\n ? formatAbiItemWithArgs({\n abiItem,\n args,\n includeFunctionName: false,\n includeName: false,\n })\n : undefined\n const functionWithParams = abiItem\n ? formatAbiItem(abiItem, { includeName: true })\n : undefined\n\n const prettyArgs = prettyPrint({\n address: contractAddress && getContractAddress(contractAddress),\n function: functionWithParams,\n args:\n formattedArgs &&\n formattedArgs !== '()' &&\n `${[...Array(functionName?.length ?? 0).keys()]\n .map(() => ' ')\n .join('')}${formattedArgs}`,\n sender,\n })\n\n super(\n cause.shortMessage ||\n `An unknown error occurred while executing the contract function \"${functionName}\".`,\n {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n prettyArgs && 'Contract Call:',\n prettyArgs,\n ].filter(Boolean) as string[],\n name: 'ContractFunctionExecutionError',\n },\n )\n this.abi = abi\n this.args = args\n this.cause = cause\n this.contractAddress = contractAddress\n this.functionName = functionName\n this.sender = sender\n }\n}\n\nexport type ContractFunctionRevertedErrorType =\n ContractFunctionRevertedError & {\n name: 'ContractFunctionRevertedError'\n }\nexport class ContractFunctionRevertedError extends BaseError {\n data?: DecodeErrorResultReturnType | undefined\n reason?: string | undefined\n signature?: Hex | undefined\n\n constructor({\n abi,\n data,\n functionName,\n message,\n }: {\n abi: Abi\n data?: Hex | undefined\n functionName: string\n message?: string | undefined\n }) {\n let cause: Error | undefined\n let decodedData: DecodeErrorResultReturnType | undefined = undefined\n let metaMessages: string[] | undefined\n let reason: string | undefined\n if (data && data !== '0x') {\n try {\n decodedData = decodeErrorResult({ abi, data })\n const { abiItem, errorName, args: errorArgs } = decodedData\n if (errorName === 'Error') {\n reason = (errorArgs as [string])[0]\n } else if (errorName === 'Panic') {\n const [firstArg] = errorArgs as [number]\n reason = panicReasons[firstArg as keyof typeof panicReasons]\n } else {\n const errorWithParams = abiItem\n ? formatAbiItem(abiItem, { includeName: true })\n : undefined\n const formattedArgs =\n abiItem && errorArgs\n ? formatAbiItemWithArgs({\n abiItem,\n args: errorArgs,\n includeFunctionName: false,\n includeName: false,\n })\n : undefined\n\n metaMessages = [\n errorWithParams ? `Error: ${errorWithParams}` : '',\n formattedArgs && formattedArgs !== '()'\n ? ` ${[...Array(errorName?.length ?? 0).keys()]\n .map(() => ' ')\n .join('')}${formattedArgs}`\n : '',\n ]\n }\n } catch (err) {\n cause = err as Error\n }\n } else if (message) reason = message\n\n let signature: Hex | undefined\n if (cause instanceof AbiErrorSignatureNotFoundError) {\n signature = cause.signature\n metaMessages = [\n `Unable to decode signature \"${signature}\" as it was not found on the provided ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ]\n }\n\n super(\n (reason && reason !== 'execution reverted') || signature\n ? [\n `The contract function \"${functionName}\" reverted with the following ${\n signature ? 'signature' : 'reason'\n }:`,\n reason || signature,\n ].join('\\n')\n : `The contract function \"${functionName}\" reverted.`,\n {\n cause,\n metaMessages,\n name: 'ContractFunctionRevertedError',\n },\n )\n\n this.data = decodedData\n this.reason = reason\n this.signature = signature\n }\n}\n\nexport type ContractFunctionZeroDataErrorType =\n ContractFunctionZeroDataError & {\n name: 'ContractFunctionZeroDataError'\n }\nexport class ContractFunctionZeroDataError extends BaseError {\n constructor({ functionName }: { functionName: string }) {\n super(`The contract function \"${functionName}\" returned no data (\"0x\").`, {\n metaMessages: [\n 'This could be due to any of the following:',\n ` - The contract does not have the function \"${functionName}\",`,\n ' - The parameters passed to the contract function may be invalid, or',\n ' - The address is not a contract.',\n ],\n name: 'ContractFunctionZeroDataError',\n })\n }\n}\n\nexport type CounterfactualDeploymentFailedErrorType =\n CounterfactualDeploymentFailedError & {\n name: 'CounterfactualDeploymentFailedError'\n }\nexport class CounterfactualDeploymentFailedError extends BaseError {\n constructor({ factory }: { factory?: Address | undefined }) {\n super(\n `Deployment for counterfactual contract call failed${\n factory ? ` for factory \"${factory}\".` : ''\n }`,\n {\n metaMessages: [\n 'Please ensure:',\n '- The `factory` is a valid contract deployment factory (ie. Create2 Factory, ERC-4337 Factory, etc).',\n '- The `factoryData` is a valid encoded function call for contract deployment function on the factory.',\n ],\n name: 'CounterfactualDeploymentFailedError',\n },\n )\n }\n}\n\nexport type RawContractErrorType = RawContractError & {\n name: 'RawContractError'\n}\nexport class RawContractError extends BaseError {\n code = 3\n\n data?: Hex | { data?: Hex | undefined } | undefined\n\n constructor({\n data,\n message,\n }: {\n data?: Hex | { data?: Hex | undefined } | undefined\n message?: string | undefined\n }) {\n super(message || '', { name: 'RawContractError' })\n this.data = data\n }\n}\n","import { BaseError } from './base.js'\n\nexport type SliceOffsetOutOfBoundsErrorType = SliceOffsetOutOfBoundsError & {\n name: 'SliceOffsetOutOfBoundsError'\n}\nexport class SliceOffsetOutOfBoundsError extends BaseError {\n constructor({\n offset,\n position,\n size,\n }: { offset: number; position: 'start' | 'end'; size: number }) {\n super(\n `Slice ${\n position === 'start' ? 'starting' : 'ending'\n } at offset \"${offset}\" is out-of-bounds (size: ${size}).`,\n { name: 'SliceOffsetOutOfBoundsError' },\n )\n }\n}\n\nexport type SizeExceedsPaddingSizeErrorType = SizeExceedsPaddingSizeError & {\n name: 'SizeExceedsPaddingSizeError'\n}\nexport class SizeExceedsPaddingSizeError extends BaseError {\n constructor({\n size,\n targetSize,\n type,\n }: {\n size: number\n targetSize: number\n type: 'hex' | 'bytes'\n }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`,\n { name: 'SizeExceedsPaddingSizeError' },\n )\n }\n}\n\nexport type InvalidBytesLengthErrorType = InvalidBytesLengthError & {\n name: 'InvalidBytesLengthError'\n}\nexport class InvalidBytesLengthError extends BaseError {\n constructor({\n size,\n targetSize,\n type,\n }: {\n size: number\n targetSize: number\n type: 'hex' | 'bytes'\n }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`,\n { name: 'InvalidBytesLengthError' },\n )\n }\n}\n","import type { ByteArray, Hex } from '../types/misc.js'\n\nimport { BaseError } from './base.js'\n\nexport type IntegerOutOfRangeErrorType = IntegerOutOfRangeError & {\n name: 'IntegerOutOfRangeError'\n}\nexport class IntegerOutOfRangeError extends BaseError {\n constructor({\n max,\n min,\n signed,\n size,\n value,\n }: {\n max?: string | undefined\n min: string\n signed?: boolean | undefined\n size?: number | undefined\n value: string\n }) {\n super(\n `Number \"${value}\" is not in safe ${\n size ? `${size * 8}-bit ${signed ? 'signed' : 'unsigned'} ` : ''\n }integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`,\n { name: 'IntegerOutOfRangeError' },\n )\n }\n}\n\nexport type InvalidBytesBooleanErrorType = InvalidBytesBooleanError & {\n name: 'InvalidBytesBooleanError'\n}\nexport class InvalidBytesBooleanError extends BaseError {\n constructor(bytes: ByteArray) {\n super(\n `Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`,\n {\n name: 'InvalidBytesBooleanError',\n },\n )\n }\n}\n\nexport type InvalidHexBooleanErrorType = InvalidHexBooleanError & {\n name: 'InvalidHexBooleanError'\n}\nexport class InvalidHexBooleanError extends BaseError {\n constructor(hex: Hex) {\n super(\n `Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`,\n { name: 'InvalidHexBooleanError' },\n )\n }\n}\n\nexport type InvalidHexValueErrorType = InvalidHexValueError & {\n name: 'InvalidHexValueError'\n}\nexport class InvalidHexValueError extends BaseError {\n constructor(value: Hex) {\n super(\n `Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`,\n { name: 'InvalidHexValueError' },\n )\n }\n}\n\nexport type SizeOverflowErrorType = SizeOverflowError & {\n name: 'SizeOverflowError'\n}\nexport class SizeOverflowError extends BaseError {\n constructor({ givenSize, maxSize }: { givenSize: number; maxSize: number }) {\n super(\n `Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`,\n { name: 'SizeOverflowError' },\n )\n }\n}\n","import { stringify } from '../utils/stringify.js'\n\nimport { BaseError } from './base.js'\nimport { getUrl } from './utils.js'\n\nexport type HttpRequestErrorType = HttpRequestError & {\n name: 'HttpRequestError'\n}\nexport class HttpRequestError extends BaseError {\n body?: { [x: string]: unknown } | { [y: string]: unknown }[] | undefined\n headers?: Headers | undefined\n status?: number | undefined\n url: string\n\n constructor({\n body,\n cause,\n details,\n headers,\n status,\n url,\n }: {\n body?: { [x: string]: unknown } | { [y: string]: unknown }[] | undefined\n cause?: Error | undefined\n details?: string | undefined\n headers?: Headers | undefined\n status?: number | undefined\n url: string\n }) {\n super('HTTP request failed.', {\n cause,\n details,\n metaMessages: [\n status && `Status: ${status}`,\n `URL: ${getUrl(url)}`,\n body && `Request body: ${stringify(body)}`,\n ].filter(Boolean) as string[],\n name: 'HttpRequestError',\n })\n this.body = body\n this.headers = headers\n this.status = status\n this.url = url\n }\n}\n\nexport type WebSocketRequestErrorType = WebSocketRequestError & {\n name: 'WebSocketRequestError'\n}\nexport class WebSocketRequestError extends BaseError {\n constructor({\n body,\n cause,\n details,\n url,\n }: {\n body?: { [key: string]: unknown } | undefined\n cause?: Error | undefined\n details?: string | undefined\n url: string\n }) {\n super('WebSocket request failed.', {\n cause,\n details,\n metaMessages: [\n `URL: ${getUrl(url)}`,\n body && `Request body: ${stringify(body)}`,\n ].filter(Boolean) as string[],\n name: 'WebSocketRequestError',\n })\n }\n}\n\nexport type RpcRequestErrorType = RpcRequestError & {\n name: 'RpcRequestError'\n}\nexport class RpcRequestError extends BaseError {\n code: number\n\n constructor({\n body,\n error,\n url,\n }: {\n body: { [x: string]: unknown } | { [y: string]: unknown }[]\n error: { code: number; message: string }\n url: string\n }) {\n super('RPC Request failed.', {\n cause: error as any,\n details: error.message,\n metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n name: 'RpcRequestError',\n })\n this.code = error.code\n }\n}\n\nexport type SocketClosedErrorType = SocketClosedError & {\n name: 'SocketClosedError'\n}\nexport class SocketClosedError extends BaseError {\n constructor({\n url,\n }: {\n url?: string | undefined\n } = {}) {\n super('The socket has been closed.', {\n metaMessages: [url && `URL: ${getUrl(url)}`].filter(Boolean) as string[],\n name: 'SocketClosedError',\n })\n }\n}\n\nexport type TimeoutErrorType = TimeoutError & {\n name: 'TimeoutError'\n}\nexport class TimeoutError extends BaseError {\n constructor({\n body,\n url,\n }: {\n body: { [x: string]: unknown } | { [y: string]: unknown }[]\n url: string\n }) {\n super('The request took too long to respond.', {\n details: 'The request timed out.',\n metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n name: 'TimeoutError',\n })\n }\n}\n","import type { StateMapping, StateOverride } from '../types/stateOverride.js'\nimport { BaseError } from './base.js'\n\nexport type AccountStateConflictErrorType = AccountStateConflictError & {\n name: 'AccountStateConflictError'\n}\n\nexport class AccountStateConflictError extends BaseError {\n constructor({ address }: { address: string }) {\n super(`State for account \"${address}\" is set multiple times.`, {\n name: 'AccountStateConflictError',\n })\n }\n}\n\nexport type StateAssignmentConflictErrorType = StateAssignmentConflictError & {\n name: 'StateAssignmentConflictError'\n}\n\nexport class StateAssignmentConflictError extends BaseError {\n constructor() {\n super('state and stateDiff are set on the same account.', {\n name: 'StateAssignmentConflictError',\n })\n }\n}\n\n/** @internal */\nexport function prettyStateMapping(stateMapping: StateMapping) {\n return stateMapping.reduce((pretty, { slot, value }) => {\n return `${pretty} ${slot}: ${value}\\n`\n }, '')\n}\n\nexport function prettyStateOverride(stateOverride: StateOverride) {\n return stateOverride\n .reduce((pretty, { address, ...state }) => {\n let val = `${pretty} ${address}:\\n`\n if (state.nonce) val += ` nonce: ${state.nonce}\\n`\n if (state.balance) val += ` balance: ${state.balance}\\n`\n if (state.code) val += ` code: ${state.code}\\n`\n if (state.state) {\n val += ' state:\\n'\n val += prettyStateMapping(state.state)\n }\n if (state.stateDiff) {\n val += ' stateDiff:\\n'\n val += prettyStateMapping(state.stateDiff)\n }\n return val\n }, ' State Override:\\n')\n .slice(0, -1)\n}\n","import type { Account } from '../accounts/types.js'\nimport type { SendTransactionParameters } from '../actions/wallet/sendTransaction.js'\nimport type { BlockTag } from '../types/block.js'\nimport type { Chain } from '../types/chain.js'\nimport type { Hash, Hex } from '../types/misc.js'\nimport type { TransactionType } from '../types/transaction.js'\nimport { formatEther } from '../utils/unit/formatEther.js'\nimport { formatGwei } from '../utils/unit/formatGwei.js'\n\nimport { BaseError } from './base.js'\n\nexport function prettyPrint(\n args: Record,\n) {\n const entries = Object.entries(args)\n .map(([key, value]) => {\n if (value === undefined || value === false) return null\n return [key, value]\n })\n .filter(Boolean) as [string, string][]\n const maxLength = entries.reduce((acc, [key]) => Math.max(acc, key.length), 0)\n return entries\n .map(([key, value]) => ` ${`${key}:`.padEnd(maxLength + 1)} ${value}`)\n .join('\\n')\n}\n\nexport type FeeConflictErrorType = FeeConflictError & {\n name: 'FeeConflictError'\n}\nexport class FeeConflictError extends BaseError {\n constructor() {\n super(\n [\n 'Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.',\n 'Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others.',\n ].join('\\n'),\n { name: 'FeeConflictError' },\n )\n }\n}\n\nexport type InvalidLegacyVErrorType = InvalidLegacyVError & {\n name: 'InvalidLegacyVError'\n}\nexport class InvalidLegacyVError extends BaseError {\n constructor({ v }: { v: bigint }) {\n super(`Invalid \\`v\\` value \"${v}\". Expected 27 or 28.`, {\n name: 'InvalidLegacyVError',\n })\n }\n}\n\nexport type InvalidSerializableTransactionErrorType =\n InvalidSerializableTransactionError & {\n name: 'InvalidSerializableTransactionError'\n }\nexport class InvalidSerializableTransactionError extends BaseError {\n constructor({ transaction }: { transaction: Record }) {\n super('Cannot infer a transaction type from provided transaction.', {\n metaMessages: [\n 'Provided Transaction:',\n '{',\n prettyPrint(transaction),\n '}',\n '',\n 'To infer the type, either provide:',\n '- a `type` to the Transaction, or',\n '- an EIP-1559 Transaction with `maxFeePerGas`, or',\n '- an EIP-2930 Transaction with `gasPrice` & `accessList`, or',\n '- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or',\n '- an EIP-7702 Transaction with `authorizationList`, or',\n '- a Legacy Transaction with `gasPrice`',\n ],\n name: 'InvalidSerializableTransactionError',\n })\n }\n}\n\nexport type InvalidSerializedTransactionTypeErrorType =\n InvalidSerializedTransactionTypeError & {\n name: 'InvalidSerializedTransactionTypeError'\n }\nexport class InvalidSerializedTransactionTypeError extends BaseError {\n serializedType: Hex\n\n constructor({ serializedType }: { serializedType: Hex }) {\n super(`Serialized transaction type \"${serializedType}\" is invalid.`, {\n name: 'InvalidSerializedTransactionType',\n })\n\n this.serializedType = serializedType\n }\n}\n\nexport type InvalidSerializedTransactionErrorType =\n InvalidSerializedTransactionError & {\n name: 'InvalidSerializedTransactionError'\n }\nexport class InvalidSerializedTransactionError extends BaseError {\n serializedTransaction: Hex\n type: TransactionType\n\n constructor({\n attributes,\n serializedTransaction,\n type,\n }: {\n attributes: Record\n serializedTransaction: Hex\n type: TransactionType\n }) {\n const missing = Object.entries(attributes)\n .map(([key, value]) => (typeof value === 'undefined' ? key : undefined))\n .filter(Boolean)\n super(`Invalid serialized transaction of type \"${type}\" was provided.`, {\n metaMessages: [\n `Serialized Transaction: \"${serializedTransaction}\"`,\n missing.length > 0 ? `Missing Attributes: ${missing.join(', ')}` : '',\n ].filter(Boolean),\n name: 'InvalidSerializedTransactionError',\n })\n\n this.serializedTransaction = serializedTransaction\n this.type = type\n }\n}\n\nexport type InvalidStorageKeySizeErrorType = InvalidStorageKeySizeError & {\n name: 'InvalidStorageKeySizeError'\n}\nexport class InvalidStorageKeySizeError extends BaseError {\n constructor({ storageKey }: { storageKey: Hex }) {\n super(\n `Size for storage key \"${storageKey}\" is invalid. Expected 32 bytes. Got ${Math.floor(\n (storageKey.length - 2) / 2,\n )} bytes.`,\n { name: 'InvalidStorageKeySizeError' },\n )\n }\n}\n\nexport type TransactionExecutionErrorType = TransactionExecutionError & {\n name: 'TransactionExecutionError'\n}\nexport class TransactionExecutionError extends BaseError {\n override cause: BaseError\n\n constructor(\n cause: BaseError,\n {\n account,\n docsPath,\n chain,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n }: Omit & {\n account: Account\n chain?: Chain | undefined\n docsPath?: string | undefined\n },\n ) {\n const prettyArgs = prettyPrint({\n chain: chain && `${chain?.name} (id: ${chain?.id})`,\n from: account?.address,\n to,\n value:\n typeof value !== 'undefined' &&\n `${formatEther(value)} ${chain?.nativeCurrency?.symbol || 'ETH'}`,\n data,\n gas,\n gasPrice:\n typeof gasPrice !== 'undefined' && `${formatGwei(gasPrice)} gwei`,\n maxFeePerGas:\n typeof maxFeePerGas !== 'undefined' &&\n `${formatGwei(maxFeePerGas)} gwei`,\n maxPriorityFeePerGas:\n typeof maxPriorityFeePerGas !== 'undefined' &&\n `${formatGwei(maxPriorityFeePerGas)} gwei`,\n nonce,\n })\n\n super(cause.shortMessage, {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n 'Request Arguments:',\n prettyArgs,\n ].filter(Boolean) as string[],\n name: 'TransactionExecutionError',\n })\n this.cause = cause\n }\n}\n\nexport type TransactionNotFoundErrorType = TransactionNotFoundError & {\n name: 'TransactionNotFoundError'\n}\nexport class TransactionNotFoundError extends BaseError {\n constructor({\n blockHash,\n blockNumber,\n blockTag,\n hash,\n index,\n }: {\n blockHash?: Hash | undefined\n blockNumber?: bigint | undefined\n blockTag?: BlockTag | undefined\n hash?: Hash | undefined\n index?: number | undefined\n }) {\n let identifier = 'Transaction'\n if (blockTag && index !== undefined)\n identifier = `Transaction at block time \"${blockTag}\" at index \"${index}\"`\n if (blockHash && index !== undefined)\n identifier = `Transaction at block hash \"${blockHash}\" at index \"${index}\"`\n if (blockNumber && index !== undefined)\n identifier = `Transaction at block number \"${blockNumber}\" at index \"${index}\"`\n if (hash) identifier = `Transaction with hash \"${hash}\"`\n super(`${identifier} could not be found.`, {\n name: 'TransactionNotFoundError',\n })\n }\n}\n\nexport type TransactionReceiptNotFoundErrorType =\n TransactionReceiptNotFoundError & {\n name: 'TransactionReceiptNotFoundError'\n }\nexport class TransactionReceiptNotFoundError extends BaseError {\n constructor({ hash }: { hash: Hash }) {\n super(\n `Transaction receipt with hash \"${hash}\" could not be found. The Transaction may not be processed on a block yet.`,\n {\n name: 'TransactionReceiptNotFoundError',\n },\n )\n }\n}\n\nexport type WaitForTransactionReceiptTimeoutErrorType =\n WaitForTransactionReceiptTimeoutError & {\n name: 'WaitForTransactionReceiptTimeoutError'\n }\nexport class WaitForTransactionReceiptTimeoutError extends BaseError {\n constructor({ hash }: { hash: Hash }) {\n super(\n `Timed out while waiting for transaction with hash \"${hash}\" to be confirmed.`,\n { name: 'WaitForTransactionReceiptTimeoutError' },\n )\n }\n}\n","import type { Address } from 'abitype'\n\nexport type ErrorType = Error & { name: name }\n\nexport const getContractAddress = (address: Address) => address\nexport const getUrl = (url: string) => url\n","import { BaseError } from './base.js'\n\nexport type NegativeOffsetErrorType = NegativeOffsetError & {\n name: 'NegativeOffsetError'\n}\nexport class NegativeOffsetError extends BaseError {\n constructor({ offset }: { offset: number }) {\n super(`Offset \\`${offset}\\` cannot be negative.`, {\n name: 'NegativeOffsetError',\n })\n }\n}\n\nexport type PositionOutOfBoundsErrorType = PositionOutOfBoundsError & {\n name: 'PositionOutOfBoundsError'\n}\nexport class PositionOutOfBoundsError extends BaseError {\n constructor({ length, position }: { length: number; position: number }) {\n super(\n `Position \\`${position}\\` is out of bounds (\\`0 < position < ${length}\\`).`,\n { name: 'PositionOutOfBoundsError' },\n )\n }\n}\n\nexport type RecursiveReadLimitExceededErrorType =\n RecursiveReadLimitExceededError & {\n name: 'RecursiveReadLimitExceededError'\n }\nexport class RecursiveReadLimitExceededError extends BaseError {\n constructor({ count, limit }: { count: number; limit: number }) {\n super(\n `Recursive read limit of \\`${limit}\\` exceeded (recursive read count: \\`${count}\\`).`,\n { name: 'RecursiveReadLimitExceededError' },\n )\n }\n}\n","import {\n NegativeOffsetError,\n type NegativeOffsetErrorType,\n PositionOutOfBoundsError,\n type PositionOutOfBoundsErrorType,\n RecursiveReadLimitExceededError,\n type RecursiveReadLimitExceededErrorType,\n} from '../errors/cursor.js'\nimport type { ErrorType } from '../errors/utils.js'\nimport type { ByteArray } from '../types/misc.js'\n\nexport type Cursor = {\n bytes: ByteArray\n dataView: DataView\n position: number\n positionReadCount: Map\n recursiveReadCount: number\n recursiveReadLimit: number\n remaining: number\n assertReadLimit(position?: number): void\n assertPosition(position: number): void\n decrementPosition(offset: number): void\n getReadCount(position?: number): number\n incrementPosition(offset: number): void\n inspectByte(position?: number): ByteArray[number]\n inspectBytes(length: number, position?: number): ByteArray\n inspectUint8(position?: number): number\n inspectUint16(position?: number): number\n inspectUint24(position?: number): number\n inspectUint32(position?: number): number\n pushByte(byte: ByteArray[number]): void\n pushBytes(bytes: ByteArray): void\n pushUint8(value: number): void\n pushUint16(value: number): void\n pushUint24(value: number): void\n pushUint32(value: number): void\n readByte(): ByteArray[number]\n readBytes(length: number, size?: number): ByteArray\n readUint8(): number\n readUint16(): number\n readUint24(): number\n readUint32(): number\n setPosition(position: number): () => void\n _touch(): void\n}\n\ntype CursorErrorType =\n | CursorAssertPositionErrorType\n | CursorDecrementPositionErrorType\n | CursorIncrementPositionErrorType\n | ErrorType\n\ntype CursorAssertPositionErrorType = PositionOutOfBoundsErrorType | ErrorType\n\ntype CursorDecrementPositionErrorType = NegativeOffsetError | ErrorType\n\ntype CursorIncrementPositionErrorType = NegativeOffsetError | ErrorType\n\ntype StaticCursorErrorType =\n | NegativeOffsetErrorType\n | RecursiveReadLimitExceededErrorType\n\nconst staticCursor: Cursor = {\n bytes: new Uint8Array(),\n dataView: new DataView(new ArrayBuffer(0)),\n position: 0,\n positionReadCount: new Map(),\n recursiveReadCount: 0,\n recursiveReadLimit: Number.POSITIVE_INFINITY,\n assertReadLimit() {\n if (this.recursiveReadCount >= this.recursiveReadLimit)\n throw new RecursiveReadLimitExceededError({\n count: this.recursiveReadCount + 1,\n limit: this.recursiveReadLimit,\n })\n },\n assertPosition(position) {\n if (position < 0 || position > this.bytes.length - 1)\n throw new PositionOutOfBoundsError({\n length: this.bytes.length,\n position,\n })\n },\n decrementPosition(offset) {\n if (offset < 0) throw new NegativeOffsetError({ offset })\n const position = this.position - offset\n this.assertPosition(position)\n this.position = position\n },\n getReadCount(position) {\n return this.positionReadCount.get(position || this.position) || 0\n },\n incrementPosition(offset) {\n if (offset < 0) throw new NegativeOffsetError({ offset })\n const position = this.position + offset\n this.assertPosition(position)\n this.position = position\n },\n inspectByte(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position)\n return this.bytes[position]\n },\n inspectBytes(length, position_) {\n const position = position_ ?? this.position\n this.assertPosition(position + length - 1)\n return this.bytes.subarray(position, position + length)\n },\n inspectUint8(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position)\n return this.bytes[position]\n },\n inspectUint16(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position + 1)\n return this.dataView.getUint16(position)\n },\n inspectUint24(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position + 2)\n return (\n (this.dataView.getUint16(position) << 8) +\n this.dataView.getUint8(position + 2)\n )\n },\n inspectUint32(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position + 3)\n return this.dataView.getUint32(position)\n },\n pushByte(byte: ByteArray[number]) {\n this.assertPosition(this.position)\n this.bytes[this.position] = byte\n this.position++\n },\n pushBytes(bytes: ByteArray) {\n this.assertPosition(this.position + bytes.length - 1)\n this.bytes.set(bytes, this.position)\n this.position += bytes.length\n },\n pushUint8(value: number) {\n this.assertPosition(this.position)\n this.bytes[this.position] = value\n this.position++\n },\n pushUint16(value: number) {\n this.assertPosition(this.position + 1)\n this.dataView.setUint16(this.position, value)\n this.position += 2\n },\n pushUint24(value: number) {\n this.assertPosition(this.position + 2)\n this.dataView.setUint16(this.position, value >> 8)\n this.dataView.setUint8(this.position + 2, value & ~4294967040)\n this.position += 3\n },\n pushUint32(value: number) {\n this.assertPosition(this.position + 3)\n this.dataView.setUint32(this.position, value)\n this.position += 4\n },\n readByte() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectByte()\n this.position++\n return value\n },\n readBytes(length, size) {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectBytes(length)\n this.position += size ?? length\n return value\n },\n readUint8() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectUint8()\n this.position += 1\n return value\n },\n readUint16() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectUint16()\n this.position += 2\n return value\n },\n readUint24() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectUint24()\n this.position += 3\n return value\n },\n readUint32() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectUint32()\n this.position += 4\n return value\n },\n get remaining() {\n return this.bytes.length - this.position\n },\n setPosition(position) {\n const oldPosition = this.position\n this.assertPosition(position)\n this.position = position\n return () => (this.position = oldPosition)\n },\n _touch() {\n if (this.recursiveReadLimit === Number.POSITIVE_INFINITY) return\n const count = this.getReadCount()\n this.positionReadCount.set(this.position, count + 1)\n if (count > 0) this.recursiveReadCount++\n },\n}\n\ntype CursorConfig = { recursiveReadLimit?: number | undefined }\n\nexport type CreateCursorErrorType =\n | CursorErrorType\n | StaticCursorErrorType\n | ErrorType\n\nexport function createCursor(\n bytes: ByteArray,\n { recursiveReadLimit = 8_192 }: CursorConfig = {},\n): Cursor {\n const cursor: Cursor = Object.create(staticCursor)\n cursor.bytes = bytes\n cursor.dataView = new DataView(\n bytes.buffer,\n bytes.byteOffset,\n bytes.byteLength,\n )\n cursor.positionReadCount = new Map()\n cursor.recursiveReadLimit = recursiveReadLimit\n return cursor\n}\n","import { InvalidBytesBooleanError } from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type TrimErrorType, trim } from '../data/trim.js'\n\nimport {\n type AssertSizeErrorType,\n type HexToBigIntErrorType,\n type HexToNumberErrorType,\n assertSize,\n hexToBigInt,\n hexToNumber,\n} from './fromHex.js'\nimport { type BytesToHexErrorType, bytesToHex } from './toHex.js'\n\nexport type FromBytesParameters<\n to extends 'string' | 'hex' | 'bigint' | 'number' | 'boolean',\n> =\n | to\n | {\n /** Size of the bytes. */\n size?: number | undefined\n /** Type to convert to. */\n to: to\n }\n\nexport type FromBytesReturnType = to extends 'string'\n ? string\n : to extends 'hex'\n ? Hex\n : to extends 'bigint'\n ? bigint\n : to extends 'number'\n ? number\n : to extends 'boolean'\n ? boolean\n : never\n\nexport type FromBytesErrorType =\n | BytesToHexErrorType\n | BytesToBigIntErrorType\n | BytesToBoolErrorType\n | BytesToNumberErrorType\n | BytesToStringErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a UTF-8 string, hex value, number, bigint or boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes\n * - Example: https://viem.sh/docs/utilities/fromBytes#usage\n *\n * @param bytes Byte array to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromBytes } from 'viem'\n * const data = fromBytes(new Uint8Array([1, 164]), 'number')\n * // 420\n *\n * @example\n * import { fromBytes } from 'viem'\n * const data = fromBytes(\n * new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]),\n * 'string'\n * )\n * // 'Hello world'\n */\nexport function fromBytes<\n to extends 'string' | 'hex' | 'bigint' | 'number' | 'boolean',\n>(\n bytes: ByteArray,\n toOrOpts: FromBytesParameters,\n): FromBytesReturnType {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts\n const to = opts.to\n\n if (to === 'number')\n return bytesToNumber(bytes, opts) as FromBytesReturnType\n if (to === 'bigint')\n return bytesToBigInt(bytes, opts) as FromBytesReturnType\n if (to === 'boolean')\n return bytesToBool(bytes, opts) as FromBytesReturnType\n if (to === 'string')\n return bytesToString(bytes, opts) as FromBytesReturnType\n return bytesToHex(bytes, opts) as FromBytesReturnType\n}\n\nexport type BytesToBigIntOpts = {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** Size of the bytes. */\n size?: number | undefined\n}\n\nexport type BytesToBigIntErrorType =\n | BytesToHexErrorType\n | HexToBigIntErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestobigint\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { bytesToBigInt } from 'viem'\n * const data = bytesToBigInt(new Uint8Array([1, 164]))\n * // 420n\n */\nexport function bytesToBigInt(\n bytes: ByteArray,\n opts: BytesToBigIntOpts = {},\n): bigint {\n if (typeof opts.size !== 'undefined') assertSize(bytes, { size: opts.size })\n const hex = bytesToHex(bytes, opts)\n return hexToBigInt(hex, opts)\n}\n\nexport type BytesToBoolOpts = {\n /** Size of the bytes. */\n size?: number | undefined\n}\n\nexport type BytesToBoolErrorType =\n | AssertSizeErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestobool\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { bytesToBool } from 'viem'\n * const data = bytesToBool(new Uint8Array([1]))\n * // true\n */\nexport function bytesToBool(\n bytes_: ByteArray,\n opts: BytesToBoolOpts = {},\n): boolean {\n let bytes = bytes_\n if (typeof opts.size !== 'undefined') {\n assertSize(bytes, { size: opts.size })\n bytes = trim(bytes)\n }\n if (bytes.length > 1 || bytes[0] > 1)\n throw new InvalidBytesBooleanError(bytes)\n return Boolean(bytes[0])\n}\n\nexport type BytesToNumberOpts = BytesToBigIntOpts\n\nexport type BytesToNumberErrorType =\n | BytesToHexErrorType\n | HexToNumberErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestonumber\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { bytesToNumber } from 'viem'\n * const data = bytesToNumber(new Uint8Array([1, 164]))\n * // 420\n */\nexport function bytesToNumber(\n bytes: ByteArray,\n opts: BytesToNumberOpts = {},\n): number {\n if (typeof opts.size !== 'undefined') assertSize(bytes, { size: opts.size })\n const hex = bytesToHex(bytes, opts)\n return hexToNumber(hex, opts)\n}\n\nexport type BytesToStringOpts = {\n /** Size of the bytes. */\n size?: number | undefined\n}\n\nexport type BytesToStringErrorType =\n | AssertSizeErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestostring\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { bytesToString } from 'viem'\n * const data = bytesToString(new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))\n * // 'Hello world'\n */\nexport function bytesToString(\n bytes_: ByteArray,\n opts: BytesToStringOpts = {},\n): string {\n let bytes = bytes_\n if (typeof opts.size !== 'undefined') {\n assertSize(bytes, { size: opts.size })\n bytes = trim(bytes, { dir: 'right' })\n }\n return new TextDecoder().decode(bytes)\n}\n","import type { AbiParameter, AbiParametersToPrimitiveTypes } from 'abitype'\n\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nimport {\n AbiDecodingDataSizeTooSmallError,\n AbiDecodingZeroDataError,\n InvalidAbiDecodingTypeError,\n type InvalidAbiDecodingTypeErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type ChecksumAddressErrorType,\n checksumAddress,\n} from '../address/getAddress.js'\nimport {\n type CreateCursorErrorType,\n type Cursor,\n createCursor,\n} from '../cursor.js'\nimport { type SizeErrorType, size } from '../data/size.js'\nimport { type SliceBytesErrorType, sliceBytes } from '../data/slice.js'\nimport { type TrimErrorType, trim } from '../data/trim.js'\nimport {\n type BytesToBigIntErrorType,\n type BytesToBoolErrorType,\n type BytesToNumberErrorType,\n type BytesToStringErrorType,\n bytesToBigInt,\n bytesToBool,\n bytesToNumber,\n bytesToString,\n} from '../encoding/fromBytes.js'\nimport { type HexToBytesErrorType, hexToBytes } from '../encoding/toBytes.js'\nimport { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'\nimport { getArrayComponents } from './encodeAbiParameters.js'\n\nexport type DecodeAbiParametersReturnType<\n params extends readonly AbiParameter[] = readonly AbiParameter[],\n> = AbiParametersToPrimitiveTypes<\n params extends readonly AbiParameter[] ? params : AbiParameter[]\n>\n\nexport type DecodeAbiParametersErrorType =\n | HexToBytesErrorType\n | BytesToHexErrorType\n | DecodeParameterErrorType\n | SizeErrorType\n | CreateCursorErrorType\n | ErrorType\n\nexport function decodeAbiParameters<\n const params extends readonly AbiParameter[],\n>(\n params: params,\n data: ByteArray | Hex,\n): DecodeAbiParametersReturnType {\n const bytes = typeof data === 'string' ? hexToBytes(data) : data\n const cursor = createCursor(bytes)\n\n if (size(bytes) === 0 && params.length > 0)\n throw new AbiDecodingZeroDataError()\n if (size(data) && size(data) < 32)\n throw new AbiDecodingDataSizeTooSmallError({\n data: typeof data === 'string' ? data : bytesToHex(data),\n params: params as readonly AbiParameter[],\n size: size(data),\n })\n\n let consumed = 0\n const values = []\n for (let i = 0; i < params.length; ++i) {\n const param = params[i]\n cursor.setPosition(consumed)\n const [data, consumed_] = decodeParameter(cursor, param, {\n staticPosition: 0,\n })\n consumed += consumed_\n values.push(data)\n }\n return values as DecodeAbiParametersReturnType\n}\n\ntype DecodeParameterErrorType =\n | DecodeArrayErrorType\n | DecodeTupleErrorType\n | DecodeAddressErrorType\n | DecodeBoolErrorType\n | DecodeBytesErrorType\n | DecodeNumberErrorType\n | DecodeStringErrorType\n | InvalidAbiDecodingTypeErrorType\n\nfunction decodeParameter(\n cursor: Cursor,\n param: AbiParameter,\n { staticPosition }: { staticPosition: number },\n) {\n const arrayComponents = getArrayComponents(param.type)\n if (arrayComponents) {\n const [length, type] = arrayComponents\n return decodeArray(cursor, { ...param, type }, { length, staticPosition })\n }\n if (param.type === 'tuple')\n return decodeTuple(cursor, param as TupleAbiParameter, { staticPosition })\n\n if (param.type === 'address') return decodeAddress(cursor)\n if (param.type === 'bool') return decodeBool(cursor)\n if (param.type.startsWith('bytes'))\n return decodeBytes(cursor, param, { staticPosition })\n if (param.type.startsWith('uint') || param.type.startsWith('int'))\n return decodeNumber(cursor, param)\n if (param.type === 'string') return decodeString(cursor, { staticPosition })\n throw new InvalidAbiDecodingTypeError(param.type, {\n docsPath: '/docs/contract/decodeAbiParameters',\n })\n}\n\n////////////////////////////////////////////////////////////////////\n// Type Decoders\n\nconst sizeOfLength = 32\nconst sizeOfOffset = 32\n\ntype DecodeAddressErrorType =\n | ChecksumAddressErrorType\n | BytesToHexErrorType\n | SliceBytesErrorType\n | ErrorType\n\nfunction decodeAddress(cursor: Cursor) {\n const value = cursor.readBytes(32)\n return [checksumAddress(bytesToHex(sliceBytes(value, -20))), 32]\n}\n\ntype DecodeArrayErrorType = BytesToNumberErrorType | ErrorType\n\nfunction decodeArray(\n cursor: Cursor,\n param: AbiParameter,\n { length, staticPosition }: { length: number | null; staticPosition: number },\n) {\n // If the length of the array is not known in advance (dynamic array),\n // this means we will need to wonder off to the pointer and decode.\n if (!length) {\n // Dealing with a dynamic type, so get the offset of the array data.\n const offset = bytesToNumber(cursor.readBytes(sizeOfOffset))\n\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset\n const startOfData = start + sizeOfLength\n\n // Get the length of the array from the offset.\n cursor.setPosition(start)\n const length = bytesToNumber(cursor.readBytes(sizeOfLength))\n\n // Check if the array has any dynamic children.\n const dynamicChild = hasDynamicChild(param)\n\n let consumed = 0\n const value: unknown[] = []\n for (let i = 0; i < length; ++i) {\n // If any of the children is dynamic, then all elements will be offset pointer, thus size of one slot (32 bytes).\n // Otherwise, elements will be the size of their encoding (consumed bytes).\n cursor.setPosition(startOfData + (dynamicChild ? i * 32 : consumed))\n const [data, consumed_] = decodeParameter(cursor, param, {\n staticPosition: startOfData,\n })\n consumed += consumed_\n value.push(data)\n }\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return [value, 32]\n }\n\n // If the length of the array is known in advance,\n // and the length of an element deeply nested in the array is not known,\n // we need to decode the offset of the array data.\n if (hasDynamicChild(param)) {\n // Dealing with dynamic types, so get the offset of the array data.\n const offset = bytesToNumber(cursor.readBytes(sizeOfOffset))\n\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset\n\n const value: unknown[] = []\n for (let i = 0; i < length; ++i) {\n // Move cursor along to the next slot (next offset pointer).\n cursor.setPosition(start + i * 32)\n const [data] = decodeParameter(cursor, param, {\n staticPosition: start,\n })\n value.push(data)\n }\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return [value, 32]\n }\n\n // If the length of the array is known in advance and the array is deeply static,\n // then we can just decode each element in sequence.\n let consumed = 0\n const value: unknown[] = []\n for (let i = 0; i < length; ++i) {\n const [data, consumed_] = decodeParameter(cursor, param, {\n staticPosition: staticPosition + consumed,\n })\n consumed += consumed_\n value.push(data)\n }\n return [value, consumed]\n}\n\ntype DecodeBoolErrorType = BytesToBoolErrorType | ErrorType\n\nfunction decodeBool(cursor: Cursor) {\n return [bytesToBool(cursor.readBytes(32), { size: 32 }), 32]\n}\n\ntype DecodeBytesErrorType =\n | BytesToNumberErrorType\n | BytesToHexErrorType\n | ErrorType\n\nfunction decodeBytes(\n cursor: Cursor,\n param: AbiParameter,\n { staticPosition }: { staticPosition: number },\n) {\n const [_, size] = param.type.split('bytes')\n if (!size) {\n // Dealing with dynamic types, so get the offset of the bytes data.\n const offset = bytesToNumber(cursor.readBytes(32))\n\n // Set position of the cursor to start of bytes data.\n cursor.setPosition(staticPosition + offset)\n\n const length = bytesToNumber(cursor.readBytes(32))\n\n // If there is no length, we have zero data.\n if (length === 0) {\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return ['0x', 32]\n }\n\n const data = cursor.readBytes(length)\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return [bytesToHex(data), 32]\n }\n\n const value = bytesToHex(cursor.readBytes(Number.parseInt(size), 32))\n return [value, 32]\n}\n\ntype DecodeNumberErrorType =\n | BytesToNumberErrorType\n | BytesToBigIntErrorType\n | ErrorType\n\nfunction decodeNumber(cursor: Cursor, param: AbiParameter) {\n const signed = param.type.startsWith('int')\n const size = Number.parseInt(param.type.split('int')[1] || '256')\n const value = cursor.readBytes(32)\n return [\n size > 48\n ? bytesToBigInt(value, { signed })\n : bytesToNumber(value, { signed }),\n 32,\n ]\n}\n\ntype TupleAbiParameter = AbiParameter & { components: readonly AbiParameter[] }\n\ntype DecodeTupleErrorType = BytesToNumberErrorType | ErrorType\n\nfunction decodeTuple(\n cursor: Cursor,\n param: TupleAbiParameter,\n { staticPosition }: { staticPosition: number },\n) {\n // Tuples can have unnamed components (i.e. they are arrays), so we must\n // determine whether the tuple is named or unnamed. In the case of a named\n // tuple, the value will be an object where each property is the name of the\n // component. In the case of an unnamed tuple, the value will be an array.\n const hasUnnamedChild =\n param.components.length === 0 || param.components.some(({ name }) => !name)\n\n // Initialize the value to an object or an array, depending on whether the\n // tuple is named or unnamed.\n const value: any = hasUnnamedChild ? [] : {}\n let consumed = 0\n\n // If the tuple has a dynamic child, we must first decode the offset to the\n // tuple data.\n if (hasDynamicChild(param)) {\n // Dealing with dynamic types, so get the offset of the tuple data.\n const offset = bytesToNumber(cursor.readBytes(sizeOfOffset))\n\n // Start is the static position of referencing slot + offset.\n const start = staticPosition + offset\n\n for (let i = 0; i < param.components.length; ++i) {\n const component = param.components[i]\n cursor.setPosition(start + consumed)\n const [data, consumed_] = decodeParameter(cursor, component, {\n staticPosition: start,\n })\n consumed += consumed_\n value[hasUnnamedChild ? i : component?.name!] = data\n }\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return [value, 32]\n }\n\n // If the tuple has static children, we can just decode each component\n // in sequence.\n for (let i = 0; i < param.components.length; ++i) {\n const component = param.components[i]\n const [data, consumed_] = decodeParameter(cursor, component, {\n staticPosition,\n })\n value[hasUnnamedChild ? i : component?.name!] = data\n consumed += consumed_\n }\n return [value, consumed]\n}\n\ntype DecodeStringErrorType =\n | BytesToNumberErrorType\n | BytesToStringErrorType\n | TrimErrorType\n | ErrorType\n\nfunction decodeString(\n cursor: Cursor,\n { staticPosition }: { staticPosition: number },\n) {\n // Get offset to start of string data.\n const offset = bytesToNumber(cursor.readBytes(32))\n\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset\n cursor.setPosition(start)\n\n const length = bytesToNumber(cursor.readBytes(32))\n\n // If there is no length, we have zero data (empty string).\n if (length === 0) {\n cursor.setPosition(staticPosition + 32)\n return ['', 32]\n }\n\n const data = cursor.readBytes(length, 32)\n const value = bytesToString(trim(data))\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n\n return [value, 32]\n}\n\nfunction hasDynamicChild(param: AbiParameter) {\n const { type } = param\n if (type === 'string') return true\n if (type === 'bytes') return true\n if (type.endsWith('[]')) return true\n\n if (type === 'tuple') return (param as any).components?.some(hasDynamicChild)\n\n const arrayComponents = getArrayComponents(param.type)\n if (\n arrayComponents &&\n hasDynamicChild({ ...param, type: arrayComponents[1] } as AbiParameter)\n )\n return true\n\n return false\n}\n","import type { Abi, ExtractAbiError } from 'abitype'\n\nimport { solidityError, solidityPanic } from '../../constants/solidity.js'\nimport {\n AbiDecodingZeroDataError,\n type AbiDecodingZeroDataErrorType,\n AbiErrorSignatureNotFoundError,\n type AbiErrorSignatureNotFoundErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n AbiItem,\n ContractErrorArgs,\n ContractErrorName,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport { slice } from '../data/slice.js'\nimport {\n type ToFunctionSelectorErrorType,\n toFunctionSelector,\n} from '../hash/toFunctionSelector.js'\nimport {\n type DecodeAbiParametersErrorType,\n decodeAbiParameters,\n} from './decodeAbiParameters.js'\nimport { type FormatAbiItemErrorType, formatAbiItem } from './formatAbiItem.js'\n\nexport type DecodeErrorResultParameters<\n abi extends Abi | readonly unknown[] = Abi,\n> = { abi?: abi | undefined; data: Hex }\n\nexport type DecodeErrorResultReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n ///\n allErrorNames extends ContractErrorName = ContractErrorName,\n> = IsNarrowable extends true\n ? UnionEvaluate<\n {\n [errorName in allErrorNames]: {\n abiItem: abi extends Abi\n ? Abi extends abi\n ? AbiItem\n : ExtractAbiError\n : AbiItem\n args: ContractErrorArgs\n errorName: errorName\n }\n }[allErrorNames]\n >\n : {\n abiItem: AbiItem\n args: readonly unknown[] | undefined\n errorName: string\n }\n\nexport type DecodeErrorResultErrorType =\n | AbiDecodingZeroDataErrorType\n | AbiErrorSignatureNotFoundErrorType\n | DecodeAbiParametersErrorType\n | FormatAbiItemErrorType\n | ToFunctionSelectorErrorType\n | ErrorType\n\nexport function decodeErrorResult(\n parameters: DecodeErrorResultParameters,\n): DecodeErrorResultReturnType {\n const { abi, data } = parameters as DecodeErrorResultParameters\n\n const signature = slice(data, 0, 4)\n if (signature === '0x') throw new AbiDecodingZeroDataError()\n\n const abi_ = [...(abi || []), solidityError, solidityPanic]\n const abiItem = abi_.find(\n (x) =>\n x.type === 'error' && signature === toFunctionSelector(formatAbiItem(x)),\n )\n if (!abiItem)\n throw new AbiErrorSignatureNotFoundError(signature, {\n docsPath: '/docs/contract/decodeErrorResult',\n })\n return {\n abiItem,\n args:\n 'inputs' in abiItem && abiItem.inputs && abiItem.inputs.length > 0\n ? decodeAbiParameters(abiItem.inputs, slice(data, 4))\n : undefined,\n errorName: (abiItem as { name: string }).name,\n } as DecodeErrorResultReturnType\n}\n","import type { Abi, AbiStateMutability, ExtractAbiFunctions } from 'abitype'\n\nimport {\n AbiFunctionNotFoundError,\n type AbiFunctionNotFoundErrorType,\n AbiFunctionOutputsNotFoundError,\n type AbiFunctionOutputsNotFoundErrorType,\n} from '../../errors/abi.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n ContractFunctionReturnType,\n Widen,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport {\n type DecodeAbiParametersErrorType,\n decodeAbiParameters,\n} from './decodeAbiParameters.js'\nimport { type GetAbiItemErrorType, getAbiItem } from './getAbiItem.js'\n\nconst docsPath = '/docs/contract/decodeFunctionResult'\n\nexport type DecodeFunctionResultParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName\n | undefined = ContractFunctionName,\n args extends ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n > = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n >,\n ///\n hasFunctions = abi extends Abi\n ? Abi extends abi\n ? true\n : [ExtractAbiFunctions] extends [never]\n ? false\n : true\n : true,\n allArgs = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n >,\n allFunctionNames = ContractFunctionName,\n> = {\n abi: abi\n data: Hex\n} & UnionEvaluate<\n IsNarrowable extends true\n ? abi['length'] extends 1\n ? { functionName?: functionName | allFunctionNames | undefined }\n : { functionName: functionName | allFunctionNames }\n : { functionName?: functionName | allFunctionNames | undefined }\n> &\n UnionEvaluate<\n readonly [] extends allArgs\n ? {\n args?:\n | allArgs // show all options\n // infer value, widen inferred value of `args` conditionally to match `allArgs`\n | (abi extends Abi\n ? args extends allArgs\n ? Widen\n : never\n : never)\n | undefined\n }\n : {\n args?:\n | allArgs // show all options\n | (Widen & (args extends allArgs ? unknown : never)) // infer value, widen inferred value of `args` match `allArgs` (e.g. avoid union `args: readonly [123n] | readonly [bigint]`)\n | undefined\n }\n > &\n (hasFunctions extends true ? unknown : never)\n\nexport type DecodeFunctionResultReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName\n | undefined = ContractFunctionName,\n args extends ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n > = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n >,\n> = ContractFunctionReturnType<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName,\n args\n>\n\nexport type DecodeFunctionResultErrorType =\n | AbiFunctionNotFoundErrorType\n | AbiFunctionOutputsNotFoundErrorType\n | DecodeAbiParametersErrorType\n | GetAbiItemErrorType\n | ErrorType\n\nexport function decodeFunctionResult<\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName | undefined = undefined,\n const args extends ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n > = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n >,\n>(\n parameters: DecodeFunctionResultParameters,\n): DecodeFunctionResultReturnType {\n const { abi, args, functionName, data } =\n parameters as DecodeFunctionResultParameters\n\n let abiItem = abi[0]\n if (functionName) {\n const item = getAbiItem({ abi, args, name: functionName })\n if (!item) throw new AbiFunctionNotFoundError(functionName, { docsPath })\n abiItem = item\n }\n\n if (abiItem.type !== 'function')\n throw new AbiFunctionNotFoundError(undefined, { docsPath })\n if (!abiItem.outputs)\n throw new AbiFunctionOutputsNotFoundError(abiItem.name, { docsPath })\n\n const values = decodeAbiParameters(abiItem.outputs, data)\n if (values && values.length > 1)\n return values as DecodeFunctionResultReturnType\n if (values && values.length === 1)\n return values[0] as DecodeFunctionResultReturnType\n return undefined as DecodeFunctionResultReturnType\n}\n","import type {\n AbiParameter,\n AbiParameterToPrimitiveType,\n AbiParametersToPrimitiveTypes,\n} from 'abitype'\n\nimport {\n AbiEncodingArrayLengthMismatchError,\n type AbiEncodingArrayLengthMismatchErrorType,\n AbiEncodingBytesSizeMismatchError,\n type AbiEncodingBytesSizeMismatchErrorType,\n AbiEncodingLengthMismatchError,\n type AbiEncodingLengthMismatchErrorType,\n InvalidAbiEncodingTypeError,\n type InvalidAbiEncodingTypeErrorType,\n InvalidArrayError,\n type InvalidArrayErrorType,\n} from '../../errors/abi.js'\nimport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../../errors/address.js'\nimport { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport { type IsAddressErrorType, isAddress } from '../address/isAddress.js'\nimport { type ConcatErrorType, concat } from '../data/concat.js'\nimport { type PadHexErrorType, padHex } from '../data/pad.js'\nimport { type SizeErrorType, size } from '../data/size.js'\nimport { type SliceErrorType, slice } from '../data/slice.js'\nimport {\n type BoolToHexErrorType,\n type NumberToHexErrorType,\n type StringToHexErrorType,\n boolToHex,\n numberToHex,\n stringToHex,\n} from '../encoding/toHex.js'\n\nexport type EncodeAbiParametersReturnType = Hex\n\nexport type EncodeAbiParametersErrorType =\n | AbiEncodingLengthMismatchErrorType\n | PrepareParamsErrorType\n | EncodeParamsErrorType\n | ErrorType\n\n/**\n * @description Encodes a list of primitive values into an ABI-encoded hex value.\n *\n * - Docs: https://viem.sh/docs/abi/encodeAbiParameters#encodeabiparameters\n *\n * Generates ABI encoded data using the [ABI specification](https://docs.soliditylang.org/en/latest/abi-spec), given a set of ABI parameters (inputs/outputs) and their corresponding values.\n *\n * @param params - a set of ABI Parameters (params), that can be in the shape of the inputs or outputs attribute of an ABI Item.\n * @param values - a set of values (values) that correspond to the given params.\n * @example\n * ```typescript\n * import { encodeAbiParameters } from 'viem'\n *\n * const encodedData = encodeAbiParameters(\n * [\n * { name: 'x', type: 'string' },\n * { name: 'y', type: 'uint' },\n * { name: 'z', type: 'bool' }\n * ],\n * ['wagmi', 420n, true]\n * )\n * ```\n *\n * You can also pass in Human Readable parameters with the parseAbiParameters utility.\n *\n * @example\n * ```typescript\n * import { encodeAbiParameters, parseAbiParameters } from 'viem'\n *\n * const encodedData = encodeAbiParameters(\n * parseAbiParameters('string x, uint y, bool z'),\n * ['wagmi', 420n, true]\n * )\n * ```\n */\nexport function encodeAbiParameters<\n const params extends readonly AbiParameter[] | readonly unknown[],\n>(\n params: params,\n values: params extends readonly AbiParameter[]\n ? AbiParametersToPrimitiveTypes\n : never,\n): EncodeAbiParametersReturnType {\n if (params.length !== values.length)\n throw new AbiEncodingLengthMismatchError({\n expectedLength: params.length as number,\n givenLength: values.length as any,\n })\n // Prepare the parameters to determine dynamic types to encode.\n const preparedParams = prepareParams({\n params: params as readonly AbiParameter[],\n values: values as any,\n })\n const data = encodeParams(preparedParams)\n if (data.length === 0) return '0x'\n return data\n}\n\n/////////////////////////////////////////////////////////////////\n\ntype PreparedParam = { dynamic: boolean; encoded: Hex }\n\ntype TupleAbiParameter = AbiParameter & { components: readonly AbiParameter[] }\ntype Tuple = AbiParameterToPrimitiveType\n\ntype PrepareParamsErrorType = PrepareParamErrorType | ErrorType\n\nfunction prepareParams({\n params,\n values,\n}: {\n params: params\n values: AbiParametersToPrimitiveTypes\n}) {\n const preparedParams: PreparedParam[] = []\n for (let i = 0; i < params.length; i++) {\n preparedParams.push(prepareParam({ param: params[i], value: values[i] }))\n }\n return preparedParams\n}\n\ntype PrepareParamErrorType =\n | EncodeAddressErrorType\n | EncodeArrayErrorType\n | EncodeBytesErrorType\n | EncodeBoolErrorType\n | EncodeNumberErrorType\n | EncodeStringErrorType\n | EncodeTupleErrorType\n | GetArrayComponentsErrorType\n | InvalidAbiEncodingTypeErrorType\n | ErrorType\n\nfunction prepareParam({\n param,\n value,\n}: {\n param: param\n value: AbiParameterToPrimitiveType\n}): PreparedParam {\n const arrayComponents = getArrayComponents(param.type)\n if (arrayComponents) {\n const [length, type] = arrayComponents\n return encodeArray(value, { length, param: { ...param, type } })\n }\n if (param.type === 'tuple') {\n return encodeTuple(value as unknown as Tuple, {\n param: param as TupleAbiParameter,\n })\n }\n if (param.type === 'address') {\n return encodeAddress(value as unknown as Hex)\n }\n if (param.type === 'bool') {\n return encodeBool(value as unknown as boolean)\n }\n if (param.type.startsWith('uint') || param.type.startsWith('int')) {\n const signed = param.type.startsWith('int')\n return encodeNumber(value as unknown as number, { signed })\n }\n if (param.type.startsWith('bytes')) {\n return encodeBytes(value as unknown as Hex, { param })\n }\n if (param.type === 'string') {\n return encodeString(value as unknown as string)\n }\n throw new InvalidAbiEncodingTypeError(param.type, {\n docsPath: '/docs/contract/encodeAbiParameters',\n })\n}\n\n/////////////////////////////////////////////////////////////////\n\ntype EncodeParamsErrorType = NumberToHexErrorType | SizeErrorType | ErrorType\n\nfunction encodeParams(preparedParams: PreparedParam[]): Hex {\n // 1. Compute the size of the static part of the parameters.\n let staticSize = 0\n for (let i = 0; i < preparedParams.length; i++) {\n const { dynamic, encoded } = preparedParams[i]\n if (dynamic) staticSize += 32\n else staticSize += size(encoded)\n }\n\n // 2. Split the parameters into static and dynamic parts.\n const staticParams: Hex[] = []\n const dynamicParams: Hex[] = []\n let dynamicSize = 0\n for (let i = 0; i < preparedParams.length; i++) {\n const { dynamic, encoded } = preparedParams[i]\n if (dynamic) {\n staticParams.push(numberToHex(staticSize + dynamicSize, { size: 32 }))\n dynamicParams.push(encoded)\n dynamicSize += size(encoded)\n } else {\n staticParams.push(encoded)\n }\n }\n\n // 3. Concatenate static and dynamic parts.\n return concat([...staticParams, ...dynamicParams])\n}\n\n/////////////////////////////////////////////////////////////////\n\ntype EncodeAddressErrorType =\n | InvalidAddressErrorType\n | IsAddressErrorType\n | ErrorType\n\nfunction encodeAddress(value: Hex): PreparedParam {\n if (!isAddress(value)) throw new InvalidAddressError({ address: value })\n return { dynamic: false, encoded: padHex(value.toLowerCase() as Hex) }\n}\n\ntype EncodeArrayErrorType =\n | AbiEncodingArrayLengthMismatchErrorType\n | ConcatErrorType\n | EncodeParamsErrorType\n | InvalidArrayErrorType\n | NumberToHexErrorType\n // TODO: Add back once circular type reference is resolved\n // | PrepareParamErrorType\n | ErrorType\n\nfunction encodeArray(\n value: AbiParameterToPrimitiveType,\n {\n length,\n param,\n }: {\n length: number | null\n param: param\n },\n): PreparedParam {\n const dynamic = length === null\n\n if (!Array.isArray(value)) throw new InvalidArrayError(value)\n if (!dynamic && value.length !== length)\n throw new AbiEncodingArrayLengthMismatchError({\n expectedLength: length!,\n givenLength: value.length,\n type: `${param.type}[${length}]`,\n })\n\n let dynamicChild = false\n const preparedParams: PreparedParam[] = []\n for (let i = 0; i < value.length; i++) {\n const preparedParam = prepareParam({ param, value: value[i] })\n if (preparedParam.dynamic) dynamicChild = true\n preparedParams.push(preparedParam)\n }\n\n if (dynamic || dynamicChild) {\n const data = encodeParams(preparedParams)\n if (dynamic) {\n const length = numberToHex(preparedParams.length, { size: 32 })\n return {\n dynamic: true,\n encoded: preparedParams.length > 0 ? concat([length, data]) : length,\n }\n }\n if (dynamicChild) return { dynamic: true, encoded: data }\n }\n return {\n dynamic: false,\n encoded: concat(preparedParams.map(({ encoded }) => encoded)),\n }\n}\n\ntype EncodeBytesErrorType =\n | AbiEncodingBytesSizeMismatchErrorType\n | ConcatErrorType\n | PadHexErrorType\n | NumberToHexErrorType\n | SizeErrorType\n | ErrorType\n\nfunction encodeBytes(\n value: Hex,\n { param }: { param: param },\n): PreparedParam {\n const [, paramSize] = param.type.split('bytes')\n const bytesSize = size(value)\n if (!paramSize) {\n let value_ = value\n // If the size is not divisible by 32 bytes, pad the end\n // with empty bytes to the ceiling 32 bytes.\n if (bytesSize % 32 !== 0)\n value_ = padHex(value_, {\n dir: 'right',\n size: Math.ceil((value.length - 2) / 2 / 32) * 32,\n })\n return {\n dynamic: true,\n encoded: concat([padHex(numberToHex(bytesSize, { size: 32 })), value_]),\n }\n }\n if (bytesSize !== Number.parseInt(paramSize))\n throw new AbiEncodingBytesSizeMismatchError({\n expectedSize: Number.parseInt(paramSize),\n value,\n })\n return { dynamic: false, encoded: padHex(value, { dir: 'right' }) }\n}\n\ntype EncodeBoolErrorType = PadHexErrorType | BoolToHexErrorType | ErrorType\n\nfunction encodeBool(value: boolean): PreparedParam {\n if (typeof value !== 'boolean')\n throw new BaseError(\n `Invalid boolean value: \"${value}\" (type: ${typeof value}). Expected: \\`true\\` or \\`false\\`.`,\n )\n return { dynamic: false, encoded: padHex(boolToHex(value)) }\n}\n\ntype EncodeNumberErrorType = NumberToHexErrorType | ErrorType\n\nfunction encodeNumber(\n value: number,\n { signed }: { signed: boolean },\n): PreparedParam {\n return {\n dynamic: false,\n encoded: numberToHex(value, {\n size: 32,\n signed,\n }),\n }\n}\n\ntype EncodeStringErrorType =\n | ConcatErrorType\n | NumberToHexErrorType\n | PadHexErrorType\n | SizeErrorType\n | SliceErrorType\n | StringToHexErrorType\n | ErrorType\n\nfunction encodeString(value: string): PreparedParam {\n const hexValue = stringToHex(value)\n const partsLength = Math.ceil(size(hexValue) / 32)\n const parts: Hex[] = []\n for (let i = 0; i < partsLength; i++) {\n parts.push(\n padHex(slice(hexValue, i * 32, (i + 1) * 32), {\n dir: 'right',\n }),\n )\n }\n return {\n dynamic: true,\n encoded: concat([\n padHex(numberToHex(size(hexValue), { size: 32 })),\n ...parts,\n ]),\n }\n}\n\ntype EncodeTupleErrorType =\n | ConcatErrorType\n | EncodeParamsErrorType\n // TODO: Add back once circular type reference is resolved\n // | PrepareParamErrorType\n | ErrorType\n\nfunction encodeTuple<\n const param extends AbiParameter & { components: readonly AbiParameter[] },\n>(\n value: AbiParameterToPrimitiveType,\n { param }: { param: param },\n): PreparedParam {\n let dynamic = false\n const preparedParams: PreparedParam[] = []\n for (let i = 0; i < param.components.length; i++) {\n const param_ = param.components[i]\n const index = Array.isArray(value) ? i : param_.name\n const preparedParam = prepareParam({\n param: param_,\n value: (value as any)[index!] as readonly unknown[],\n })\n preparedParams.push(preparedParam)\n if (preparedParam.dynamic) dynamic = true\n }\n return {\n dynamic,\n encoded: dynamic\n ? encodeParams(preparedParams)\n : concat(preparedParams.map(({ encoded }) => encoded)),\n }\n}\n\ntype GetArrayComponentsErrorType = ErrorType\n\nexport function getArrayComponents(\n type: string,\n): [length: number | null, innerType: string] | undefined {\n const matches = type.match(/^(.*)\\[(\\d+)?\\]$/)\n return matches\n ? // Return `null` if the array is dynamic.\n [matches[2] ? Number(matches[2]) : null, matches[1]]\n : undefined\n}\n","import type {\n Abi,\n AbiStateMutability,\n ExtractAbiFunction,\n ExtractAbiFunctions,\n} from 'abitype'\n\nimport {\n AbiFunctionNotFoundError,\n type AbiFunctionNotFoundErrorType,\n} from '../../errors/abi.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n} from '../../types/contract.js'\nimport type { ConcatHexErrorType } from '../data/concat.js'\nimport {\n type ToFunctionSelectorErrorType,\n toFunctionSelector,\n} from '../hash/toFunctionSelector.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport { type FormatAbiItemErrorType, formatAbiItem } from './formatAbiItem.js'\nimport { type GetAbiItemErrorType, getAbiItem } from './getAbiItem.js'\n\nconst docsPath = '/docs/contract/encodeFunctionData'\n\nexport type PrepareEncodeFunctionDataParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName\n | undefined = ContractFunctionName,\n ///\n hasFunctions = abi extends Abi\n ? Abi extends abi\n ? true\n : [ExtractAbiFunctions] extends [never]\n ? false\n : true\n : true,\n allArgs = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n >,\n allFunctionNames = ContractFunctionName,\n> = {\n abi: abi\n} & UnionEvaluate<\n IsNarrowable extends true\n ? abi['length'] extends 1\n ? { functionName?: functionName | allFunctionNames | Hex | undefined }\n : { functionName: functionName | allFunctionNames | Hex }\n : { functionName?: functionName | allFunctionNames | Hex | undefined }\n> &\n UnionEvaluate<{ args?: allArgs | undefined }> &\n (hasFunctions extends true ? unknown : never)\n\nexport type PrepareEncodeFunctionDataReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName\n | undefined = ContractFunctionName,\n> = {\n abi: abi extends Abi\n ? functionName extends ContractFunctionName\n ? [ExtractAbiFunction]\n : abi\n : Abi\n functionName: Hex\n}\n\nexport type PrepareEncodeFunctionDataErrorType =\n | AbiFunctionNotFoundErrorType\n | ConcatHexErrorType\n | FormatAbiItemErrorType\n | GetAbiItemErrorType\n | ToFunctionSelectorErrorType\n | ErrorType\n\nexport function prepareEncodeFunctionData<\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName | undefined = undefined,\n>(\n parameters: PrepareEncodeFunctionDataParameters,\n): PrepareEncodeFunctionDataReturnType {\n const { abi, args, functionName } =\n parameters as PrepareEncodeFunctionDataParameters\n\n let abiItem = abi[0]\n if (functionName) {\n const item = getAbiItem({\n abi,\n args,\n name: functionName,\n })\n if (!item) throw new AbiFunctionNotFoundError(functionName, { docsPath })\n abiItem = item\n }\n\n if (abiItem.type !== 'function')\n throw new AbiFunctionNotFoundError(undefined, { docsPath })\n\n return {\n abi: [abiItem],\n functionName: toFunctionSelector(formatAbiItem(abiItem)),\n } as unknown as PrepareEncodeFunctionDataReturnType\n}\n","import type { Abi, AbiStateMutability, ExtractAbiFunctions } from 'abitype'\n\nimport type { AbiFunctionNotFoundErrorType } from '../../errors/abi.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n} from '../../types/contract.js'\nimport { type ConcatHexErrorType, concatHex } from '../data/concat.js'\nimport type { ToFunctionSelectorErrorType } from '../hash/toFunctionSelector.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport {\n type EncodeAbiParametersErrorType,\n encodeAbiParameters,\n} from './encodeAbiParameters.js'\nimport type { FormatAbiItemErrorType } from './formatAbiItem.js'\nimport type { GetAbiItemErrorType } from './getAbiItem.js'\nimport { prepareEncodeFunctionData } from './prepareEncodeFunctionData.js'\n\nexport type EncodeFunctionDataParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName\n | Hex\n | undefined = ContractFunctionName,\n ///\n hasFunctions = abi extends Abi\n ? Abi extends abi\n ? true\n : [ExtractAbiFunctions] extends [never]\n ? false\n : true\n : true,\n allArgs = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName\n ? functionName\n : ContractFunctionName\n >,\n allFunctionNames = ContractFunctionName,\n> = {\n abi: abi\n} & UnionEvaluate<\n IsNarrowable extends true\n ? abi['length'] extends 1\n ? { functionName?: functionName | allFunctionNames | Hex | undefined }\n : { functionName: functionName | allFunctionNames | Hex }\n : { functionName?: functionName | allFunctionNames | Hex | undefined }\n> &\n UnionEvaluate<\n readonly [] extends allArgs\n ? { args?: allArgs | undefined }\n : { args: allArgs }\n > &\n (hasFunctions extends true ? unknown : never)\n\nexport type EncodeFunctionDataReturnType = Hex\n\nexport type EncodeFunctionDataErrorType =\n | AbiFunctionNotFoundErrorType\n | ConcatHexErrorType\n | EncodeAbiParametersErrorType\n | FormatAbiItemErrorType\n | GetAbiItemErrorType\n | ToFunctionSelectorErrorType\n | ErrorType\n\nexport function encodeFunctionData<\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName | undefined = undefined,\n>(\n parameters: EncodeFunctionDataParameters,\n): EncodeFunctionDataReturnType {\n const { args } = parameters as EncodeFunctionDataParameters\n\n const { abi, functionName } = (() => {\n if (\n parameters.abi.length === 1 &&\n parameters.functionName?.startsWith('0x')\n )\n return parameters as { abi: Abi; functionName: Hex }\n return prepareEncodeFunctionData(parameters)\n })()\n\n const abiItem = abi[0]\n const signature = functionName\n\n const data =\n 'inputs' in abiItem && abiItem.inputs\n ? encodeAbiParameters(abiItem.inputs, args ?? [])\n : undefined\n return concatHex([signature, data ?? '0x'])\n}\n","import type { AbiParameter } from 'abitype'\n\nimport {\n InvalidDefinitionTypeError,\n type InvalidDefinitionTypeErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { AbiItem } from '../../types/contract.js'\n\nexport type FormatAbiItemErrorType =\n | FormatAbiParamsErrorType\n | InvalidDefinitionTypeErrorType\n | ErrorType\n\nexport function formatAbiItem(\n abiItem: AbiItem,\n { includeName = false }: { includeName?: boolean | undefined } = {},\n) {\n if (\n abiItem.type !== 'function' &&\n abiItem.type !== 'event' &&\n abiItem.type !== 'error'\n )\n throw new InvalidDefinitionTypeError(abiItem.type)\n\n return `${abiItem.name}(${formatAbiParams(abiItem.inputs, { includeName })})`\n}\n\nexport type FormatAbiParamsErrorType = ErrorType\n\nexport function formatAbiParams(\n params: readonly AbiParameter[] | undefined,\n { includeName = false }: { includeName?: boolean | undefined } = {},\n): string {\n if (!params) return ''\n return params\n .map((param) => formatAbiParam(param, { includeName }))\n .join(includeName ? ', ' : ',')\n}\n\nexport type FormatAbiParamErrorType = ErrorType\n\nfunction formatAbiParam(\n param: AbiParameter,\n { includeName }: { includeName: boolean },\n): string {\n if (param.type.startsWith('tuple')) {\n return `(${formatAbiParams(\n (param as unknown as { components: AbiParameter[] }).components,\n { includeName },\n )})${param.type.slice('tuple'.length)}`\n }\n return param.type + (includeName && param.name ? ` ${param.name}` : '')\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport {\n type ToSignatureHashErrorType,\n toSignatureHash,\n} from './toSignatureHash.js'\n\nexport type ToEventSelectorErrorType = ToSignatureHashErrorType | ErrorType\n\n/**\n * Returns the event selector for a given event definition.\n *\n * @example\n * const selector = toEventSelector('Transfer(address indexed from, address indexed to, uint256 amount)')\n * // 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n */\nexport const toEventSelector = toSignatureHash\n","import type { Abi, AbiParameter, Address } from 'abitype'\n\nimport {\n AbiItemAmbiguityError,\n type AbiItemAmbiguityErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n AbiItem,\n AbiItemArgs,\n AbiItemName,\n ExtractAbiItemForArgs,\n Widen,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { UnionEvaluate } from '../../types/utils.js'\nimport { type IsHexErrorType, isHex } from '../../utils/data/isHex.js'\nimport { type IsAddressErrorType, isAddress } from '../address/isAddress.js'\nimport { toEventSelector } from '../hash/toEventSelector.js'\nimport {\n type ToFunctionSelectorErrorType,\n toFunctionSelector,\n} from '../hash/toFunctionSelector.js'\n\nexport type GetAbiItemParameters<\n abi extends Abi | readonly unknown[] = Abi,\n name extends AbiItemName = AbiItemName,\n args extends AbiItemArgs | undefined = AbiItemArgs,\n ///\n allArgs = AbiItemArgs,\n allNames = AbiItemName,\n> = {\n abi: abi\n name:\n | allNames // show all options\n | (name extends allNames ? name : never) // infer value\n | Hex // function selector\n} & UnionEvaluate<\n readonly [] extends allArgs\n ? {\n args?:\n | allArgs // show all options\n // infer value, widen inferred value of `args` conditionally to match `allArgs`\n | (abi extends Abi\n ? args extends allArgs\n ? Widen\n : never\n : never)\n | undefined\n }\n : {\n args?:\n | allArgs // show all options\n | (Widen & (args extends allArgs ? unknown : never)) // infer value, widen inferred value of `args` match `allArgs` (e.g. avoid union `args: readonly [123n] | readonly [bigint]`)\n | undefined\n }\n>\n\nexport type GetAbiItemErrorType =\n | IsArgOfTypeErrorType\n | IsHexErrorType\n | ToFunctionSelectorErrorType\n | AbiItemAmbiguityErrorType\n | ErrorType\n\nexport type GetAbiItemReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n name extends AbiItemName = AbiItemName,\n args extends AbiItemArgs | undefined = AbiItemArgs,\n> = abi extends Abi\n ? Abi extends abi\n ? AbiItem | undefined\n : ExtractAbiItemForArgs<\n abi,\n name,\n args extends AbiItemArgs ? args : AbiItemArgs\n >\n : AbiItem | undefined\n\nexport function getAbiItem<\n const abi extends Abi | readonly unknown[],\n name extends AbiItemName,\n const args extends AbiItemArgs | undefined = undefined,\n>(\n parameters: GetAbiItemParameters,\n): GetAbiItemReturnType {\n const { abi, args = [], name } = parameters as unknown as GetAbiItemParameters\n\n const isSelector = isHex(name, { strict: false })\n const abiItems = (abi as Abi).filter((abiItem) => {\n if (isSelector) {\n if (abiItem.type === 'function')\n return toFunctionSelector(abiItem) === name\n if (abiItem.type === 'event') return toEventSelector(abiItem) === name\n return false\n }\n return 'name' in abiItem && abiItem.name === name\n })\n\n if (abiItems.length === 0)\n return undefined as GetAbiItemReturnType\n if (abiItems.length === 1)\n return abiItems[0] as GetAbiItemReturnType\n\n let matchedAbiItem: AbiItem | undefined = undefined\n for (const abiItem of abiItems) {\n if (!('inputs' in abiItem)) continue\n if (!args || args.length === 0) {\n if (!abiItem.inputs || abiItem.inputs.length === 0)\n return abiItem as GetAbiItemReturnType\n continue\n }\n if (!abiItem.inputs) continue\n if (abiItem.inputs.length === 0) continue\n if (abiItem.inputs.length !== args.length) continue\n const matched = args.every((arg, index) => {\n const abiParameter = 'inputs' in abiItem && abiItem.inputs![index]\n if (!abiParameter) return false\n return isArgOfType(arg, abiParameter)\n })\n if (matched) {\n // Check for ambiguity against already matched parameters (e.g. `address` vs `bytes20`).\n if (\n matchedAbiItem &&\n 'inputs' in matchedAbiItem &&\n matchedAbiItem.inputs\n ) {\n const ambiguousTypes = getAmbiguousTypes(\n abiItem.inputs,\n matchedAbiItem.inputs,\n args as readonly unknown[],\n )\n if (ambiguousTypes)\n throw new AbiItemAmbiguityError(\n {\n abiItem,\n type: ambiguousTypes[0],\n },\n {\n abiItem: matchedAbiItem,\n type: ambiguousTypes[1],\n },\n )\n }\n\n matchedAbiItem = abiItem\n }\n }\n\n if (matchedAbiItem)\n return matchedAbiItem as GetAbiItemReturnType\n return abiItems[0] as GetAbiItemReturnType\n}\n\ntype IsArgOfTypeErrorType = IsAddressErrorType | ErrorType\n\n/** @internal */\nexport function isArgOfType(arg: unknown, abiParameter: AbiParameter): boolean {\n const argType = typeof arg\n const abiParameterType = abiParameter.type\n switch (abiParameterType) {\n case 'address':\n return isAddress(arg as Address, { strict: false })\n case 'bool':\n return argType === 'boolean'\n case 'function':\n return argType === 'string'\n case 'string':\n return argType === 'string'\n default: {\n if (abiParameterType === 'tuple' && 'components' in abiParameter)\n return Object.values(abiParameter.components).every(\n (component, index) => {\n return isArgOfType(\n Object.values(arg as unknown[] | Record)[index],\n component as AbiParameter,\n )\n },\n )\n\n // `(u)int`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n // https://regexr.com/6v8hp\n if (\n /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(\n abiParameterType,\n )\n )\n return argType === 'number' || argType === 'bigint'\n\n // `bytes`: binary type of `M` bytes, `0 < M <= 32`\n // https://regexr.com/6va55\n if (/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(abiParameterType))\n return argType === 'string' || arg instanceof Uint8Array\n\n // fixed-length (`[M]`) and dynamic (`[]`) arrays\n // https://regexr.com/6va6i\n if (/[a-z]+[1-9]{0,3}(\\[[0-9]{0,}\\])+$/.test(abiParameterType)) {\n return (\n Array.isArray(arg) &&\n arg.every((x: unknown) =>\n isArgOfType(x, {\n ...abiParameter,\n // Pop off `[]` or `[M]` from end of type\n type: abiParameterType.replace(/(\\[[0-9]{0,}\\])$/, ''),\n } as AbiParameter),\n )\n )\n }\n\n return false\n }\n }\n}\n\n/** @internal */\nexport function getAmbiguousTypes(\n sourceParameters: readonly AbiParameter[],\n targetParameters: readonly AbiParameter[],\n args: AbiItemArgs,\n): AbiParameter['type'][] | undefined {\n for (const parameterIndex in sourceParameters) {\n const sourceParameter = sourceParameters[parameterIndex]\n const targetParameter = targetParameters[parameterIndex]\n\n if (\n sourceParameter.type === 'tuple' &&\n targetParameter.type === 'tuple' &&\n 'components' in sourceParameter &&\n 'components' in targetParameter\n )\n return getAmbiguousTypes(\n sourceParameter.components,\n targetParameter.components,\n (args as any)[parameterIndex],\n )\n\n const types = [sourceParameter.type, targetParameter.type]\n\n const ambiguous = (() => {\n if (types.includes('address') && types.includes('bytes20')) return true\n if (types.includes('address') && types.includes('string'))\n return isAddress(args[parameterIndex] as Address, { strict: false })\n if (types.includes('address') && types.includes('bytes'))\n return isAddress(args[parameterIndex] as Address, { strict: false })\n return false\n })()\n\n if (ambiguous) return types\n }\n\n return\n}\n","import type { Address } from 'abitype'\n\nimport { InvalidAddressError } from '../../errors/address.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type StringToBytesErrorType,\n stringToBytes,\n} from '../encoding/toBytes.js'\nimport { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'\nimport { LruMap } from '../lru.js'\nimport { type IsAddressErrorType, isAddress } from './isAddress.js'\n\nconst checksumAddressCache = /*#__PURE__*/ new LruMap
(8192)\n\nexport type ChecksumAddressErrorType =\n | Keccak256ErrorType\n | StringToBytesErrorType\n | ErrorType\n\nexport function checksumAddress(\n address_: Address,\n /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\n chainId?: number | undefined,\n): Address {\n if (checksumAddressCache.has(`${address_}.${chainId}`))\n return checksumAddressCache.get(`${address_}.${chainId}`)!\n\n const hexAddress = chainId\n ? `${chainId}${address_.toLowerCase()}`\n : address_.substring(2).toLowerCase()\n const hash = keccak256(stringToBytes(hexAddress), 'bytes')\n\n const address = (\n chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress\n ).split('')\n for (let i = 0; i < 40; i += 2) {\n if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n address[i] = address[i].toUpperCase()\n }\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {\n address[i + 1] = address[i + 1].toUpperCase()\n }\n }\n\n const result = `0x${address.join('')}` as const\n checksumAddressCache.set(`${address_}.${chainId}`, result)\n return result\n}\n\nexport type GetAddressErrorType =\n | ChecksumAddressErrorType\n | IsAddressErrorType\n | ErrorType\n\nexport function getAddress(\n address: string,\n /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\n chainId?: number,\n): Address {\n if (!isAddress(address, { strict: false }))\n throw new InvalidAddressError({ address })\n return checksumAddress(address, chainId)\n}\n","import type { Address } from 'abitype'\nimport type { ErrorType } from '../../errors/utils.js'\nimport { LruMap } from '../lru.js'\nimport { checksumAddress } from './getAddress.js'\n\nconst addressRegex = /^0x[a-fA-F0-9]{40}$/\n\n/** @internal */\nexport const isAddressCache = /*#__PURE__*/ new LruMap(8192)\n\nexport type IsAddressOptions = {\n /**\n * Enables strict mode. Whether or not to compare the address against its checksum.\n *\n * @default true\n */\n strict?: boolean | undefined\n}\n\nexport type IsAddressErrorType = ErrorType\n\nexport function isAddress(\n address: string,\n options?: IsAddressOptions | undefined,\n): address is Address {\n const { strict = true } = options ?? {}\n const cacheKey = `${address}.${strict}`\n\n if (isAddressCache.has(cacheKey)) return isAddressCache.get(cacheKey)!\n\n const result = (() => {\n if (!addressRegex.test(address)) return false\n if (address.toLowerCase() === address) return true\n if (strict) return checksumAddress(address as Address) === address\n return true\n })()\n isAddressCache.set(cacheKey, result)\n return result\n}\n","import {\n ChainDoesNotSupportContract,\n type ChainDoesNotSupportContractErrorType,\n} from '../../errors/chain.js'\nimport type { Chain, ChainContract } from '../../types/chain.js'\n\nexport type GetChainContractAddressErrorType =\n ChainDoesNotSupportContractErrorType\n\nexport function getChainContractAddress({\n blockNumber,\n chain,\n contract: name,\n}: {\n blockNumber?: bigint | undefined\n chain: Chain\n contract: string\n}) {\n const contract = (chain?.contracts as Record)?.[name]\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain,\n contract: { name },\n })\n\n if (\n blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n )\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain,\n contract: {\n name,\n blockCreated: contract.blockCreated,\n },\n })\n\n return contract.address\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nexport type ConcatReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type ConcatErrorType =\n | ConcatBytesErrorType\n | ConcatHexErrorType\n | ErrorType\n\nexport function concat(\n values: readonly value[],\n): ConcatReturnType {\n if (typeof values[0] === 'string')\n return concatHex(values as readonly Hex[]) as ConcatReturnType\n return concatBytes(values as readonly ByteArray[]) as ConcatReturnType\n}\n\nexport type ConcatBytesErrorType = ErrorType\n\nexport function concatBytes(values: readonly ByteArray[]): ByteArray {\n let length = 0\n for (const arr of values) {\n length += arr.length\n }\n const result = new Uint8Array(length)\n let offset = 0\n for (const arr of values) {\n result.set(arr, offset)\n offset += arr.length\n }\n return result\n}\n\nexport type ConcatHexErrorType = ErrorType\n\nexport function concatHex(values: readonly Hex[]): Hex {\n return `0x${(values as Hex[]).reduce(\n (acc, x) => acc + x.replace('0x', ''),\n '',\n )}`\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\n\nexport type IsHexErrorType = ErrorType\n\nexport function isHex(\n value: unknown,\n { strict = true }: { strict?: boolean | undefined } = {},\n): value is Hex {\n if (!value) return false\n if (typeof value !== 'string') return false\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x')\n}\n","import {\n SizeExceedsPaddingSizeError,\n type SizeExceedsPaddingSizeErrorType,\n} from '../../errors/data.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\ntype PadOptions = {\n dir?: 'left' | 'right' | undefined\n size?: number | null | undefined\n}\nexport type PadReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type PadErrorType = PadHexErrorType | PadBytesErrorType | ErrorType\n\nexport function pad(\n hexOrBytes: value,\n { dir, size = 32 }: PadOptions = {},\n): PadReturnType {\n if (typeof hexOrBytes === 'string')\n return padHex(hexOrBytes, { dir, size }) as PadReturnType\n return padBytes(hexOrBytes, { dir, size }) as PadReturnType\n}\n\nexport type PadHexErrorType = SizeExceedsPaddingSizeErrorType | ErrorType\n\nexport function padHex(hex_: Hex, { dir, size = 32 }: PadOptions = {}) {\n if (size === null) return hex_\n const hex = hex_.replace('0x', '')\n if (hex.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(hex.length / 2),\n targetSize: size,\n type: 'hex',\n })\n\n return `0x${hex[dir === 'right' ? 'padEnd' : 'padStart'](\n size * 2,\n '0',\n )}` as Hex\n}\n\nexport type PadBytesErrorType = SizeExceedsPaddingSizeErrorType | ErrorType\n\nexport function padBytes(\n bytes: ByteArray,\n { dir, size = 32 }: PadOptions = {},\n) {\n if (size === null) return bytes\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n })\n const paddedBytes = new Uint8Array(size)\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right'\n paddedBytes[padEnd ? i : size - i - 1] =\n bytes[padEnd ? i : bytes.length - i - 1]\n }\n return paddedBytes\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nimport { type IsHexErrorType, isHex } from './isHex.js'\n\nexport type SizeErrorType = IsHexErrorType | ErrorType\n\n/**\n * @description Retrieves the size of the value (in bytes).\n *\n * @param value The value (hex or byte array) to retrieve the size of.\n * @returns The size of the value (in bytes).\n */\nexport function size(value: Hex | ByteArray) {\n if (isHex(value, { strict: false })) return Math.ceil((value.length - 2) / 2)\n return value.length\n}\n","import {\n SliceOffsetOutOfBoundsError,\n type SliceOffsetOutOfBoundsErrorType,\n} from '../../errors/data.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nimport { type IsHexErrorType, isHex } from './isHex.js'\nimport { type SizeErrorType, size } from './size.js'\n\nexport type SliceReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type SliceErrorType =\n | IsHexErrorType\n | SliceBytesErrorType\n | SliceHexErrorType\n | ErrorType\n\n/**\n * @description Returns a section of the hex or byte array given a start/end bytes offset.\n *\n * @param value The hex or byte array to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function slice(\n value: value,\n start?: number | undefined,\n end?: number | undefined,\n { strict }: { strict?: boolean | undefined } = {},\n): SliceReturnType {\n if (isHex(value, { strict: false }))\n return sliceHex(value as Hex, start, end, {\n strict,\n }) as SliceReturnType\n return sliceBytes(value as ByteArray, start, end, {\n strict,\n }) as SliceReturnType\n}\n\nexport type AssertStartOffsetErrorType =\n | SliceOffsetOutOfBoundsErrorType\n | SizeErrorType\n | ErrorType\n\nfunction assertStartOffset(value: Hex | ByteArray, start?: number | undefined) {\n if (typeof start === 'number' && start > 0 && start > size(value) - 1)\n throw new SliceOffsetOutOfBoundsError({\n offset: start,\n position: 'start',\n size: size(value),\n })\n}\n\nexport type AssertEndOffsetErrorType =\n | SliceOffsetOutOfBoundsErrorType\n | SizeErrorType\n | ErrorType\n\nfunction assertEndOffset(\n value: Hex | ByteArray,\n start?: number | undefined,\n end?: number | undefined,\n) {\n if (\n typeof start === 'number' &&\n typeof end === 'number' &&\n size(value) !== end - start\n ) {\n throw new SliceOffsetOutOfBoundsError({\n offset: end,\n position: 'end',\n size: size(value),\n })\n }\n}\n\nexport type SliceBytesErrorType =\n | AssertStartOffsetErrorType\n | AssertEndOffsetErrorType\n | ErrorType\n\n/**\n * @description Returns a section of the byte array given a start/end bytes offset.\n *\n * @param value The byte array to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function sliceBytes(\n value_: ByteArray,\n start?: number | undefined,\n end?: number | undefined,\n { strict }: { strict?: boolean | undefined } = {},\n): ByteArray {\n assertStartOffset(value_, start)\n const value = value_.slice(start, end)\n if (strict) assertEndOffset(value, start, end)\n return value\n}\n\nexport type SliceHexErrorType =\n | AssertStartOffsetErrorType\n | AssertEndOffsetErrorType\n | ErrorType\n\n/**\n * @description Returns a section of the hex value given a start/end bytes offset.\n *\n * @param value The hex value to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function sliceHex(\n value_: Hex,\n start?: number | undefined,\n end?: number | undefined,\n { strict }: { strict?: boolean | undefined } = {},\n): Hex {\n assertStartOffset(value_, start)\n const value = `0x${value_\n .replace('0x', '')\n .slice((start ?? 0) * 2, (end ?? value_.length) * 2)}` as const\n if (strict) assertEndOffset(value, start, end)\n return value\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\ntype TrimOptions = {\n dir?: 'left' | 'right' | undefined\n}\nexport type TrimReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type TrimErrorType = ErrorType\n\nexport function trim(\n hexOrBytes: value,\n { dir = 'left' }: TrimOptions = {},\n): TrimReturnType {\n let data: any =\n typeof hexOrBytes === 'string' ? hexOrBytes.replace('0x', '') : hexOrBytes\n\n let sliceLength = 0\n for (let i = 0; i < data.length - 1; i++) {\n if (data[dir === 'left' ? i : data.length - i - 1].toString() === '0')\n sliceLength++\n else break\n }\n data =\n dir === 'left'\n ? data.slice(sliceLength)\n : data.slice(0, data.length - sliceLength)\n\n if (typeof hexOrBytes === 'string') {\n if (data.length === 1 && dir === 'right') data = `${data}0`\n return `0x${\n data.length % 2 === 1 ? `0${data}` : data\n }` as TrimReturnType\n }\n return data as TrimReturnType\n}\n","import {\n InvalidHexBooleanError,\n type InvalidHexBooleanErrorType,\n SizeOverflowError,\n type SizeOverflowErrorType,\n} from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type SizeErrorType, size as size_ } from '../data/size.js'\nimport { type TrimErrorType, trim } from '../data/trim.js'\n\nimport { type HexToBytesErrorType, hexToBytes } from './toBytes.js'\n\nexport type AssertSizeErrorType =\n | SizeOverflowErrorType\n | SizeErrorType\n | ErrorType\n\nexport function assertSize(\n hexOrBytes: Hex | ByteArray,\n { size }: { size: number },\n): void {\n if (size_(hexOrBytes) > size)\n throw new SizeOverflowError({\n givenSize: size_(hexOrBytes),\n maxSize: size,\n })\n}\n\nexport type FromHexParameters<\n to extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean',\n> =\n | to\n | {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n /** Type to convert to. */\n to: to\n }\n\nexport type FromHexReturnType = to extends 'string'\n ? string\n : to extends 'bigint'\n ? bigint\n : to extends 'number'\n ? number\n : to extends 'bytes'\n ? ByteArray\n : to extends 'boolean'\n ? boolean\n : never\n\nexport type FromHexErrorType =\n | HexToNumberErrorType\n | HexToBigIntErrorType\n | HexToBoolErrorType\n | HexToStringErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Decodes a hex string into a string, number, bigint, boolean, or byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex\n * - Example: https://viem.sh/docs/utilities/fromHex#usage\n *\n * @param hex Hex string to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x1a4', 'number')\n * // 420\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c6421', 'string')\n * // 'Hello world'\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * to: 'string'\n * })\n * // 'Hello world'\n */\nexport function fromHex<\n to extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean',\n>(hex: Hex, toOrOpts: FromHexParameters): FromHexReturnType {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts\n const to = opts.to\n\n if (to === 'number') return hexToNumber(hex, opts) as FromHexReturnType\n if (to === 'bigint') return hexToBigInt(hex, opts) as FromHexReturnType\n if (to === 'string') return hexToString(hex, opts) as FromHexReturnType\n if (to === 'boolean') return hexToBool(hex, opts) as FromHexReturnType\n return hexToBytes(hex, opts) as FromHexReturnType\n}\n\nexport type HexToBigIntOpts = {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToBigIntErrorType = AssertSizeErrorType | ErrorType\n\n/**\n * Decodes a hex value into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobigint\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x1a4', { signed: true })\n * // 420n\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420n\n */\nexport function hexToBigInt(hex: Hex, opts: HexToBigIntOpts = {}): bigint {\n const { signed } = opts\n\n if (opts.size) assertSize(hex, { size: opts.size })\n\n const value = BigInt(hex)\n if (!signed) return value\n\n const size = (hex.length - 2) / 2\n const max = (1n << (BigInt(size) * 8n - 1n)) - 1n\n if (value <= max) return value\n\n return value - BigInt(`0x${'f'.padStart(size * 2, 'f')}`) - 1n\n}\n\nexport type HexToBoolOpts = {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToBoolErrorType =\n | AssertSizeErrorType\n | InvalidHexBooleanErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a hex value into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobool\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x01')\n * // true\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })\n * // true\n */\nexport function hexToBool(hex_: Hex, opts: HexToBoolOpts = {}): boolean {\n let hex = hex_\n if (opts.size) {\n assertSize(hex, { size: opts.size })\n hex = trim(hex)\n }\n if (trim(hex) === '0x00') return false\n if (trim(hex) === '0x01') return true\n throw new InvalidHexBooleanError(hex)\n}\n\nexport type HexToNumberOpts = HexToBigIntOpts\n\nexport type HexToNumberErrorType = HexToBigIntErrorType | ErrorType\n\n/**\n * Decodes a hex string into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextonumber\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToNumber('0x1a4')\n * // 420\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420\n */\nexport function hexToNumber(hex: Hex, opts: HexToNumberOpts = {}): number {\n return Number(hexToBigInt(hex, opts))\n}\n\nexport type HexToStringOpts = {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToStringErrorType =\n | AssertSizeErrorType\n | HexToBytesErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a hex value into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextostring\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c6421')\n * // 'Hello world!'\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * })\n * // 'Hello world'\n */\nexport function hexToString(hex: Hex, opts: HexToStringOpts = {}): string {\n let bytes = hexToBytes(hex)\n if (opts.size) {\n assertSize(bytes, { size: opts.size })\n bytes = trim(bytes, { dir: 'right' })\n }\n return new TextDecoder().decode(bytes)\n}\n","import { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\n\nimport { type AssertSizeErrorType, assertSize } from './fromHex.js'\nimport {\n type NumberToHexErrorType,\n type NumberToHexOpts,\n numberToHex,\n} from './toHex.js'\n\nconst encoder = /*#__PURE__*/ new TextEncoder()\n\nexport type ToBytesParameters = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type ToBytesErrorType =\n | NumberToBytesErrorType\n | BoolToBytesErrorType\n | HexToBytesErrorType\n | StringToBytesErrorType\n | IsHexErrorType\n | ErrorType\n\n/**\n * Encodes a UTF-8 string, hex value, bigint, number or boolean to a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes\n * - Example: https://viem.sh/docs/utilities/toBytes#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes('Hello world')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function toBytes(\n value: string | bigint | number | boolean | Hex,\n opts: ToBytesParameters = {},\n): ByteArray {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToBytes(value, opts)\n if (typeof value === 'boolean') return boolToBytes(value, opts)\n if (isHex(value)) return hexToBytes(value, opts)\n return stringToBytes(value, opts)\n}\n\nexport type BoolToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type BoolToBytesErrorType =\n | AssertSizeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a boolean into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#booltobytes\n *\n * @param value Boolean value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true)\n * // Uint8Array([1])\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true, { size: 32 })\n * // Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])\n */\nexport function boolToBytes(value: boolean, opts: BoolToBytesOpts = {}) {\n const bytes = new Uint8Array(1)\n bytes[0] = Number(value)\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size })\n return pad(bytes, { size: opts.size })\n }\n return bytes\n}\n\n// We use very optimized technique to convert hex string to byte array\nconst charCodeMap = {\n zero: 48,\n nine: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102,\n} as const\n\nfunction charCodeToBase16(char: number) {\n if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n return char - charCodeMap.zero\n if (char >= charCodeMap.A && char <= charCodeMap.F)\n return char - (charCodeMap.A - 10)\n if (char >= charCodeMap.a && char <= charCodeMap.f)\n return char - (charCodeMap.a - 10)\n return undefined\n}\n\nexport type HexToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type HexToBytesErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a hex string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#hextobytes\n *\n * @param hex Hex string to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function hexToBytes(hex_: Hex, opts: HexToBytesOpts = {}): ByteArray {\n let hex = hex_\n if (opts.size) {\n assertSize(hex, { size: opts.size })\n hex = pad(hex, { dir: 'right', size: opts.size })\n }\n\n let hexString = hex.slice(2) as string\n if (hexString.length % 2) hexString = `0${hexString}`\n\n const length = hexString.length / 2\n const bytes = new Uint8Array(length)\n for (let index = 0, j = 0; index < length; index++) {\n const nibbleLeft = charCodeToBase16(hexString.charCodeAt(j++))\n const nibbleRight = charCodeToBase16(hexString.charCodeAt(j++))\n if (nibbleLeft === undefined || nibbleRight === undefined) {\n throw new BaseError(\n `Invalid byte sequence (\"${hexString[j - 2]}${\n hexString[j - 1]\n }\" in \"${hexString}\").`,\n )\n }\n bytes[index] = nibbleLeft * 16 + nibbleRight\n }\n return bytes\n}\n\nexport type NumberToBytesErrorType =\n | NumberToHexErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Encodes a number into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#numbertobytes\n *\n * @param value Number to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function numberToBytes(\n value: bigint | number,\n opts?: NumberToHexOpts | undefined,\n) {\n const hex = numberToHex(value, opts)\n return hexToBytes(hex)\n}\n\nexport type StringToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type StringToBytesErrorType =\n | AssertSizeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a UTF-8 string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#stringtobytes\n *\n * @param value String to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33])\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function stringToBytes(\n value: string,\n opts: StringToBytesOpts = {},\n): ByteArray {\n const bytes = encoder.encode(value)\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size })\n return pad(bytes, { dir: 'right', size: opts.size })\n }\n return bytes\n}\n","import {\n IntegerOutOfRangeError,\n type IntegerOutOfRangeErrorType,\n} from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\n\nimport { type AssertSizeErrorType, assertSize } from './fromHex.js'\n\nconst hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) =>\n i.toString(16).padStart(2, '0'),\n)\n\nexport type ToHexParameters = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type ToHexErrorType =\n | BoolToHexErrorType\n | BytesToHexErrorType\n | NumberToHexErrorType\n | StringToHexErrorType\n | ErrorType\n\n/**\n * Encodes a string, number, bigint, or ByteArray into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex\n * - Example: https://viem.sh/docs/utilities/toHex#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world')\n * // '0x48656c6c6f20776f726c6421'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex(420)\n * // '0x1a4'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world', { size: 32 })\n * // '0x48656c6c6f20776f726c64210000000000000000000000000000000000000000'\n */\nexport function toHex(\n value: string | number | bigint | boolean | ByteArray,\n opts: ToHexParameters = {},\n): Hex {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToHex(value, opts)\n if (typeof value === 'string') {\n return stringToHex(value, opts)\n }\n if (typeof value === 'boolean') return boolToHex(value, opts)\n return bytesToHex(value, opts)\n}\n\nexport type BoolToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type BoolToHexErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a boolean into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#booltohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true)\n * // '0x1'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(false)\n * // '0x0'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true, { size: 32 })\n * // '0x0000000000000000000000000000000000000000000000000000000000000001'\n */\nexport function boolToHex(value: boolean, opts: BoolToHexOpts = {}): Hex {\n const hex: Hex = `0x${Number(value)}`\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size })\n return pad(hex, { size: opts.size })\n }\n return hex\n}\n\nexport type BytesToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type BytesToHexErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a bytes array into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#bytestohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]), { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function bytesToHex(value: ByteArray, opts: BytesToHexOpts = {}): Hex {\n let string = ''\n for (let i = 0; i < value.length; i++) {\n string += hexes[value[i]]\n }\n const hex = `0x${string}` as const\n\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size })\n return pad(hex, { dir: 'right', size: opts.size })\n }\n return hex\n}\n\nexport type NumberToHexOpts =\n | {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** The size (in bytes) of the output hex value. */\n size: number\n }\n | {\n signed?: undefined\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n }\n\nexport type NumberToHexErrorType =\n | IntegerOutOfRangeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a number or bigint into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#numbertohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420)\n * // '0x1a4'\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420, { size: 32 })\n * // '0x00000000000000000000000000000000000000000000000000000000000001a4'\n */\nexport function numberToHex(\n value_: number | bigint,\n opts: NumberToHexOpts = {},\n): Hex {\n const { signed, size } = opts\n\n const value = BigInt(value_)\n\n let maxValue: bigint | number | undefined\n if (size) {\n if (signed) maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n\n else maxValue = 2n ** (BigInt(size) * 8n) - 1n\n } else if (typeof value_ === 'number') {\n maxValue = BigInt(Number.MAX_SAFE_INTEGER)\n }\n\n const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0\n\n if ((maxValue && value > maxValue) || value < minValue) {\n const suffix = typeof value_ === 'bigint' ? 'n' : ''\n throw new IntegerOutOfRangeError({\n max: maxValue ? `${maxValue}${suffix}` : undefined,\n min: `${minValue}${suffix}`,\n signed,\n size,\n value: `${value_}${suffix}`,\n })\n }\n\n const hex = `0x${(signed && value < 0\n ? (1n << BigInt(size * 8)) + BigInt(value)\n : value\n ).toString(16)}` as Hex\n if (size) return pad(hex, { size }) as Hex\n return hex\n}\n\nexport type StringToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type StringToHexErrorType = BytesToHexErrorType | ErrorType\n\nconst encoder = /*#__PURE__*/ new TextEncoder()\n\n/**\n * Encodes a UTF-8 string into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#stringtohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!')\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!', { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function stringToHex(value_: string, opts: StringToHexOpts = {}): Hex {\n const value = encoder.encode(value_)\n return bytesToHex(value, opts)\n}\n","function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`positive integer expected, not ${n}`);\n}\n\nfunction bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`boolean expected, not ${b}`);\n}\n\n// copied from utils\nexport function isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\nfunction bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!isBytes(b)) throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\nfunction hash(h: Hash) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(h.outputLen);\n number(h.blockLen);\n}\n\nfunction exists(instance: any, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction output(out: any, instance: any) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\n\nexport { number, bool, bytes, hash, exists, output };\n\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n: bigint, le = false) {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number) => h >>> s;\nconst shrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number) => l;\nconst rotr32L = (h: number, _l: number) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number) => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah: number, Al: number, Bh: number, Bl: number) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number) =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number) =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nimport { bytes as abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n// The rotate left (circular left shift) operation for uint32\nexport const rotl = (word: number, shift: number) =>\n (word << shift) | ((word >>> (32 - shift)) >>> 0);\n\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// The byte swap operation for uint32\nexport const byteSwap = (word: number) =>\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\n// Conditionally byte swap if on a big-endian platform\nexport const byteSwapIfBE = isLE ? (n: number) => n : (n: number) => byteSwap(n);\n\n// In place byte swap for Uint32Array\nexport function byteSwap32(arr: Uint32Array) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n}\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 } as const;\nfunction asciiToBase16(char: number): number | undefined {\n if (char >= asciis._0 && char <= asciis._9) return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F) return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f) return char - (asciis._a - 10);\n return;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF> = Hash & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\nconst toStr = {}.toString;\ntype EmptyObj = {};\nexport function checkOpts(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType;\n\nexport function wrapConstructor>(hashCons: () => Hash) {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => Hash\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => HashXOF\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport {\n Hash,\n u32,\n Input,\n toBytes,\n wrapConstructor,\n wrapXOFConstructorWithOpts,\n HashXOF,\n isLE,\n byteSwap32,\n} from './utils.js';\n\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n\n// Various per round constants calculations\nconst SHA3_PI: number[] = [];\nconst SHA3_ROTL: number[] = [];\nconst _SHA3_IOTA: bigint[] = [];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s: Uint32Array, rounds: number = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++) B[x] = s[y + x];\n for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\n\nexport class Keccak extends Hash implements HashXOF {\n protected state: Uint8Array;\n protected pos = 0;\n protected posOut = 0;\n protected finished = false;\n protected state32: Uint32Array;\n protected destroyed = false;\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(\n public blockLen: number,\n public suffix: number,\n public outputLen: number,\n protected enableXOF = false,\n protected rounds: number = 24\n ) {\n super();\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n protected keccak() {\n if (!isLE) byteSwap32(this.state32);\n keccakP(this.state32, this.rounds);\n if (!isLE) byteSwap32(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data: Input) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n protected finish() {\n if (this.finished) return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n protected writeInto(out: Uint8Array): Uint8Array {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len; ) {\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out: Uint8Array): Uint8Array {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes: number): Uint8Array {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out: Uint8Array) {\n output(out, this);\n if (this.finished) throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to?: Keccak): Keccak {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\n\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n wrapXOFConstructorWithOpts, ShakeOpts>(\n (opts: ShakeOpts = {}) =>\n new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n );\n\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n","import { keccak_256 } from '@noble/hashes/sha3'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type ToBytesErrorType, toBytes } from '../encoding/toBytes.js'\nimport { type ToHexErrorType, toHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type Keccak256Hash =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type Keccak256ErrorType =\n | IsHexErrorType\n | ToBytesErrorType\n | ToHexErrorType\n | ErrorType\n\nexport function keccak256(\n value: Hex | ByteArray,\n to_?: to | undefined,\n): Keccak256Hash {\n const to = to_ || 'hex'\n const bytes = keccak_256(\n isHex(value, { strict: false }) ? toBytes(value) : value,\n )\n if (to === 'bytes') return bytes as Keccak256Hash\n return toHex(bytes) as Keccak256Hash\n}\n","import type { AbiFunction } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { type SliceErrorType, slice } from '../data/slice.js'\nimport {\n type ToSignatureHashErrorType,\n toSignatureHash,\n} from './toSignatureHash.js'\n\nexport type ToFunctionSelectorErrorType =\n | ToSignatureHashErrorType\n | SliceErrorType\n | ErrorType\n\n/**\n * Returns the function selector for a given function definition.\n *\n * @example\n * const selector = toFunctionSelector('function ownerOf(uint256 tokenId)')\n * // 0x6352211e\n */\nexport const toFunctionSelector = (fn: string | AbiFunction) =>\n slice(toSignatureHash(fn), 0, 4)\n","import { type ToBytesErrorType, toBytes } from '../encoding/toBytes.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { type Keccak256ErrorType, keccak256 } from './keccak256.js'\n\nconst hash = (value: string) => keccak256(toBytes(value))\n\nexport type HashSignatureErrorType =\n | Keccak256ErrorType\n | ToBytesErrorType\n | ErrorType\n\nexport function hashSignature(sig: string) {\n return hash(sig)\n}\n","import type { AbiEventParameter, AbiParameter } from '../abi.js'\nimport { execTyped } from '../regex.js'\nimport type { IsNarrowable, Join } from '../types.js'\nimport type { AssertName } from './types/signatures.js'\n\n/**\n * Formats {@link AbiParameter} to human-readable ABI parameter.\n *\n * @param abiParameter - ABI parameter\n * @returns Human-readable ABI parameter\n *\n * @example\n * type Result = FormatAbiParameter<{ type: 'address'; name: 'from'; }>\n * // ^? type Result = 'address from'\n */\nexport type FormatAbiParameter<\n abiParameter extends AbiParameter | AbiEventParameter,\n> = abiParameter extends {\n name?: infer name extends string\n type: `tuple${infer array}`\n components: infer components extends readonly AbiParameter[]\n indexed?: infer indexed extends boolean\n}\n ? FormatAbiParameter<\n {\n type: `(${Join<\n {\n [key in keyof components]: FormatAbiParameter<\n {\n type: components[key]['type']\n } & (IsNarrowable extends true\n ? { name: components[key]['name'] }\n : unknown) &\n (components[key] extends { components: readonly AbiParameter[] }\n ? { components: components[key]['components'] }\n : unknown)\n >\n },\n ', '\n >})${array}`\n } & (IsNarrowable extends true ? { name: name } : unknown) &\n (IsNarrowable extends true\n ? { indexed: indexed }\n : unknown)\n >\n : `${abiParameter['type']}${abiParameter extends { indexed: true }\n ? ' indexed'\n : ''}${abiParameter['name'] extends infer name extends string\n ? name extends ''\n ? ''\n : ` ${AssertName}`\n : ''}`\n\n// https://regexr.com/7f7rv\nconst tupleRegex = /^tuple(?(\\[(\\d*)\\])*)$/\n\n/**\n * Formats {@link AbiParameter} to human-readable ABI parameter.\n *\n * @param abiParameter - ABI parameter\n * @returns Human-readable ABI parameter\n *\n * @example\n * const result = formatAbiParameter({ type: 'address', name: 'from' })\n * // ^? const result: 'address from'\n */\nexport function formatAbiParameter<\n const abiParameter extends AbiParameter | AbiEventParameter,\n>(abiParameter: abiParameter): FormatAbiParameter {\n type Result = FormatAbiParameter\n\n let type = abiParameter.type\n if (tupleRegex.test(abiParameter.type) && 'components' in abiParameter) {\n type = '('\n const length = abiParameter.components.length as number\n for (let i = 0; i < length; i++) {\n const component = abiParameter.components[i]!\n type += formatAbiParameter(component)\n if (i < length - 1) type += ', '\n }\n const result = execTyped<{ array?: string }>(tupleRegex, abiParameter.type)\n type += `)${result?.array ?? ''}`\n return formatAbiParameter({\n ...abiParameter,\n type,\n }) as Result\n }\n // Add `indexed` to type if in `abiParameter`\n if ('indexed' in abiParameter && abiParameter.indexed)\n type = `${type} indexed`\n // Return human-readable ABI parameter\n if (abiParameter.name) return `${type} ${abiParameter.name}` as Result\n return type as Result\n}\n","import type { AbiEventParameter, AbiParameter } from '../abi.js'\nimport type { Join } from '../types.js'\nimport {\n type FormatAbiParameter,\n formatAbiParameter,\n} from './formatAbiParameter.js'\n\n/**\n * Formats {@link AbiParameter}s to human-readable ABI parameter.\n *\n * @param abiParameters - ABI parameters\n * @returns Human-readable ABI parameters\n *\n * @example\n * type Result = FormatAbiParameters<[\n * // ^? type Result = 'address from, uint256 tokenId'\n * { type: 'address'; name: 'from'; },\n * { type: 'uint256'; name: 'tokenId'; },\n * ]>\n */\nexport type FormatAbiParameters<\n abiParameters extends readonly [\n AbiParameter | AbiEventParameter,\n ...(readonly (AbiParameter | AbiEventParameter)[]),\n ],\n> = Join<\n {\n [key in keyof abiParameters]: FormatAbiParameter\n },\n ', '\n>\n\n/**\n * Formats {@link AbiParameter}s to human-readable ABI parameters.\n *\n * @param abiParameters - ABI parameters\n * @returns Human-readable ABI parameters\n *\n * @example\n * const result = formatAbiParameters([\n * // ^? const result: 'address from, uint256 tokenId'\n * { type: 'address', name: 'from' },\n * { type: 'uint256', name: 'tokenId' },\n * ])\n */\nexport function formatAbiParameters<\n const abiParameters extends readonly [\n AbiParameter | AbiEventParameter,\n ...(readonly (AbiParameter | AbiEventParameter)[]),\n ],\n>(abiParameters: abiParameters): FormatAbiParameters {\n let params = ''\n const length = abiParameters.length\n for (let i = 0; i < length; i++) {\n const abiParameter = abiParameters[i]!\n params += formatAbiParameter(abiParameter)\n if (i !== length - 1) params += ', '\n }\n return params as FormatAbiParameters\n}\n","import { type AbiEvent, type AbiFunction, formatAbiItem } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type NormalizeSignatureErrorType,\n normalizeSignature,\n} from './normalizeSignature.js'\n\nexport type ToSignatureErrorType = NormalizeSignatureErrorType | ErrorType\n\n/**\n * Returns the signature for a given function or event definition.\n *\n * @example\n * const signature = toSignature('function ownerOf(uint256 tokenId)')\n * // 'ownerOf(uint256)'\n *\n * @example\n * const signature_3 = toSignature({\n * name: 'ownerOf',\n * type: 'function',\n * inputs: [{ name: 'tokenId', type: 'uint256' }],\n * outputs: [],\n * stateMutability: 'view',\n * })\n * // 'ownerOf(uint256)'\n */\nexport const toSignature = (def: string | AbiFunction | AbiEvent) => {\n const def_ = (() => {\n if (typeof def === 'string') return def\n return formatAbiItem(def)\n })()\n return normalizeSignature(def_)\n}\n","import { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\n\ntype NormalizeSignatureParameters = string\ntype NormalizeSignatureReturnType = string\nexport type NormalizeSignatureErrorType = ErrorType\n\nexport function normalizeSignature(\n signature: NormalizeSignatureParameters,\n): NormalizeSignatureReturnType {\n let active = true\n let current = ''\n let level = 0\n let result = ''\n let valid = false\n\n for (let i = 0; i < signature.length; i++) {\n const char = signature[i]\n\n // If the character is a separator, we want to reactivate.\n if (['(', ')', ','].includes(char)) active = true\n\n // If the character is a \"level\" token, we want to increment/decrement.\n if (char === '(') level++\n if (char === ')') level--\n\n // If we aren't active, we don't want to mutate the result.\n if (!active) continue\n\n // If level === 0, we are at the definition level.\n if (level === 0) {\n if (char === ' ' && ['event', 'function', ''].includes(result))\n result = ''\n else {\n result += char\n\n // If we are at the end of the definition, we must be finished.\n if (char === ')') {\n valid = true\n break\n }\n }\n\n continue\n }\n\n // Ignore spaces\n if (char === ' ') {\n // If the previous character is a separator, and the current section isn't empty, we want to deactivate.\n if (signature[i - 1] !== ',' && current !== ',' && current !== ',(') {\n current = ''\n active = false\n }\n continue\n }\n\n result += char\n current += char\n }\n\n if (!valid) throw new BaseError('Unable to normalize signature.')\n\n return result\n}\n","import type {\n Abi,\n AbiConstructor,\n AbiError,\n AbiEvent,\n AbiEventParameter,\n AbiFallback,\n AbiFunction,\n AbiParameter,\n AbiReceive,\n AbiStateMutability,\n} from '../abi.js'\nimport {\n type FormatAbiParameters as FormatAbiParameters_,\n formatAbiParameters,\n} from './formatAbiParameters.js'\nimport type { AssertName } from './types/signatures.js'\n\n/**\n * Formats ABI item (e.g. error, event, function) into human-readable ABI item\n *\n * @param abiItem - ABI item\n * @returns Human-readable ABI item\n */\nexport type FormatAbiItem =\n Abi[number] extends abiItem\n ? string\n :\n | (abiItem extends AbiFunction\n ? AbiFunction extends abiItem\n ? string\n : `function ${AssertName}(${FormatAbiParameters<\n abiItem['inputs']\n >})${abiItem['stateMutability'] extends Exclude<\n AbiStateMutability,\n 'nonpayable'\n >\n ? ` ${abiItem['stateMutability']}`\n : ''}${abiItem['outputs']['length'] extends 0\n ? ''\n : ` returns (${FormatAbiParameters})`}`\n : never)\n | (abiItem extends AbiEvent\n ? AbiEvent extends abiItem\n ? string\n : `event ${AssertName}(${FormatAbiParameters<\n abiItem['inputs']\n >})`\n : never)\n | (abiItem extends AbiError\n ? AbiError extends abiItem\n ? string\n : `error ${AssertName}(${FormatAbiParameters<\n abiItem['inputs']\n >})`\n : never)\n | (abiItem extends AbiConstructor\n ? AbiConstructor extends abiItem\n ? string\n : `constructor(${FormatAbiParameters<\n abiItem['inputs']\n >})${abiItem['stateMutability'] extends 'payable'\n ? ' payable'\n : ''}`\n : never)\n | (abiItem extends AbiFallback\n ? AbiFallback extends abiItem\n ? string\n : 'fallback()'\n : never)\n | (abiItem extends AbiReceive\n ? AbiReceive extends abiItem\n ? string\n : 'receive() external payable'\n : never)\n\ntype FormatAbiParameters<\n abiParameters extends readonly (AbiParameter | AbiEventParameter)[],\n> = abiParameters['length'] extends 0\n ? ''\n : FormatAbiParameters_<\n abiParameters extends readonly [\n AbiParameter | AbiEventParameter,\n ...(readonly (AbiParameter | AbiEventParameter)[]),\n ]\n ? abiParameters\n : never\n >\n\n/**\n * Formats ABI item (e.g. error, event, function) into human-readable ABI item\n *\n * @param abiItem - ABI item\n * @returns Human-readable ABI item\n */\nexport function formatAbiItem(\n abiItem: abiItem,\n): FormatAbiItem {\n type Result = FormatAbiItem\n type Params = readonly [\n AbiParameter | AbiEventParameter,\n ...(readonly (AbiParameter | AbiEventParameter)[]),\n ]\n\n if (abiItem.type === 'function')\n return `function ${abiItem.name}(${formatAbiParameters(\n abiItem.inputs as Params,\n )})${\n abiItem.stateMutability && abiItem.stateMutability !== 'nonpayable'\n ? ` ${abiItem.stateMutability}`\n : ''\n }${\n abiItem.outputs.length\n ? ` returns (${formatAbiParameters(abiItem.outputs as Params)})`\n : ''\n }`\n if (abiItem.type === 'event')\n return `event ${abiItem.name}(${formatAbiParameters(\n abiItem.inputs as Params,\n )})`\n if (abiItem.type === 'error')\n return `error ${abiItem.name}(${formatAbiParameters(\n abiItem.inputs as Params,\n )})`\n if (abiItem.type === 'constructor')\n return `constructor(${formatAbiParameters(abiItem.inputs as Params)})${\n abiItem.stateMutability === 'payable' ? ' payable' : ''\n }`\n if (abiItem.type === 'fallback') return 'fallback()' as Result\n return 'receive() external payable' as Result\n}\n","import type { AbiEvent, AbiFunction } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { type HashSignatureErrorType, hashSignature } from './hashSignature.js'\nimport { type ToSignatureErrorType, toSignature } from './toSignature.js'\n\nexport type ToSignatureHashErrorType =\n | HashSignatureErrorType\n | ToSignatureErrorType\n | ErrorType\n\n/**\n * Returns the hash (of the function/event signature) for a given event or function definition.\n */\nexport function toSignatureHash(fn: string | AbiFunction | AbiEvent) {\n return hashSignature(toSignature(fn))\n}\n","/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */\nexport class LruMap extends Map {\n maxSize: number\n\n constructor(size: number) {\n super()\n this.maxSize = size\n }\n\n override get(key: string) {\n const value = super.get(key)\n\n if (super.has(key) && value !== undefined) {\n this.delete(key)\n super.set(key, value)\n }\n\n return value\n }\n\n override set(key: string, value: value) {\n super.set(key, value)\n if (this.maxSize && this.size > this.maxSize) {\n const firstKey = this.keys().next().value\n if (firstKey) this.delete(firstKey)\n }\n return this\n }\n}\n","import type { ErrorType } from '../../errors/utils.js'\n\ntype Resolved = [\n result: returnType[number],\n results: returnType,\n]\n\ntype PendingPromise = {\n resolve?: ((data: Resolved) => void) | undefined\n reject?: ((reason?: unknown) => void) | undefined\n}\n\ntype SchedulerItem = { args: unknown; pendingPromise: PendingPromise }\n\ntype BatchResultsCompareFn = (a: result, b: result) => number\n\ntype CreateBatchSchedulerArguments<\n parameters = unknown,\n returnType extends readonly unknown[] = readonly unknown[],\n> = {\n fn: (args: parameters[]) => Promise\n id: number | string\n shouldSplitBatch?: ((args: parameters[]) => boolean) | undefined\n wait?: number | undefined\n sort?: BatchResultsCompareFn | undefined\n}\n\ntype CreateBatchSchedulerReturnType<\n parameters = unknown,\n returnType extends readonly unknown[] = readonly unknown[],\n> = {\n flush: () => void\n schedule: parameters extends undefined\n ? (args?: parameters | undefined) => Promise>\n : (args: parameters) => Promise>\n}\n\nexport type CreateBatchSchedulerErrorType = ErrorType\n\nconst schedulerCache = /*#__PURE__*/ new Map()\n\n/** @internal */\nexport function createBatchScheduler<\n parameters,\n returnType extends readonly unknown[],\n>({\n fn,\n id,\n shouldSplitBatch,\n wait = 0,\n sort,\n}: CreateBatchSchedulerArguments<\n parameters,\n returnType\n>): CreateBatchSchedulerReturnType {\n const exec = async () => {\n const scheduler = getScheduler()\n flush()\n\n const args = scheduler.map(({ args }) => args)\n\n if (args.length === 0) return\n\n fn(args as parameters[])\n .then((data) => {\n if (sort && Array.isArray(data)) data.sort(sort)\n for (let i = 0; i < scheduler.length; i++) {\n const { pendingPromise } = scheduler[i]\n pendingPromise.resolve?.([data[i], data])\n }\n })\n .catch((err) => {\n for (let i = 0; i < scheduler.length; i++) {\n const { pendingPromise } = scheduler[i]\n pendingPromise.reject?.(err)\n }\n })\n }\n\n const flush = () => schedulerCache.delete(id)\n\n const getBatchedArgs = () =>\n getScheduler().map(({ args }) => args) as parameters[]\n\n const getScheduler = () => schedulerCache.get(id) || []\n\n const setScheduler = (item: SchedulerItem) =>\n schedulerCache.set(id, [...getScheduler(), item])\n\n return {\n flush,\n async schedule(args: parameters) {\n const pendingPromise: PendingPromise = {}\n const promise = new Promise>((resolve, reject) => {\n pendingPromise.resolve = resolve\n pendingPromise.reject = reject\n })\n\n const split = shouldSplitBatch?.([...getBatchedArgs(), args])\n\n if (split) exec()\n\n const hasActiveScheduler = getScheduler().length > 0\n if (hasActiveScheduler) {\n setScheduler({ args, pendingPromise })\n return promise\n }\n\n setScheduler({ args, pendingPromise })\n setTimeout(exec, wait)\n return promise\n },\n } as unknown as CreateBatchSchedulerReturnType\n}\n","import type { ErrorType } from '../errors/utils.js'\n\nexport type StringifyErrorType = ErrorType\n\nexport const stringify: typeof JSON.stringify = (value, replacer, space) =>\n JSON.stringify(\n value,\n (key, value_) => {\n const value = typeof value_ === 'bigint' ? value_.toString() : value_\n return typeof replacer === 'function' ? replacer(key, value) : value\n },\n space,\n )\n","import { etherUnits } from '../../constants/unit.js'\n\nimport { type FormatUnitsErrorType, formatUnits } from './formatUnits.js'\n\nexport type FormatEtherErrorType = FormatUnitsErrorType\n\n/**\n * Converts numerical wei to a string representation of ether.\n *\n * - Docs: https://viem.sh/docs/utilities/formatEther\n *\n * @example\n * import { formatEther } from 'viem'\n *\n * formatEther(1000000000000000000n)\n * // '1'\n */\nexport function formatEther(wei: bigint, unit: 'wei' | 'gwei' = 'wei') {\n return formatUnits(wei, etherUnits[unit])\n}\n","import { gweiUnits } from '../../constants/unit.js'\n\nimport { type FormatUnitsErrorType, formatUnits } from './formatUnits.js'\n\nexport type FormatGweiErrorType = FormatUnitsErrorType\n\n/**\n * Converts numerical wei to a string representation of gwei.\n *\n * - Docs: https://viem.sh/docs/utilities/formatGwei\n *\n * @example\n * import { formatGwei } from 'viem'\n *\n * formatGwei(1000000000n)\n * // '1'\n */\nexport function formatGwei(wei: bigint, unit: 'wei' = 'wei') {\n return formatUnits(wei, gweiUnits[unit])\n}\n","import type { ErrorType } from '../../errors/utils.js'\n\nexport type FormatUnitsErrorType = ErrorType\n\n/**\n * Divides a number by a given exponent of base 10 (10exponent), and formats it into a string representation of the number..\n *\n * - Docs: https://viem.sh/docs/utilities/formatUnits\n *\n * @example\n * import { formatUnits } from 'viem'\n *\n * formatUnits(420000000000n, 9)\n * // '420'\n */\nexport function formatUnits(value: bigint, decimals: number) {\n let display = value.toString()\n\n const negative = display.startsWith('-')\n if (negative) display = display.slice(1)\n\n display = display.padStart(decimals, '0')\n\n let [integer, fraction] = [\n display.slice(0, display.length - decimals),\n display.slice(display.length - decimals),\n ]\n fraction = fraction.replace(/(0+)$/, '')\n return `${negative ? '-' : ''}${integer || '0'}${\n fraction ? `.${fraction}` : ''\n }`\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"126\":\"b3e343ae\",\"171\":\"c064a740\",\"444\":\"44be6834\",\"507\":\"9f56b3eb\",\"968\":\"a45334fc\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"airdao-bridge-frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/bridge/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkairdao_bridge_frontend\"] = self[\"webpackChunkairdao_bridge_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","// MIT License\n// Copyright (c) 2019-present StringEpsilon \n// Copyright (c) 2017-2019 James Kyle \n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n typeof globalThis !== \"undefined\" // 'global proper'\n ? // eslint-disable-next-line no-undef\n globalThis\n : typeof window !== \"undefined\"\n ? window // Browser\n : typeof global !== \"undefined\"\n ? global // node.js\n : {};\n\nfunction getUniqueId() {\n let key = \"__global_unique_id__\";\n return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n let handlers = [];\n return {\n on(handler) {\n handlers.push(handler);\n },\n\n off(handler) {\n handlers = handlers.filter(h => h !== handler);\n },\n\n get() {\n return value;\n },\n\n set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(handler => handler(value, changedBits));\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n class Provider extends React.Component {\n emitter = createEventEmitter(this.props.value);\n\n static childContextTypes = {\n [contextProp]: PropTypes.object.isRequired\n };\n\n getChildContext() {\n return {\n [contextProp]: this.emitter\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n let oldValue = this.props.value;\n let newValue = nextProps.value;\n let changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits =\n typeof calculateChangedBits === \"function\"\n ? calculateChangedBits(oldValue, newValue)\n : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== \"production\") {\n warning(\n (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n \"calculateChangedBits: Expected the return value to be a \" +\n \"31-bit integer. Instead received: \" +\n changedBits\n );\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n }\n\n render() {\n return this.props.children;\n }\n }\n\n class Consumer extends React.Component {\n static contextTypes = {\n [contextProp]: PropTypes.object\n };\n\n observedBits;\n\n state = {\n value: this.getValue()\n };\n\n componentWillReceiveProps(nextProps) {\n let { observedBits } = nextProps;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n let { observedBits } = this.props;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n }\n\n getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n }\n\n onUpdate = (newValue, changedBits) => {\n const observedBits = this.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n this.setState({ value: this.getValue() });\n }\n };\n\n render() {\n return onlyChild(this.props.children)(this.state.value);\n }\n }\n\n return {\n Provider,\n Consumer\n };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon \n// Copyright (c) 2017-2019 James Kyle \n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgArrowRight(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 21,\n viewBox: \"0 0 20 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.2654 3.79496C10.9644 3.51033 10.4897 3.52355 10.2051 3.82449C9.92049 4.12542 9.93371 4.60011 10.2346 4.88474L15.4737 9.83984H2.75C2.33579 9.83984 2 10.1756 2 10.5898C2 11.0041 2.33579 11.3398 2.75 11.3398H15.476L10.2346 16.2971C9.93371 16.5817 9.92049 17.0564 10.2051 17.3573C10.4897 17.6583 10.9644 17.6715 11.2654 17.3869L17.6826 11.3174C17.8489 11.1602 17.9489 10.96 17.9826 10.7513C17.994 10.6993 18 10.6453 18 10.5898C18 10.5323 17.9935 10.4762 17.9812 10.4223C17.9462 10.2165 17.8467 10.0196 17.6826 9.8644L11.2654 3.79496Z\",\n fill: \"#0E0E0E\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowRight);\nexport default __webpack_public_path__ + \"static/media/arrow-right.6f95664607d43df7de48b3b3a44b3656.svg\";\nexport { ForwardRef as ReactComponent };","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\n","/** Forked from https://github.com/epoberezkin/fast-deep-equal */\n\nexport function deepEqual(a: any, b: any) {\n if (a === b) return true\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n if (a.constructor !== b.constructor) return false\n\n let length: number\n let i: number\n\n if (Array.isArray(a) && Array.isArray(b)) {\n length = a.length\n if (length !== b.length) return false\n for (i = length; i-- !== 0; ) if (!deepEqual(a[i], b[i])) return false\n return true\n }\n\n if (a.valueOf !== Object.prototype.valueOf)\n return a.valueOf() === b.valueOf()\n if (a.toString !== Object.prototype.toString)\n return a.toString() === b.toString()\n\n const keys = Object.keys(a)\n length = keys.length\n if (length !== Object.keys(b).length) return false\n\n for (i = length; i-- !== 0; )\n if (!Object.prototype.hasOwnProperty.call(b, keys[i]!)) return false\n\n for (i = length; i-- !== 0; ) {\n const key = keys[i]\n\n if (key && !deepEqual(a[key], b[key])) return false\n }\n\n return true\n }\n\n // true if both NaN, false otherwise\n // biome-ignore lint/suspicious/noSelfCompare: \n return a !== a && b !== b\n}\n","import type { Address, Chain } from 'viem'\n\nimport type { Config, Connector } from '../createConfig.js'\n\nexport type GetAccountReturnType<\n config extends Config = Config,\n ///\n chain = Config extends config ? Chain : config['chains'][number],\n> =\n | {\n address: Address\n addresses: readonly [Address, ...Address[]]\n chain: chain | undefined\n chainId: number\n connector: Connector\n isConnected: true\n isConnecting: false\n isDisconnected: false\n isReconnecting: false\n status: 'connected'\n }\n | {\n address: Address | undefined\n addresses: readonly Address[] | undefined\n chain: chain | undefined\n chainId: number | undefined\n connector: Connector | undefined\n isConnected: boolean\n isConnecting: false\n isDisconnected: false\n isReconnecting: true\n status: 'reconnecting'\n }\n | {\n address: Address | undefined\n addresses: readonly Address[] | undefined\n chain: chain | undefined\n chainId: number | undefined\n connector: Connector | undefined\n isConnected: false\n isReconnecting: false\n isConnecting: true\n isDisconnected: false\n status: 'connecting'\n }\n | {\n address: undefined\n addresses: undefined\n chain: undefined\n chainId: undefined\n connector: undefined\n isConnected: false\n isReconnecting: false\n isConnecting: false\n isDisconnected: true\n status: 'disconnected'\n }\n\n/** https://wagmi.sh/core/api/actions/getAccount */\nexport function getAccount(\n config: config,\n): GetAccountReturnType {\n const uid = config.state.current!\n const connection = config.state.connections.get(uid)\n const addresses = connection?.accounts\n const address = addresses?.[0]\n const chain = config.chains.find(\n (chain) => chain.id === connection?.chainId,\n ) as GetAccountReturnType['chain']\n const status = config.state.status\n\n switch (status) {\n case 'connected':\n return {\n address: address!,\n addresses: addresses!,\n chain,\n chainId: connection?.chainId!,\n connector: connection?.connector!,\n isConnected: true,\n isConnecting: false,\n isDisconnected: false,\n isReconnecting: false,\n status,\n }\n case 'reconnecting':\n return {\n address,\n addresses,\n chain,\n chainId: connection?.chainId,\n connector: connection?.connector,\n isConnected: !!address,\n isConnecting: false,\n isDisconnected: false,\n isReconnecting: true,\n status,\n }\n case 'connecting':\n return {\n address,\n addresses,\n chain,\n chainId: connection?.chainId,\n connector: connection?.connector,\n isConnected: false,\n isConnecting: true,\n isDisconnected: false,\n isReconnecting: false,\n status,\n }\n case 'disconnected':\n return {\n address: undefined,\n addresses: undefined,\n chain: undefined,\n chainId: undefined,\n connector: undefined,\n isConnected: false,\n isConnecting: false,\n isDisconnected: true,\n isReconnecting: false,\n status,\n }\n }\n}\n","import type { Address } from 'viem'\n\nimport type { CreateConnectorFn } from '../connectors/createConnector.js'\nimport type { Config, Connection, Connector } from '../createConfig.js'\nimport type { ErrorType } from '../errors/base.js'\nimport type { Compute } from '../types/utils.js'\n\nexport type ReconnectParameters = {\n /** Connectors to attempt reconnect with */\n connectors?: readonly (CreateConnectorFn | Connector)[] | undefined\n}\n\nexport type ReconnectReturnType = Compute[]\n\nexport type ReconnectErrorType = ErrorType\n\nlet isReconnecting = false\n\n/** https://wagmi.sh/core/api/actions/reconnect */\nexport async function reconnect(\n config: Config,\n parameters: ReconnectParameters = {},\n): Promise {\n // If already reconnecting, do nothing\n if (isReconnecting) return []\n isReconnecting = true\n\n config.setState((x) => ({\n ...x,\n status: x.current ? 'reconnecting' : 'connecting',\n }))\n\n const connectors: Connector[] = []\n if (parameters.connectors?.length) {\n for (const connector_ of parameters.connectors) {\n let connector: Connector\n // \"Register\" connector if not already created\n if (typeof connector_ === 'function')\n connector = config._internal.connectors.setup(connector_)\n else connector = connector_\n connectors.push(connector)\n }\n } else connectors.push(...config.connectors)\n\n // Try recently-used connectors first\n let recentConnectorId: string | null | undefined\n try {\n recentConnectorId = await config.storage?.getItem('recentConnectorId')\n } catch {}\n const scores: Record = {}\n for (const [, connection] of config.state.connections) {\n scores[connection.connector.id] = 1\n }\n if (recentConnectorId) scores[recentConnectorId] = 0\n const sorted =\n Object.keys(scores).length > 0\n ? // .toSorted()\n [...connectors].sort(\n (a, b) => (scores[a.id] ?? 10) - (scores[b.id] ?? 10),\n )\n : connectors\n\n // Iterate through each connector and try to connect\n let connected = false\n const connections: Connection[] = []\n const providers: unknown[] = []\n for (const connector of sorted) {\n const provider = await connector.getProvider().catch(() => undefined)\n if (!provider) continue\n\n // If we already have an instance of this connector's provider,\n // then we have already checked it (ie. injected connectors can\n // share the same `window.ethereum` instance, so we don't want to\n // connect to it again).\n if (providers.some((x) => x === provider)) continue\n\n const isAuthorized = await connector.isAuthorized()\n if (!isAuthorized) continue\n\n const data = await connector\n .connect({ isReconnecting: true })\n .catch(() => null)\n if (!data) continue\n\n connector.emitter.off('connect', config._internal.events.connect)\n connector.emitter.on('change', config._internal.events.change)\n connector.emitter.on('disconnect', config._internal.events.disconnect)\n\n config.setState((x) => {\n const connections = new Map(connected ? x.connections : new Map()).set(\n connector.uid,\n { accounts: data.accounts, chainId: data.chainId, connector },\n )\n return {\n ...x,\n current: connected ? x.current : connector.uid,\n connections,\n }\n })\n connections.push({\n accounts: data.accounts as readonly [Address, ...Address[]],\n chainId: data.chainId,\n connector,\n })\n providers.push(provider)\n connected = true\n }\n\n // Prevent overwriting connected status from race condition\n if (\n config.state.status === 'reconnecting' ||\n config.state.status === 'connecting'\n ) {\n // If connecting didn't succeed, set to disconnected\n if (!connected)\n config.setState((x) => ({\n ...x,\n connections: new Map(),\n current: null,\n status: 'disconnected',\n }))\n else config.setState((x) => ({ ...x, status: 'connected' }))\n }\n\n isReconnecting = false\n return connections\n}\n","import { reconnect } from './actions/reconnect.js'\nimport type { Config, State } from './createConfig.js'\n\ntype HydrateParameters = {\n initialState?: State | undefined\n reconnectOnMount?: boolean | undefined\n}\n\nexport function hydrate(config: Config, parameters: HydrateParameters) {\n const { initialState, reconnectOnMount } = parameters\n\n if (initialState && !config._internal.store.persist.hasHydrated())\n config.setState({\n ...initialState,\n chainId: config.chains.some((x) => x.id === initialState.chainId)\n ? initialState.chainId\n : config.chains[0].id,\n connections: reconnectOnMount ? initialState.connections : new Map(),\n status: reconnectOnMount ? 'reconnecting' : 'disconnected',\n })\n\n return {\n async onMount() {\n if (config._internal.ssr) {\n await config._internal.store.persist.rehydrate()\n const mipdConnectors = config._internal.mipd\n ?.getProviders()\n .map(config._internal.connectors.providerDetailToConnector)\n .map(config._internal.connectors.setup)\n config._internal.connectors.setState((connectors) => [\n ...connectors,\n ...(mipdConnectors ?? []),\n ])\n }\n\n if (reconnectOnMount) reconnect(config)\n else if (config.storage)\n // Reset connections that may have been hydrated from storage.\n config.setState((x) => ({\n ...x,\n connections: new Map(),\n }))\n },\n }\n}\n","'use client'\n\nimport { type ResolvedRegister, type State, hydrate } from '@wagmi/core'\nimport { type ReactElement, useEffect, useRef } from 'react'\n\nexport type HydrateProps = {\n config: ResolvedRegister['config']\n initialState?: State | undefined\n reconnectOnMount?: boolean | undefined\n}\n\nexport function Hydrate(parameters: React.PropsWithChildren) {\n const { children, config, initialState, reconnectOnMount = true } = parameters\n\n const { onMount } = hydrate(config, {\n initialState,\n reconnectOnMount,\n })\n\n // Hydrate for non-SSR\n if (!config._internal.ssr) onMount()\n\n // Hydrate for SSR\n const active = useRef(true)\n // biome-ignore lint/correctness/useExhaustiveDependencies: `queryKey` not required\n useEffect(() => {\n if (!active.current) return\n if (!config._internal.ssr) return\n onMount()\n return () => {\n active.current = false\n }\n }, [])\n\n return children as ReactElement\n}\n","'use client'\n\nimport type { ResolvedRegister, State } from '@wagmi/core'\nimport { createContext, createElement } from 'react'\nimport { Hydrate } from './hydrate.js'\n\nexport const WagmiContext = createContext<\n ResolvedRegister['config'] | undefined\n>(undefined)\n\nexport type WagmiProviderProps = {\n config: ResolvedRegister['config']\n initialState?: State | undefined\n reconnectOnMount?: boolean | undefined\n}\n\nexport function WagmiProvider(\n parameters: React.PropsWithChildren,\n) {\n const { children, config } = parameters\n\n const props = { value: config }\n return createElement(\n Hydrate,\n parameters,\n createElement(WagmiContext.Provider, props, children),\n )\n}\n","export const version = '2.13.8'\n","import type { Compute, OneOf } from '../types/utils.js'\nimport { getVersion } from '../utils/getVersion.js'\n\nexport type ErrorType = Error & { name: name }\n\ntype BaseErrorOptions = Compute<\n OneOf<{ details?: string | undefined } | { cause: BaseError | Error }> & {\n docsPath?: string | undefined\n docsSlug?: string | undefined\n metaMessages?: string[] | undefined\n }\n>\n\nexport type BaseErrorType = BaseError & { name: 'WagmiCoreError' }\nexport class BaseError extends Error {\n details: string\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n shortMessage: string\n\n override name = 'WagmiCoreError'\n get docsBaseUrl() {\n return 'https://wagmi.sh/core'\n }\n get version() {\n return getVersion()\n }\n\n constructor(shortMessage: string, options: BaseErrorOptions = {}) {\n super()\n\n const details =\n options.cause instanceof BaseError\n ? options.cause.details\n : options.cause?.message\n ? options.cause.message\n : options.details!\n const docsPath =\n options.cause instanceof BaseError\n ? options.cause.docsPath || options.docsPath\n : options.docsPath\n\n this.message = [\n shortMessage || 'An error occurred.',\n '',\n ...(options.metaMessages ? [...options.metaMessages, ''] : []),\n ...(docsPath\n ? [\n `Docs: ${this.docsBaseUrl}${docsPath}.html${\n options.docsSlug ? `#${options.docsSlug}` : ''\n }`,\n ]\n : []),\n ...(details ? [`Details: ${details}`] : []),\n `Version: ${this.version}`,\n ].join('\\n')\n\n if (options.cause) this.cause = options.cause\n this.details = details\n this.docsPath = docsPath\n this.metaMessages = options.metaMessages\n this.shortMessage = shortMessage\n }\n\n walk(fn?: (err: unknown) => boolean) {\n return this.#walk(this, fn)\n }\n\n #walk(err: unknown, fn?: (err: unknown) => boolean): unknown {\n if (fn?.(err)) return err\n if ((err as Error).cause) return this.#walk((err as Error).cause, fn)\n return err\n }\n}\n","import { version } from '../version.js'\n\nexport const getVersion = () => `@wagmi/core@${version}`\n","import { BaseError as CoreError } from '@wagmi/core'\n\nimport { getVersion } from '../utils/getVersion.js'\n\nexport type BaseErrorType = BaseError & { name: 'WagmiError' }\nexport class BaseError extends CoreError {\n override name = 'WagmiError'\n override get docsBaseUrl() {\n return 'https://wagmi.sh/react'\n }\n override get version() {\n return getVersion()\n }\n}\n","import { version } from '../version.js'\n\nexport const getVersion = () => `wagmi@${version}`\n","import { BaseError } from './base.js'\n\nexport type WagmiProviderNotFoundErrorType = WagmiProviderNotFoundError & {\n name: 'WagmiProviderNotFoundError'\n}\nexport class WagmiProviderNotFoundError extends BaseError {\n override name = 'WagmiProviderNotFoundError'\n constructor() {\n super('`useConfig` must be used within `WagmiProvider`.', {\n docsPath: '/api/WagmiProvider',\n })\n }\n}\n","'use client'\n\nimport type { Config, ResolvedRegister } from '@wagmi/core'\nimport { useContext } from 'react'\n\nimport { WagmiContext } from '../context.js'\nimport { WagmiProviderNotFoundError } from '../errors/context.js'\nimport type { ConfigParameter } from '../types/properties.js'\n\nexport type UseConfigParameters =\n ConfigParameter\n\nexport type UseConfigReturnType = config\n\n/** https://wagmi.sh/react/api/hooks/useConfig */\nexport function useConfig(\n parameters: UseConfigParameters = {},\n): UseConfigReturnType {\n const config = parameters.config ?? useContext(WagmiContext)\n if (!config) throw new WagmiProviderNotFoundError()\n return config as UseConfigReturnType\n}\n","'use client'\n\nimport { deepEqual } from '@wagmi/core/internal'\nimport { useMemo, useRef } from 'react'\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector.js'\n\nconst isPlainObject = (obj: unknown) =>\n typeof obj === 'object' && !Array.isArray(obj)\n\nexport function useSyncExternalStoreWithTracked<\n snapshot extends selection,\n selection = snapshot,\n>(\n subscribe: (onStoreChange: () => void) => () => void,\n getSnapshot: () => snapshot,\n getServerSnapshot: undefined | null | (() => snapshot) = getSnapshot,\n isEqual: (a: selection, b: selection) => boolean = deepEqual,\n) {\n const trackedKeys = useRef([])\n const result = useSyncExternalStoreWithSelector(\n subscribe,\n getSnapshot,\n getServerSnapshot,\n (x) => x,\n (a, b) => {\n if (isPlainObject(a) && isPlainObject(b) && trackedKeys.current.length) {\n for (const key of trackedKeys.current) {\n const equal = isEqual(\n (a as { [_a: string]: any })[key],\n (b as { [_b: string]: any })[key],\n )\n if (!equal) return false\n }\n return true\n }\n return isEqual(a, b)\n },\n )\n\n return useMemo(() => {\n if (isPlainObject(result)) {\n const trackedResult = { ...result }\n let properties = {}\n for (const [key, value] of Object.entries(\n trackedResult as { [key: string]: any },\n )) {\n properties = {\n ...properties,\n [key]: {\n configurable: false,\n enumerable: true,\n get: () => {\n if (!trackedKeys.current.includes(key)) {\n trackedKeys.current.push(key)\n }\n return value\n },\n },\n }\n }\n Object.defineProperties(trackedResult, properties)\n return trackedResult\n }\n\n return result\n }, [result])\n}\n","'use client'\n\nimport {\n type Config,\n type GetAccountReturnType,\n type ResolvedRegister,\n getAccount,\n watchAccount,\n} from '@wagmi/core'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport { useConfig } from './useConfig.js'\nimport { useSyncExternalStoreWithTracked } from './useSyncExternalStoreWithTracked.js'\n\nexport type UseAccountParameters =\n ConfigParameter\n\nexport type UseAccountReturnType =\n GetAccountReturnType\n\n/** https://wagmi.sh/react/api/hooks/useAccount */\nexport function useAccount(\n parameters: UseAccountParameters = {},\n): UseAccountReturnType {\n const config = useConfig(parameters)\n\n return useSyncExternalStoreWithTracked(\n (onChange) => watchAccount(config, { onChange }),\n () => getAccount(config),\n )\n}\n","import type { Config } from '../createConfig.js'\nimport { deepEqual } from '../utils/deepEqual.js'\nimport { type GetAccountReturnType, getAccount } from './getAccount.js'\n\nexport type WatchAccountParameters = {\n onChange(\n account: GetAccountReturnType,\n prevAccount: GetAccountReturnType,\n ): void\n}\n\nexport type WatchAccountReturnType = () => void\n\n/** https://wagmi.sh/core/api/actions/watchAccount */\nexport function watchAccount(\n config: config,\n parameters: WatchAccountParameters,\n): WatchAccountReturnType {\n const { onChange } = parameters\n\n return config.subscribe(() => getAccount(config), onChange, {\n equalityFn(a, b) {\n const { connector: aConnector, ...aRest } = a\n const { connector: bConnector, ...bRest } = b\n return (\n deepEqual(aRest, bRest) &&\n // check connector separately\n aConnector?.id === bConnector?.id &&\n aConnector?.uid === bConnector?.uid\n )\n },\n })\n}\n","// TYPES\n\ntype NotifyCallback = () => void\n\ntype NotifyFunction = (callback: () => void) => void\n\ntype BatchNotifyFunction = (callback: () => void) => void\n\ntype BatchCallsCallback> = (...args: T) => void\n\ntype ScheduleFunction = (callback: () => void) => void\n\nexport function createNotifyManager() {\n let queue: Array = []\n let transactions = 0\n let notifyFn: NotifyFunction = (callback) => {\n callback()\n }\n let batchNotifyFn: BatchNotifyFunction = (callback: () => void) => {\n callback()\n }\n let scheduleFn: ScheduleFunction = (cb) => setTimeout(cb, 0)\n\n const setScheduler = (fn: ScheduleFunction) => {\n scheduleFn = fn\n }\n\n const batch = (callback: () => T): T => {\n let result\n transactions++\n try {\n result = callback()\n } finally {\n transactions--\n if (!transactions) {\n flush()\n }\n }\n return result\n }\n\n const schedule = (callback: NotifyCallback): void => {\n if (transactions) {\n queue.push(callback)\n } else {\n scheduleFn(() => {\n notifyFn(callback)\n })\n }\n }\n\n /**\n * All calls to the wrapped function will be batched.\n */\n const batchCalls = >(\n callback: BatchCallsCallback,\n ): BatchCallsCallback => {\n return (...args) => {\n schedule(() => {\n callback(...args)\n })\n }\n }\n\n const flush = (): void => {\n const originalQueue = queue\n queue = []\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback)\n })\n })\n })\n }\n }\n\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n const setNotifyFunction = (fn: NotifyFunction) => {\n notifyFn = fn\n }\n\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n const setBatchNotifyFunction = (fn: BatchNotifyFunction) => {\n batchNotifyFn = fn\n }\n\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction,\n setScheduler,\n } as const\n}\n\n// SINGLETON\nexport const notifyManager = createNotifyManager()\n","import type {\n DefaultError,\n Enabled,\n FetchStatus,\n MutationKey,\n MutationStatus,\n QueryFunction,\n QueryKey,\n QueryOptions,\n StaleTime,\n} from './types'\nimport type { Mutation } from './mutation'\nimport type { FetchOptions, Query } from './query'\n\n// TYPES\n\nexport interface QueryFilters {\n /**\n * Filter to active queries, inactive queries or all queries\n */\n type?: QueryTypeFilter\n /**\n * Match query key exactly\n */\n exact?: boolean\n /**\n * Include queries matching this predicate function\n */\n predicate?: (query: Query) => boolean\n /**\n * Include queries matching this query key\n */\n queryKey?: QueryKey\n /**\n * Include or exclude stale queries\n */\n stale?: boolean\n /**\n * Include queries matching their fetchStatus\n */\n fetchStatus?: FetchStatus\n}\n\nexport interface MutationFilters {\n /**\n * Match mutation key exactly\n */\n exact?: boolean\n /**\n * Include mutations matching this predicate function\n */\n predicate?: (mutation: Mutation) => boolean\n /**\n * Include mutations matching this mutation key\n */\n mutationKey?: MutationKey\n /**\n * Filter by mutation status\n */\n status?: MutationStatus\n}\n\nexport type Updater = TOutput | ((input: TInput) => TOutput)\n\nexport type QueryTypeFilter = 'all' | 'active' | 'inactive'\n\n// UTILS\n\nexport const isServer = typeof window === 'undefined' || 'Deno' in globalThis\n\nexport function noop(): undefined {\n return undefined\n}\n\nexport function functionalUpdate(\n updater: Updater,\n input: TInput,\n): TOutput {\n return typeof updater === 'function'\n ? (updater as (_: TInput) => TOutput)(input)\n : updater\n}\n\nexport function isValidTimeout(value: unknown): value is number {\n return typeof value === 'number' && value >= 0 && value !== Infinity\n}\n\nexport function timeUntilStale(updatedAt: number, staleTime?: number): number {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0)\n}\n\nexport function resolveStaleTime<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n staleTime: undefined | StaleTime,\n query: Query,\n): number | undefined {\n return typeof staleTime === 'function' ? staleTime(query) : staleTime\n}\n\nexport function resolveEnabled<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n enabled: undefined | Enabled,\n query: Query,\n): boolean | undefined {\n return typeof enabled === 'function' ? enabled(query) : enabled\n}\n\nexport function matchQuery(\n filters: QueryFilters,\n query: Query,\n): boolean {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale,\n } = filters\n\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive()\n if (type === 'active' && !isActive) {\n return false\n }\n if (type === 'inactive' && isActive) {\n return false\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false\n }\n\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false\n }\n\n if (predicate && !predicate(query)) {\n return false\n }\n\n return true\n}\n\nexport function matchMutation(\n filters: MutationFilters,\n mutation: Mutation,\n): boolean {\n const { exact, status, predicate, mutationKey } = filters\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false\n }\n }\n\n if (status && mutation.state.status !== status) {\n return false\n }\n\n if (predicate && !predicate(mutation)) {\n return false\n }\n\n return true\n}\n\nexport function hashQueryKeyByOptions(\n queryKey: TQueryKey,\n options?: Pick, 'queryKeyHashFn'>,\n): string {\n const hashFn = options?.queryKeyHashFn || hashKey\n return hashFn(queryKey)\n}\n\n/**\n * Default query & mutation keys hash function.\n * Hashes the value into a stable hash.\n */\nexport function hashKey(queryKey: QueryKey | MutationKey): string {\n return JSON.stringify(queryKey, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any)\n : val,\n )\n}\n\n/**\n * Checks if key `b` partially matches with key `a`.\n */\nexport function partialMatchKey(a: QueryKey, b: QueryKey): boolean\nexport function partialMatchKey(a: any, b: any): boolean {\n if (a === b) {\n return true\n }\n\n if (typeof a !== typeof b) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]))\n }\n\n return false\n}\n\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\nexport function replaceEqualDeep(a: unknown, b: T): T\nexport function replaceEqualDeep(a: any, b: any): any {\n if (a === b) {\n return a\n }\n\n const array = isPlainArray(a) && isPlainArray(b)\n\n if (array || (isPlainObject(a) && isPlainObject(b))) {\n const aItems = array ? a : Object.keys(a)\n const aSize = aItems.length\n const bItems = array ? b : Object.keys(b)\n const bSize = bItems.length\n const copy: any = array ? [] : {}\n\n let equalItems = 0\n\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i]\n if (\n ((!array && aItems.includes(key)) || array) &&\n a[key] === undefined &&\n b[key] === undefined\n ) {\n copy[key] = undefined\n equalItems++\n } else {\n copy[key] = replaceEqualDeep(a[key], b[key])\n if (copy[key] === a[key] && a[key] !== undefined) {\n equalItems++\n }\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy\n }\n\n return b\n}\n\n/**\n * Shallow compare objects.\n */\nexport function shallowEqualObjects>(\n a: T,\n b: T | undefined,\n): boolean {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isPlainArray(value: unknown) {\n return Array.isArray(value) && value.length === Object.keys(value).length\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\nexport function isPlainObject(o: any): o is Object {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has no constructor\n const ctor = o.constructor\n if (ctor === undefined) {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Handles Objects created by Object.create()\n if (Object.getPrototypeOf(o) !== Object.prototype) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function sleep(timeout: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, timeout)\n })\n}\n\nexport function replaceData<\n TData,\n TOptions extends QueryOptions,\n>(prevData: TData | undefined, data: TData, options: TOptions): TData {\n if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data) as TData\n } else if (options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data)\n }\n return data\n}\n\nexport function keepPreviousData(\n previousData: T | undefined,\n): T | undefined {\n return previousData\n}\n\nexport function addToEnd(items: Array, item: T, max = 0): Array {\n const newItems = [...items, item]\n return max && newItems.length > max ? newItems.slice(1) : newItems\n}\n\nexport function addToStart(items: Array, item: T, max = 0): Array {\n const newItems = [item, ...items]\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems\n}\n\nexport const skipToken = Symbol()\nexport type SkipToken = typeof skipToken\n\nexport function ensureQueryFn<\n TQueryFnData = unknown,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: {\n queryFn?: QueryFunction | SkipToken\n queryHash?: string\n },\n fetchOptions?: FetchOptions,\n): QueryFunction {\n if (process.env.NODE_ENV !== 'production') {\n if (options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`,\n )\n }\n }\n\n // if we attempt to retry a fetch that was triggered from an initialPromise\n // when we don't have a queryFn yet, we can't retry, so we just return the already rejected initialPromise\n // if an observer has already mounted, we will be able to retry with that queryFn\n if (!options.queryFn && fetchOptions?.initialPromise) {\n return () => fetchOptions.initialPromise!\n }\n\n if (!options.queryFn || options.queryFn === skipToken) {\n return () =>\n Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`))\n }\n\n return options.queryFn\n}\n","import { isServer, isValidTimeout } from './utils'\n\nexport abstract class Removable {\n gcTime!: number\n #gcTimeout?: ReturnType\n\n destroy(): void {\n this.clearGcTimeout()\n }\n\n protected scheduleGc(): void {\n this.clearGcTimeout()\n\n if (isValidTimeout(this.gcTime)) {\n this.#gcTimeout = setTimeout(() => {\n this.optionalRemove()\n }, this.gcTime)\n }\n }\n\n protected updateGcTime(newGcTime: number | undefined): void {\n // Default to 5 minutes (Infinity for server-side) if no gcTime is set\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (isServer ? Infinity : 5 * 60 * 1000),\n )\n }\n\n protected clearGcTimeout() {\n if (this.#gcTimeout) {\n clearTimeout(this.#gcTimeout)\n this.#gcTimeout = undefined\n }\n }\n\n protected abstract optionalRemove(): void\n}\n","export class Subscribable {\n protected listeners = new Set()\n\n constructor() {\n this.subscribe = this.subscribe.bind(this)\n }\n\n subscribe(listener: TListener): () => void {\n this.listeners.add(listener)\n\n this.onSubscribe()\n\n return () => {\n this.listeners.delete(listener)\n this.onUnsubscribe()\n }\n }\n\n hasListeners(): boolean {\n return this.listeners.size > 0\n }\n\n protected onSubscribe(): void {\n // Do nothing\n }\n\n protected onUnsubscribe(): void {\n // Do nothing\n }\n}\n","import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype Listener = (focused: boolean) => void\n\ntype SetupFn = (\n setFocused: (focused?: boolean) => void,\n) => (() => void) | undefined\n\nexport class FocusManager extends Subscribable {\n #focused?: boolean\n #cleanup?: () => void\n\n #setup: SetupFn\n\n constructor() {\n super()\n this.#setup = (onFocus) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus()\n // Listen to visibilitychange\n window.addEventListener('visibilitychange', listener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener)\n }\n }\n return\n }\n }\n\n protected onSubscribe(): void {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.()\n this.#cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.#setup = setup\n this.#cleanup?.()\n this.#cleanup = setup((focused) => {\n if (typeof focused === 'boolean') {\n this.setFocused(focused)\n } else {\n this.onFocus()\n }\n })\n }\n\n setFocused(focused?: boolean): void {\n const changed = this.#focused !== focused\n if (changed) {\n this.#focused = focused\n this.onFocus()\n }\n }\n\n onFocus(): void {\n const isFocused = this.isFocused()\n this.listeners.forEach((listener) => {\n listener(isFocused)\n })\n }\n\n isFocused(): boolean {\n if (typeof this.#focused === 'boolean') {\n return this.#focused\n }\n\n // document global can be unavailable in react native\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return globalThis.document?.visibilityState !== 'hidden'\n }\n}\n\nexport const focusManager = new FocusManager()\n","import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype Listener = (online: boolean) => void\ntype SetupFn = (setOnline: Listener) => (() => void) | undefined\n\nexport class OnlineManager extends Subscribable {\n #online = true\n #cleanup?: () => void\n\n #setup: SetupFn\n\n constructor() {\n super()\n this.#setup = (onOnline) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const onlineListener = () => onOnline(true)\n const offlineListener = () => onOnline(false)\n // Listen to online\n window.addEventListener('online', onlineListener, false)\n window.addEventListener('offline', offlineListener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', onlineListener)\n window.removeEventListener('offline', offlineListener)\n }\n }\n\n return\n }\n }\n\n protected onSubscribe(): void {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.()\n this.#cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.#setup = setup\n this.#cleanup?.()\n this.#cleanup = setup(this.setOnline.bind(this))\n }\n\n setOnline(online: boolean): void {\n const changed = this.#online !== online\n\n if (changed) {\n this.#online = online\n this.listeners.forEach((listener) => {\n listener(online)\n })\n }\n }\n\n isOnline(): boolean {\n return this.#online\n }\n}\n\nexport const onlineManager = new OnlineManager()\n","import { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { isServer, sleep } from './utils'\nimport type { CancelOptions, DefaultError, NetworkMode } from './types'\n\n// TYPES\n\ninterface RetryerConfig {\n fn: () => TData | Promise\n initialPromise?: Promise\n abort?: () => void\n onError?: (error: TError) => void\n onSuccess?: (data: TData) => void\n onFail?: (failureCount: number, error: TError) => void\n onPause?: () => void\n onContinue?: () => void\n retry?: RetryValue\n retryDelay?: RetryDelayValue\n networkMode: NetworkMode | undefined\n canRun: () => boolean\n}\n\nexport interface Retryer {\n promise: Promise\n cancel: (cancelOptions?: CancelOptions) => void\n continue: () => Promise\n cancelRetry: () => void\n continueRetry: () => void\n canStart: () => boolean\n start: () => Promise\n}\n\nexport type RetryValue = boolean | number | ShouldRetryFunction\n\ntype ShouldRetryFunction = (\n failureCount: number,\n error: TError,\n) => boolean\n\nexport type RetryDelayValue = number | RetryDelayFunction\n\ntype RetryDelayFunction = (\n failureCount: number,\n error: TError,\n) => number\n\nfunction defaultRetryDelay(failureCount: number) {\n return Math.min(1000 * 2 ** failureCount, 30000)\n}\n\nexport function canFetch(networkMode: NetworkMode | undefined): boolean {\n return (networkMode ?? 'online') === 'online'\n ? onlineManager.isOnline()\n : true\n}\n\nexport class CancelledError extends Error {\n revert?: boolean\n silent?: boolean\n constructor(options?: CancelOptions) {\n super('CancelledError')\n this.revert = options?.revert\n this.silent = options?.silent\n }\n}\n\nexport function isCancelledError(value: any): value is CancelledError {\n return value instanceof CancelledError\n}\n\nexport function createRetryer(\n config: RetryerConfig,\n): Retryer {\n let isRetryCancelled = false\n let failureCount = 0\n let isResolved = false\n let continueFn: ((value?: unknown) => void) | undefined\n let promiseResolve: (data: TData) => void\n let promiseReject: (error: TError) => void\n\n const promise = new Promise((outerResolve, outerReject) => {\n promiseResolve = outerResolve\n promiseReject = outerReject\n })\n\n const cancel = (cancelOptions?: CancelOptions): void => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions))\n\n config.abort?.()\n }\n }\n const cancelRetry = () => {\n isRetryCancelled = true\n }\n\n const continueRetry = () => {\n isRetryCancelled = false\n }\n\n const canContinue = () =>\n focusManager.isFocused() &&\n (config.networkMode === 'always' || onlineManager.isOnline()) &&\n config.canRun()\n\n const canStart = () => canFetch(config.networkMode) && config.canRun()\n\n const resolve = (value: any) => {\n if (!isResolved) {\n isResolved = true\n config.onSuccess?.(value)\n continueFn?.()\n promiseResolve(value)\n }\n }\n\n const reject = (value: any) => {\n if (!isResolved) {\n isResolved = true\n config.onError?.(value)\n continueFn?.()\n promiseReject(value)\n }\n }\n\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n if (isResolved || canContinue()) {\n continueResolve(value)\n }\n }\n config.onPause?.()\n }).then(() => {\n continueFn = undefined\n if (!isResolved) {\n config.onContinue?.()\n }\n })\n }\n\n // Create loop function\n const run = () => {\n // Do nothing if already resolved\n if (isResolved) {\n return\n }\n\n let promiseOrValue: any\n\n // we can re-use config.initialPromise on the first call of run()\n const initialPromise =\n failureCount === 0 ? config.initialPromise : undefined\n\n // Execute query\n try {\n promiseOrValue = initialPromise ?? config.fn()\n } catch (error) {\n promiseOrValue = Promise.reject(error)\n }\n\n Promise.resolve(promiseOrValue)\n .then(resolve)\n .catch((error) => {\n // Stop if the fetch is already resolved\n if (isResolved) {\n return\n }\n\n // Do we need to retry the request?\n const retry = config.retry ?? (isServer ? 0 : 3)\n const retryDelay = config.retryDelay ?? defaultRetryDelay\n const delay =\n typeof retryDelay === 'function'\n ? retryDelay(failureCount, error)\n : retryDelay\n const shouldRetry =\n retry === true ||\n (typeof retry === 'number' && failureCount < retry) ||\n (typeof retry === 'function' && retry(failureCount, error))\n\n if (isRetryCancelled || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error)\n return\n }\n\n failureCount++\n\n // Notify on fail\n config.onFail?.(failureCount, error)\n\n // Delay\n sleep(delay)\n // Pause if the document is not visible or when the device is offline\n .then(() => {\n return canContinue() ? undefined : pause()\n })\n .then(() => {\n if (isRetryCancelled) {\n reject(error)\n } else {\n run()\n }\n })\n })\n }\n\n return {\n promise,\n cancel,\n continue: () => {\n continueFn?.()\n return promise\n },\n cancelRetry,\n continueRetry,\n canStart,\n start: () => {\n // Start loop\n if (canStart()) {\n run()\n } else {\n pause().then(run)\n }\n return promise\n },\n }\n}\n","import { notifyManager } from './notifyManager'\nimport { Removable } from './removable'\nimport { createRetryer } from './retryer'\nimport type {\n DefaultError,\n MutationMeta,\n MutationOptions,\n MutationStatus,\n} from './types'\nimport type { MutationCache } from './mutationCache'\nimport type { MutationObserver } from './mutationObserver'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface MutationConfig {\n mutationId: number\n mutationCache: MutationCache\n options: MutationOptions\n state?: MutationState\n}\n\nexport interface MutationState<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TContext = unknown,\n> {\n context: TContext | undefined\n data: TData | undefined\n error: TError | null\n failureCount: number\n failureReason: TError | null\n isPaused: boolean\n status: MutationStatus\n variables: TVariables | undefined\n submittedAt: number\n}\n\ninterface FailedAction {\n type: 'failed'\n failureCount: number\n error: TError | null\n}\n\ninterface PendingAction {\n type: 'pending'\n isPaused: boolean\n variables?: TVariables\n context?: TContext\n}\n\ninterface SuccessAction {\n type: 'success'\n data: TData\n}\n\ninterface ErrorAction {\n type: 'error'\n error: TError\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\nexport type Action =\n | ContinueAction\n | ErrorAction\n | FailedAction\n | PendingAction\n | PauseAction\n | SuccessAction\n\n// CLASS\n\nexport class Mutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TContext = unknown,\n> extends Removable {\n state: MutationState\n options!: MutationOptions\n readonly mutationId: number\n\n #observers: Array>\n #mutationCache: MutationCache\n #retryer?: Retryer\n\n constructor(config: MutationConfig) {\n super()\n\n this.mutationId = config.mutationId\n this.#mutationCache = config.mutationCache\n this.#observers = []\n this.state = config.state || getDefaultState()\n\n this.setOptions(config.options)\n this.scheduleGc()\n }\n\n setOptions(\n options: MutationOptions,\n ): void {\n this.options = options\n\n this.updateGcTime(this.options.gcTime)\n }\n\n get meta(): MutationMeta | undefined {\n return this.options.meta\n }\n\n addObserver(observer: MutationObserver): void {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer)\n\n // Stop the mutation from being garbage collected\n this.clearGcTimeout()\n\n this.#mutationCache.notify({\n type: 'observerAdded',\n mutation: this,\n observer,\n })\n }\n }\n\n removeObserver(observer: MutationObserver): void {\n this.#observers = this.#observers.filter((x) => x !== observer)\n\n this.scheduleGc()\n\n this.#mutationCache.notify({\n type: 'observerRemoved',\n mutation: this,\n observer,\n })\n }\n\n protected optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === 'pending') {\n this.scheduleGc()\n } else {\n this.#mutationCache.remove(this)\n }\n }\n }\n\n continue(): Promise {\n return (\n this.#retryer?.continue() ??\n // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables!)\n )\n }\n\n async execute(variables: TVariables): Promise {\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error('No mutationFn found'))\n }\n return this.options.mutationFn(variables)\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.#dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.#dispatch({ type: 'continue' })\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this),\n })\n\n const restored = this.state.status === 'pending'\n const isPaused = !this.#retryer.canStart()\n\n try {\n if (!restored) {\n this.#dispatch({ type: 'pending', variables, isPaused })\n // Notify cache callback\n await this.#mutationCache.config.onMutate?.(\n variables,\n this as Mutation,\n )\n const context = await this.options.onMutate?.(variables)\n if (context !== this.state.context) {\n this.#dispatch({\n type: 'pending',\n context,\n variables,\n isPaused,\n })\n }\n }\n const data = await this.#retryer.start()\n\n // Notify cache callback\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this as Mutation,\n )\n\n await this.options.onSuccess?.(data, variables, this.state.context!)\n\n // Notify cache callback\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this as Mutation,\n )\n\n await this.options.onSettled?.(data, null, variables, this.state.context)\n\n this.#dispatch({ type: 'success', data })\n return data\n } catch (error) {\n try {\n // Notify cache callback\n await this.#mutationCache.config.onError?.(\n error as any,\n variables,\n this.state.context,\n this as Mutation,\n )\n\n await this.options.onError?.(\n error as TError,\n variables,\n this.state.context,\n )\n\n // Notify cache callback\n await this.#mutationCache.config.onSettled?.(\n undefined,\n error as any,\n this.state.variables,\n this.state.context,\n this as Mutation,\n )\n\n await this.options.onSettled?.(\n undefined,\n error as TError,\n variables,\n this.state.context,\n )\n throw error\n } finally {\n this.#dispatch({ type: 'error', error: error as TError })\n }\n } finally {\n this.#mutationCache.runNext(this)\n }\n }\n\n #dispatch(action: Action): void {\n const reducer = (\n state: MutationState,\n ): MutationState => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n isPaused: true,\n }\n case 'continue':\n return {\n ...state,\n isPaused: false,\n }\n case 'pending':\n return {\n ...state,\n context: action.context,\n data: undefined,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: 'pending',\n variables: action.variables,\n submittedAt: Date.now(),\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: 'success',\n isPaused: false,\n }\n case 'error':\n return {\n ...state,\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: 'error',\n }\n }\n }\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action)\n })\n this.#mutationCache.notify({\n mutation: this,\n type: 'updated',\n action,\n })\n })\n }\n}\n\nexport function getDefaultState<\n TData,\n TError,\n TVariables,\n TContext,\n>(): MutationState {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: 'idle',\n variables: undefined,\n submittedAt: 0,\n }\n}\n","import { getDefaultState } from './mutation'\nimport { notifyManager } from './notifyManager'\nimport { Subscribable } from './subscribable'\nimport { hashKey, shallowEqualObjects } from './utils'\nimport type { QueryClient } from './queryClient'\nimport type {\n DefaultError,\n MutateOptions,\n MutationObserverOptions,\n MutationObserverResult,\n} from './types'\nimport type { Action, Mutation } from './mutation'\n\n// TYPES\n\ntype MutationObserverListener = (\n result: MutationObserverResult,\n) => void\n\n// CLASS\n\nexport class MutationObserver<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n> extends Subscribable<\n MutationObserverListener\n> {\n options!: MutationObserverOptions\n\n #client: QueryClient\n #currentResult: MutationObserverResult =\n undefined!\n #currentMutation?: Mutation\n #mutateOptions?: MutateOptions\n\n constructor(\n client: QueryClient,\n options: MutationObserverOptions,\n ) {\n super()\n\n this.#client = client\n this.setOptions(options)\n this.bindMethods()\n this.#updateResult()\n }\n\n protected bindMethods(): void {\n this.mutate = this.mutate.bind(this)\n this.reset = this.reset.bind(this)\n }\n\n setOptions(\n options: MutationObserverOptions,\n ) {\n const prevOptions = this.options as\n | MutationObserverOptions\n | undefined\n this.options = this.#client.defaultMutationOptions(options)\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: 'observerOptionsUpdated',\n mutation: this.#currentMutation,\n observer: this,\n })\n }\n\n if (\n prevOptions?.mutationKey &&\n this.options.mutationKey &&\n hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)\n ) {\n this.reset()\n } else if (this.#currentMutation?.state.status === 'pending') {\n this.#currentMutation.setOptions(this.options)\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this)\n }\n }\n\n onMutationUpdate(action: Action): void {\n this.#updateResult()\n\n this.#notify(action)\n }\n\n getCurrentResult(): MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n > {\n return this.#currentResult\n }\n\n reset(): void {\n // reset needs to remove the observer from the mutation because there is no way to \"get it back\"\n // another mutate call will yield a new mutation!\n this.#currentMutation?.removeObserver(this)\n this.#currentMutation = undefined\n this.#updateResult()\n this.#notify()\n }\n\n mutate(\n variables: TVariables,\n options?: MutateOptions,\n ): Promise {\n this.#mutateOptions = options\n\n this.#currentMutation?.removeObserver(this)\n\n this.#currentMutation = this.#client\n .getMutationCache()\n .build(this.#client, this.options)\n\n this.#currentMutation.addObserver(this)\n\n return this.#currentMutation.execute(variables)\n }\n\n #updateResult(): void {\n const state =\n this.#currentMutation?.state ??\n getDefaultState()\n\n this.#currentResult = {\n ...state,\n isPending: state.status === 'pending',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset,\n } as MutationObserverResult\n }\n\n #notify(action?: Action): void {\n notifyManager.batch(() => {\n // First trigger the mutate callbacks\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables!\n const context = this.#currentResult.context\n\n if (action?.type === 'success') {\n this.#mutateOptions.onSuccess?.(action.data, variables, context!)\n this.#mutateOptions.onSettled?.(action.data, null, variables, context)\n } else if (action?.type === 'error') {\n this.#mutateOptions.onError?.(action.error, variables, context)\n this.#mutateOptions.onSettled?.(\n undefined,\n action.error,\n variables,\n context,\n )\n }\n }\n\n // Then trigger the listeners\n this.listeners.forEach((listener) => {\n listener(this.#currentResult)\n })\n })\n }\n}\n","'use client'\nimport * as React from 'react'\n\nimport type { QueryClient } from '@tanstack/query-core'\n\nexport const QueryClientContext = React.createContext(\n undefined,\n)\n\nexport const useQueryClient = (queryClient?: QueryClient) => {\n const client = React.useContext(QueryClientContext)\n\n if (queryClient) {\n return queryClient\n }\n\n if (!client) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one')\n }\n\n return client\n}\n\nexport type QueryClientProviderProps = {\n client: QueryClient\n children?: React.ReactNode\n}\n\nexport const QueryClientProvider = ({\n client,\n children,\n}: QueryClientProviderProps): React.JSX.Element => {\n React.useEffect(() => {\n client.mount()\n return () => {\n client.unmount()\n }\n }, [client])\n\n return (\n \n {children}\n \n )\n}\n","export function shouldThrowError) => boolean>(\n throwError: boolean | T | undefined,\n params: Parameters,\n): boolean {\n // Allow throwError function to override throwing behavior on a per-error basis\n if (typeof throwError === 'function') {\n return throwError(...params)\n }\n\n return !!throwError\n}\n\nexport function noop() {}\n","'use client'\nimport * as React from 'react'\nimport { MutationObserver, notifyManager } from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport { noop, shouldThrowError } from './utils'\nimport type {\n UseMutateFunction,\n UseMutationOptions,\n UseMutationResult,\n} from './types'\nimport type { DefaultError, QueryClient } from '@tanstack/query-core'\n\n// HOOK\n\nexport function useMutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n>(\n options: UseMutationOptions,\n queryClient?: QueryClient,\n): UseMutationResult {\n const client = useQueryClient(queryClient)\n\n const [observer] = React.useState(\n () =>\n new MutationObserver(\n client,\n options,\n ),\n )\n\n React.useEffect(() => {\n observer.setOptions(options)\n }, [observer, options])\n\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) =>\n observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer],\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult(),\n )\n\n const mutate = React.useCallback<\n UseMutateFunction\n >(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop)\n },\n [observer],\n )\n\n if (\n result.error &&\n shouldThrowError(observer.options.throwOnError, [result.error])\n ) {\n throw result.error\n }\n\n return { ...result, mutate, mutateAsync: result.mutate }\n}\n","import type { Address } from 'viem'\n\nimport type { Connector } from '../createConfig.js'\nimport { BaseError } from './base.js'\n\nexport type ChainNotConfiguredErrorType = ChainNotConfiguredError & {\n name: 'ChainNotConfiguredError'\n}\nexport class ChainNotConfiguredError extends BaseError {\n override name = 'ChainNotConfiguredError'\n constructor() {\n super('Chain not configured.')\n }\n}\n\nexport type ConnectorAlreadyConnectedErrorType =\n ConnectorAlreadyConnectedError & {\n name: 'ConnectorAlreadyConnectedError'\n }\nexport class ConnectorAlreadyConnectedError extends BaseError {\n override name = 'ConnectorAlreadyConnectedError'\n constructor() {\n super('Connector already connected.')\n }\n}\n\nexport type ConnectorNotConnectedErrorType = ConnectorNotConnectedError & {\n name: 'ConnectorNotConnectedError'\n}\nexport class ConnectorNotConnectedError extends BaseError {\n override name = 'ConnectorNotConnectedError'\n constructor() {\n super('Connector not connected.')\n }\n}\n\nexport type ConnectorNotFoundErrorType = ConnectorNotFoundError & {\n name: 'ConnectorNotFoundError'\n}\nexport class ConnectorNotFoundError extends BaseError {\n override name = 'ConnectorNotFoundError'\n constructor() {\n super('Connector not found.')\n }\n}\n\nexport type ConnectorAccountNotFoundErrorType =\n ConnectorAccountNotFoundError & {\n name: 'ConnectorAccountNotFoundError'\n }\nexport class ConnectorAccountNotFoundError extends BaseError {\n override name = 'ConnectorAccountNotFoundError'\n constructor({\n address,\n connector,\n }: {\n address: Address\n connector: Connector\n }) {\n super(`Account \"${address}\" not found for connector \"${connector.name}\".`)\n }\n}\n\nexport type ConnectorChainMismatchErrorType = ConnectorAccountNotFoundError & {\n name: 'ConnectorChainMismatchError'\n}\nexport class ConnectorChainMismatchError extends BaseError {\n override name = 'ConnectorChainMismatchError'\n constructor({\n connectionChainId,\n connectorChainId,\n }: {\n connectionChainId: number\n connectorChainId: number\n }) {\n super(\n `The current chain of the connector (id: ${connectorChainId}) does not match the connection's chain (id: ${connectionChainId}).`,\n {\n metaMessages: [\n `Current Chain ID: ${connectorChainId}`,\n `Expected Chain ID: ${connectionChainId}`,\n ],\n },\n )\n }\n}\n\nexport type ConnectorUnavailableReconnectingErrorType =\n ConnectorUnavailableReconnectingError & {\n name: 'ConnectorUnavailableReconnectingError'\n }\nexport class ConnectorUnavailableReconnectingError extends BaseError {\n override name = 'ConnectorUnavailableReconnectingError'\n constructor({ connector }: { connector: { name: string } }) {\n super(`Connector \"${connector.name}\" unavailable while reconnecting.`, {\n details: [\n 'During the reconnection step, the only connector methods guaranteed to be available are: `id`, `name`, `type`, `uuid`.',\n 'All other methods are not guaranteed to be available until reconnection completes and connectors are fully restored.',\n 'This error commonly occurs for connectors that asynchronously inject after reconnection has already started.',\n ].join(' '),\n })\n }\n}\n","import type { MutationOptions } from '@tanstack/query-core'\n\nimport {\n type ConnectErrorType,\n type ConnectParameters,\n type ConnectReturnType,\n connect,\n} from '../actions/connect.js'\nimport type { Config } from '../createConfig.js'\n\nimport type { Mutate, MutateAsync } from './types.js'\n\nexport function connectMutationOptions(config: config) {\n return {\n mutationFn(variables) {\n return connect(config, variables)\n },\n mutationKey: ['connect'],\n } as const satisfies MutationOptions<\n ConnectData,\n ConnectErrorType,\n ConnectVariables\n >\n}\n\nexport type ConnectData = ConnectReturnType\n\nexport type ConnectVariables = ConnectParameters\n\nexport type ConnectMutate = Mutate<\n ConnectData,\n ConnectErrorType,\n ConnectVariables,\n context\n>\n\nexport type ConnectMutateAsync<\n config extends Config,\n context = unknown,\n> = MutateAsync<\n ConnectData,\n ConnectErrorType,\n ConnectVariables,\n context\n>\n","import type {\n Address,\n ResourceUnavailableRpcErrorType,\n UserRejectedRequestErrorType,\n} from 'viem'\n\nimport type { CreateConnectorFn } from '../connectors/createConnector.js'\nimport type { Config, Connector } from '../createConfig.js'\nimport type { BaseErrorType, ErrorType } from '../errors/base.js'\nimport {\n ConnectorAlreadyConnectedError,\n type ConnectorAlreadyConnectedErrorType,\n} from '../errors/config.js'\nimport type { ChainIdParameter } from '../types/properties.js'\nimport type { Compute } from '../types/utils.js'\n\nexport type ConnectParameters = Compute<\n ChainIdParameter & {\n connector: Connector | CreateConnectorFn\n }\n>\n\nexport type ConnectReturnType = {\n accounts: readonly [Address, ...Address[]]\n chainId:\n | config['chains'][number]['id']\n | (number extends config['chains'][number]['id'] ? number : number & {})\n}\n\nexport type ConnectErrorType =\n | ConnectorAlreadyConnectedErrorType\n // connector.connect()\n | UserRejectedRequestErrorType\n | ResourceUnavailableRpcErrorType\n // base\n | BaseErrorType\n | ErrorType\n\n/** https://wagmi.sh/core/api/actions/connect */\nexport async function connect(\n config: config,\n parameters: ConnectParameters,\n): Promise> {\n // \"Register\" connector if not already created\n let connector: Connector\n if (typeof parameters.connector === 'function') {\n connector = config._internal.connectors.setup(parameters.connector)\n } else connector = parameters.connector\n\n // Check if connector is already connected\n if (connector.uid === config.state.current)\n throw new ConnectorAlreadyConnectedError()\n\n try {\n config.setState((x) => ({ ...x, status: 'connecting' }))\n connector.emitter.emit('message', { type: 'connecting' })\n\n const data = await connector.connect({ chainId: parameters.chainId })\n const accounts = data.accounts as readonly [Address, ...Address[]]\n\n connector.emitter.off('connect', config._internal.events.connect)\n connector.emitter.on('change', config._internal.events.change)\n connector.emitter.on('disconnect', config._internal.events.disconnect)\n\n await config.storage?.setItem('recentConnectorId', connector.id)\n config.setState((x) => ({\n ...x,\n connections: new Map(x.connections).set(connector.uid, {\n accounts,\n chainId: data.chainId,\n connector: connector,\n }),\n current: connector.uid,\n status: 'connected',\n }))\n\n return { accounts, chainId: data.chainId }\n } catch (error) {\n config.setState((x) => ({\n ...x,\n // Keep existing connector connected in case of error\n status: x.current ? 'connected' : 'disconnected',\n }))\n throw error\n }\n}\n","import type { Config, Connector } from '../createConfig.js'\nimport { deepEqual } from '../utils/deepEqual.js'\n\nexport type GetConnectorsReturnType = readonly Connector[]\n\nlet previousConnectors: readonly Connector[] = []\n\n/** https://wagmi.sh/core/api/actions/getConnectors */\nexport function getConnectors(config: Config): GetConnectorsReturnType {\n const connectors = config.connectors\n if (deepEqual(previousConnectors, connectors)) return previousConnectors\n previousConnectors = connectors\n return connectors\n}\n","'use client'\n\nimport {\n type GetConnectorsReturnType,\n getConnectors,\n watchConnectors,\n} from '@wagmi/core'\nimport { useSyncExternalStore } from 'react'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseConnectorsParameters = ConfigParameter\n\nexport type UseConnectorsReturnType = GetConnectorsReturnType\n\n/** https://wagmi.sh/react/api/hooks/useConnectors */\nexport function useConnectors(\n parameters: UseConnectorsParameters = {},\n): UseConnectorsReturnType {\n const config = useConfig(parameters)\n\n return useSyncExternalStore(\n (onChange) => watchConnectors(config, { onChange }),\n () => getConnectors(config),\n () => getConnectors(config),\n )\n}\n","import type { Config } from '../createConfig.js'\nimport type { GetConnectorsReturnType } from './getConnectors.js'\n\nexport type WatchConnectorsParameters = {\n onChange(\n connections: GetConnectorsReturnType,\n prevConnectors: GetConnectorsReturnType,\n ): void\n}\n\nexport type WatchConnectorsReturnType = () => void\n\n/** https://wagmi.sh/core/api/actions/watchConnectors */\nexport function watchConnectors(\n config: Config,\n parameters: WatchConnectorsParameters,\n): WatchConnectorsReturnType {\n const { onChange } = parameters\n return config._internal.connectors.subscribe((connectors, prevConnectors) => {\n onChange(Object.values(connectors), prevConnectors)\n })\n}\n","'use client'\n\nimport { useMutation } from '@tanstack/react-query'\nimport type { Config, ConnectErrorType, ResolvedRegister } from '@wagmi/core'\nimport type { Compute } from '@wagmi/core/internal'\nimport {\n type ConnectData,\n type ConnectMutate,\n type ConnectMutateAsync,\n type ConnectVariables,\n connectMutationOptions,\n} from '@wagmi/core/query'\nimport { useEffect } from 'react'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport type {\n UseMutationParameters,\n UseMutationReturnType,\n} from '../utils/query.js'\nimport { useConfig } from './useConfig.js'\nimport { type UseConnectorsReturnType, useConnectors } from './useConnectors.js'\n\nexport type UseConnectParameters<\n config extends Config = Config,\n context = unknown,\n> = Compute<\n ConfigParameter & {\n mutation?:\n | UseMutationParameters<\n ConnectData,\n ConnectErrorType,\n ConnectVariables,\n context\n >\n | undefined\n }\n>\n\nexport type UseConnectReturnType<\n config extends Config = Config,\n context = unknown,\n> = Compute<\n UseMutationReturnType<\n ConnectData,\n ConnectErrorType,\n ConnectVariables,\n context\n > & {\n connect: ConnectMutate\n connectAsync: ConnectMutateAsync\n connectors: Compute\n }\n>\n\n/** https://wagmi.sh/react/api/hooks/useConnect */\nexport function useConnect<\n config extends Config = ResolvedRegister['config'],\n context = unknown,\n>(\n parameters: UseConnectParameters = {},\n): UseConnectReturnType {\n const { mutation } = parameters\n\n const config = useConfig(parameters)\n\n const mutationOptions = connectMutationOptions(config)\n const { mutate, mutateAsync, ...result } = useMutation({\n ...mutation,\n ...mutationOptions,\n })\n\n // Reset mutation back to an idle state when the connector disconnects.\n useEffect(() => {\n return config.subscribe(\n ({ status }) => status,\n (status, previousStatus) => {\n if (previousStatus === 'connected' && status === 'disconnected')\n result.reset()\n },\n )\n }, [config, result.reset])\n\n return {\n ...result,\n connect: mutate,\n connectAsync: mutateAsync,\n connectors: useConnectors({ config }),\n }\n}\n","const size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import type { Address } from 'abitype'\n\nimport type { JsonRpcAccount } from '../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../accounts/utils/parseAccount.js'\nimport type { ErrorType } from '../errors/utils.js'\nimport type { Account } from '../types/account.js'\nimport type { Chain } from '../types/chain.js'\nimport type {\n EIP1193RequestFn,\n EIP1474Methods,\n RpcSchema,\n} from '../types/eip1193.js'\nimport type { ExactPartial, Prettify } from '../types/utils.js'\nimport type {\n CcipRequestParameters,\n CcipRequestReturnType,\n} from '../utils/ccip.js'\nimport { uid } from '../utils/uid.js'\nimport type { PublicActions } from './decorators/public.js'\nimport type { WalletActions } from './decorators/wallet.js'\nimport type { Transport } from './transports/createTransport.js'\n\nexport type ClientConfig<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n accountOrAddress extends Account | Address | undefined =\n | Account\n | Address\n | undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n> = {\n /** The Account to use for the Client. This will be used for Actions that require an account as an argument. */\n account?: accountOrAddress | Account | Address | undefined\n /** Flags for batch settings. */\n batch?:\n | {\n /** Toggle to enable `eth_call` multicall aggregation. */\n multicall?: boolean | Prettify | undefined\n }\n | undefined\n /**\n * Time (in ms) that cached data will remain in memory.\n * @default 4_000\n */\n cacheTime?: number | undefined\n /**\n * [CCIP Read](https://eips.ethereum.org/EIPS/eip-3668) configuration.\n * If `false`, the client will not support offchain CCIP lookups.\n */\n ccipRead?:\n | {\n /**\n * A function that will be called to make the offchain CCIP lookup request.\n * @see https://eips.ethereum.org/EIPS/eip-3668#client-lookup-protocol\n */\n request?: (\n parameters: CcipRequestParameters,\n ) => Promise\n }\n | false\n | undefined\n /** Chain for the client. */\n chain?: Chain | undefined | chain\n /** A key for the client. */\n key?: string | undefined\n /** A name for the client. */\n name?: string | undefined\n /**\n * Frequency (in ms) for polling enabled actions & events.\n * @default 4_000\n */\n pollingInterval?: number | undefined\n /**\n * Typed JSON-RPC schema for the client.\n */\n rpcSchema?: rpcSchema | undefined\n /** The RPC transport */\n transport: transport\n /** The type of client. */\n type?: string | undefined\n}\n\n// Actions that are used internally by other Actions (ie. `call` is used by `readContract`).\n// They are allowed to be extended, but must conform to their parameter & return type interfaces.\n// Example: an extended `call` action must accept `CallParameters` as parameters,\n// and conform to the `CallReturnType` return type.\ntype ExtendableProtectedActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n> = Pick<\n PublicActions,\n | 'call'\n | 'createContractEventFilter'\n | 'createEventFilter'\n | 'estimateContractGas'\n | 'estimateGas'\n | 'getBlock'\n | 'getBlockNumber'\n | 'getChainId'\n | 'getContractEvents'\n | 'getEnsText'\n | 'getFilterChanges'\n | 'getGasPrice'\n | 'getLogs'\n | 'getTransaction'\n | 'getTransactionCount'\n | 'getTransactionReceipt'\n | 'prepareTransactionRequest'\n | 'readContract'\n | 'sendRawTransaction'\n | 'simulateContract'\n | 'uninstallFilter'\n | 'watchBlockNumber'\n | 'watchContractEvent'\n> &\n Pick, 'sendTransaction' | 'writeContract'>\n\n// TODO: Move `transport` to slot index 2 since `chain` and `account` used more frequently.\n// Otherwise, we end up with a lot of `Client` in actions.\nexport type Client<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n extended extends Extended | undefined = Extended | undefined,\n> = Client_Base &\n (extended extends Extended ? extended : unknown) & {\n extend: <\n const client extends Extended &\n ExactPartial>,\n >(\n fn: (\n client: Client,\n ) => client,\n ) => Client<\n transport,\n chain,\n account,\n rpcSchema,\n Prettify & (extended extends Extended ? extended : unknown)\n >\n }\n\ntype Client_Base<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n> = {\n /** The Account of the Client. */\n account: account\n /** Flags for batch settings. */\n batch?: ClientConfig['batch'] | undefined\n /** Time (in ms) that cached data will remain in memory. */\n cacheTime: number\n /** [CCIP Read](https://eips.ethereum.org/EIPS/eip-3668) configuration. */\n ccipRead?: ClientConfig['ccipRead'] | undefined\n /** Chain for the client. */\n chain: chain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: EIP1193RequestFn<\n rpcSchema extends undefined ? EIP1474Methods : rpcSchema\n >\n /** The RPC transport */\n transport: ReturnType['config'] & ReturnType['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\ntype Extended = Prettify<\n // disallow redefining base properties\n { [_ in keyof Client_Base]?: undefined } & {\n [key: string]: unknown\n }\n>\n\nexport type MulticallBatchOptions = {\n /** The maximum size (in bytes) for each calldata chunk. @default 1_024 */\n batchSize?: number | undefined\n /** The maximum number of milliseconds to wait before sending a batch. @default 0 */\n wait?: number | undefined\n}\n\nexport type CreateClientErrorType = ParseAccountErrorType | ErrorType\n\nexport function createClient<\n transport extends Transport,\n chain extends Chain | undefined = undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n>(\n parameters: ClientConfig,\n): Prettify<\n Client<\n transport,\n chain,\n accountOrAddress extends Address\n ? Prettify>\n : accountOrAddress,\n rpcSchema\n >\n>\n\nexport function createClient(parameters: ClientConfig): Client {\n const {\n batch,\n cacheTime = parameters.pollingInterval ?? 4_000,\n ccipRead,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n type = 'base',\n } = parameters\n\n const chain = parameters.chain\n const account = parameters.account\n ? parseAccount(parameters.account)\n : undefined\n const { config, request, value } = parameters.transport({\n chain,\n pollingInterval,\n })\n const transport = { ...config, ...value }\n\n const client = {\n account,\n batch,\n cacheTime,\n ccipRead,\n chain,\n key,\n name,\n pollingInterval,\n request,\n transport,\n type,\n uid: uid(),\n }\n\n function extend(base: typeof client) {\n type ExtendFn = (base: typeof client) => unknown\n return (extendFn: ExtendFn) => {\n const extended = extendFn(base) as Extended\n for (const key in client) delete extended[key]\n const combined = { ...base, ...extended }\n return Object.assign(combined, { extend: extend(combined as any) })\n }\n }\n\n return Object.assign(client, { extend: extend(client) as any })\n}\n\n/**\n * Defines a typed JSON-RPC schema for the client.\n * Note: This is a runtime noop function.\n */\nexport function rpcSchema(): rpcSchema {\n return null as any\n}\n","import type { Prettify } from '../types/utils.js'\nimport { BaseError } from './base.js'\nimport { RpcRequestError } from './request.js'\n\nconst unknownErrorCode = -1\n\nexport type RpcErrorCode =\n | -1\n | -32700 // Parse error\n | -32600 // Invalid request\n | -32601 // Method not found\n | -32602 // Invalid params\n | -32603 // Internal error\n | -32000 // Invalid input\n | -32001 // Resource not found\n | -32002 // Resource unavailable\n | -32003 // Transaction rejected\n | -32004 // Method not supported\n | -32005 // Limit exceeded\n | -32006 // JSON-RPC version not supported\n | -32042 // Method not found\n\ntype RpcErrorOptions = {\n code?: code | (number & {}) | undefined\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n name?: string | undefined\n shortMessage: string\n}\n\n/**\n * Error subclass implementing JSON RPC 2.0 errors and Ethereum RPC errors per EIP-1474.\n *\n * - EIP https://eips.ethereum.org/EIPS/eip-1474\n */\nexport type RpcErrorType = RpcError & { name: 'RpcError' }\nexport class RpcError extends BaseError {\n code: code_ | (number & {})\n\n constructor(\n cause: Error,\n {\n code,\n docsPath,\n metaMessages,\n name,\n shortMessage,\n }: RpcErrorOptions,\n ) {\n super(shortMessage, {\n cause,\n docsPath,\n metaMessages:\n metaMessages || (cause as { metaMessages?: string[] })?.metaMessages,\n name: name || 'RpcError',\n })\n this.name = name || cause.name\n this.code = (\n cause instanceof RpcRequestError ? cause.code : code ?? unknownErrorCode\n ) as code_\n }\n}\n\nexport type ProviderRpcErrorCode =\n | 4001 // User Rejected Request\n | 4100 // Unauthorized\n | 4200 // Unsupported Method\n | 4900 // Disconnected\n | 4901 // Chain Disconnected\n | 4902 // Chain Not Recognized\n\n/**\n * Error subclass implementing Ethereum Provider errors per EIP-1193.\n *\n * - EIP https://eips.ethereum.org/EIPS/eip-1193\n */\nexport type ProviderRpcErrorType = ProviderRpcError & {\n name: 'ProviderRpcError'\n}\nexport class ProviderRpcError<\n T = undefined,\n> extends RpcError {\n data?: T | undefined\n\n constructor(\n cause: Error,\n options: Prettify<\n RpcErrorOptions & {\n data?: T | undefined\n }\n >,\n ) {\n super(cause, options)\n\n this.data = options.data\n }\n}\n\n/**\n * Subclass for a \"Parse error\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type ParseRpcErrorType = ParseRpcError & {\n code: -32700\n name: 'ParseRpcError'\n}\nexport class ParseRpcError extends RpcError {\n static code = -32700 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ParseRpcError.code,\n name: 'ParseRpcError',\n shortMessage:\n 'Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.',\n })\n }\n}\n\n/**\n * Subclass for a \"Invalid request\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type InvalidRequestRpcErrorType = InvalidRequestRpcError & {\n code: -32600\n name: 'InvalidRequestRpcError'\n}\nexport class InvalidRequestRpcError extends RpcError {\n static code = -32600 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: InvalidRequestRpcError.code,\n name: 'InvalidRequestRpcError',\n shortMessage: 'JSON is not a valid request object.',\n })\n }\n}\n\n/**\n * Subclass for a \"Method not found\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type MethodNotFoundRpcErrorType = MethodNotFoundRpcError & {\n code: -32601\n name: 'MethodNotFoundRpcError'\n}\nexport class MethodNotFoundRpcError extends RpcError {\n static code = -32601 as const\n\n constructor(cause: Error, { method }: { method?: string } = {}) {\n super(cause, {\n code: MethodNotFoundRpcError.code,\n name: 'MethodNotFoundRpcError',\n shortMessage: `The method${method ? ` \"${method}\"` : ''} does not exist / is not available.`,\n })\n }\n}\n\n/**\n * Subclass for an \"Invalid params\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type InvalidParamsRpcErrorType = InvalidParamsRpcError & {\n code: -32602\n name: 'InvalidParamsRpcError'\n}\nexport class InvalidParamsRpcError extends RpcError {\n static code = -32602 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: InvalidParamsRpcError.code,\n name: 'InvalidParamsRpcError',\n shortMessage: [\n 'Invalid parameters were provided to the RPC method.',\n 'Double check you have provided the correct parameters.',\n ].join('\\n'),\n })\n }\n}\n\n/**\n * Subclass for an \"Internal error\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type InternalRpcErrorType = InternalRpcError & {\n code: -32603\n name: 'InternalRpcError'\n}\nexport class InternalRpcError extends RpcError {\n static code = -32603 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: InternalRpcError.code,\n name: 'InternalRpcError',\n shortMessage: 'An internal error was received.',\n })\n }\n}\n\n/**\n * Subclass for an \"Invalid input\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type InvalidInputRpcErrorType = InvalidInputRpcError & {\n code: -32000\n name: 'InvalidInputRpcError'\n}\nexport class InvalidInputRpcError extends RpcError {\n static code = -32000 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: InvalidInputRpcError.code,\n name: 'InvalidInputRpcError',\n shortMessage: [\n 'Missing or invalid parameters.',\n 'Double check you have provided the correct parameters.',\n ].join('\\n'),\n })\n }\n}\n\n/**\n * Subclass for a \"Resource not found\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type ResourceNotFoundRpcErrorType = ResourceNotFoundRpcError & {\n code: -32001\n name: 'ResourceNotFoundRpcError'\n}\nexport class ResourceNotFoundRpcError extends RpcError {\n override name = 'ResourceNotFoundRpcError'\n static code = -32001 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ResourceNotFoundRpcError.code,\n name: 'ResourceNotFoundRpcError',\n shortMessage: 'Requested resource not found.',\n })\n }\n}\n\n/**\n * Subclass for a \"Resource unavailable\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type ResourceUnavailableRpcErrorType = ResourceUnavailableRpcError & {\n code: -32002\n name: 'ResourceUnavailableRpcError'\n}\nexport class ResourceUnavailableRpcError extends RpcError {\n static code = -32002 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ResourceUnavailableRpcError.code,\n name: 'ResourceUnavailableRpcError',\n shortMessage: 'Requested resource not available.',\n })\n }\n}\n\n/**\n * Subclass for a \"Transaction rejected\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type TransactionRejectedRpcErrorType = TransactionRejectedRpcError & {\n code: -32003\n name: 'TransactionRejectedRpcError'\n}\nexport class TransactionRejectedRpcError extends RpcError {\n static code = -32003 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: TransactionRejectedRpcError.code,\n name: 'TransactionRejectedRpcError',\n shortMessage: 'Transaction creation failed.',\n })\n }\n}\n\n/**\n * Subclass for a \"Method not supported\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type MethodNotSupportedRpcErrorType = MethodNotSupportedRpcError & {\n code: -32004\n name: 'MethodNotSupportedRpcError'\n}\nexport class MethodNotSupportedRpcError extends RpcError {\n static code = -32004 as const\n\n constructor(cause: Error, { method }: { method?: string } = {}) {\n super(cause, {\n code: MethodNotSupportedRpcError.code,\n name: 'MethodNotSupportedRpcError',\n shortMessage: `Method${method ? ` \"${method}\"` : ''} is not implemented.`,\n })\n }\n}\n\n/**\n * Subclass for a \"Limit exceeded\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type LimitExceededRpcErrorType = LimitExceededRpcError & {\n code: -32005\n name: 'LimitExceededRpcError'\n}\nexport class LimitExceededRpcError extends RpcError {\n static code = -32005 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: LimitExceededRpcError.code,\n name: 'LimitExceededRpcError',\n shortMessage: 'Request exceeds defined limit.',\n })\n }\n}\n\n/**\n * Subclass for a \"JSON-RPC version not supported\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type JsonRpcVersionUnsupportedErrorType =\n JsonRpcVersionUnsupportedError & {\n code: -32006\n name: 'JsonRpcVersionUnsupportedError'\n }\nexport class JsonRpcVersionUnsupportedError extends RpcError {\n static code = -32006 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: JsonRpcVersionUnsupportedError.code,\n name: 'JsonRpcVersionUnsupportedError',\n shortMessage: 'Version of JSON-RPC protocol is not supported.',\n })\n }\n}\n\n/**\n * Subclass for a \"User Rejected Request\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type UserRejectedRequestErrorType = UserRejectedRequestError & {\n code: 4001\n name: 'UserRejectedRequestError'\n}\nexport class UserRejectedRequestError extends ProviderRpcError {\n static code = 4001 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: UserRejectedRequestError.code,\n name: 'UserRejectedRequestError',\n shortMessage: 'User rejected the request.',\n })\n }\n}\n\n/**\n * Subclass for an \"Unauthorized\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type UnauthorizedProviderErrorType = UnauthorizedProviderError & {\n code: 4100\n name: 'UnauthorizedProviderError'\n}\nexport class UnauthorizedProviderError extends ProviderRpcError {\n static code = 4100 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: UnauthorizedProviderError.code,\n name: 'UnauthorizedProviderError',\n shortMessage:\n 'The requested method and/or account has not been authorized by the user.',\n })\n }\n}\n\n/**\n * Subclass for an \"Unsupported Method\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type UnsupportedProviderMethodErrorType =\n UnsupportedProviderMethodError & {\n code: 4200\n name: 'UnsupportedProviderMethodError'\n }\nexport class UnsupportedProviderMethodError extends ProviderRpcError {\n static code = 4200 as const\n\n constructor(cause: Error, { method }: { method?: string } = {}) {\n super(cause, {\n code: UnsupportedProviderMethodError.code,\n name: 'UnsupportedProviderMethodError',\n shortMessage: `The Provider does not support the requested method${method ? ` \" ${method}\"` : ''}.`,\n })\n }\n}\n\n/**\n * Subclass for an \"Disconnected\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type ProviderDisconnectedErrorType = ProviderDisconnectedError & {\n code: 4900\n name: 'ProviderDisconnectedError'\n}\nexport class ProviderDisconnectedError extends ProviderRpcError {\n static code = 4900 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ProviderDisconnectedError.code,\n name: 'ProviderDisconnectedError',\n shortMessage: 'The Provider is disconnected from all chains.',\n })\n }\n}\n\n/**\n * Subclass for an \"Chain Disconnected\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type ChainDisconnectedErrorType = ChainDisconnectedError & {\n code: 4901\n name: 'ChainDisconnectedError'\n}\nexport class ChainDisconnectedError extends ProviderRpcError {\n static code = 4901 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ChainDisconnectedError.code,\n name: 'ChainDisconnectedError',\n shortMessage: 'The Provider is not connected to the requested chain.',\n })\n }\n}\n\n/**\n * Subclass for an \"Switch Chain\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type SwitchChainErrorType = SwitchChainError & {\n code: 4902\n name: 'SwitchChainError'\n}\nexport class SwitchChainError extends ProviderRpcError {\n static code = 4902 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: SwitchChainError.code,\n name: 'SwitchChainError',\n shortMessage: 'An error occurred when attempting to switch chain.',\n })\n }\n}\n\n/**\n * Subclass for an unknown RPC error.\n */\nexport type UnknownRpcErrorType = UnknownRpcError & {\n name: 'UnknownRpcError'\n}\nexport class UnknownRpcError extends RpcError {\n constructor(cause: Error) {\n super(cause, {\n name: 'UnknownRpcError',\n shortMessage: 'An unknown RPC error occurred.',\n })\n }\n}\n","import { LruMap } from '../lru.js'\n\n/** @internal */\nexport const promiseCache = /*#__PURE__*/ new LruMap>(8192)\n\ntype WithDedupeOptions = {\n enabled?: boolean | undefined\n id?: string | undefined\n}\n\n/** Deduplicates in-flight promises. */\nexport function withDedupe(\n fn: () => Promise,\n { enabled = true, id }: WithDedupeOptions,\n): Promise {\n if (!enabled || !id) return fn()\n if (promiseCache.get(id)) return promiseCache.get(id)!\n const promise = fn().finally(() => promiseCache.delete(id))\n promiseCache.set(id, promise)\n return promise\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport { wait } from '../wait.js'\n\nexport type WithRetryParameters = {\n // The delay (in ms) between retries.\n delay?:\n | ((config: { count: number; error: Error }) => number)\n | number\n | undefined\n // The max number of times to retry.\n retryCount?: number | undefined\n // Whether or not to retry when an error is thrown.\n shouldRetry?:\n | (({\n count,\n error,\n }: {\n count: number\n error: Error\n }) => Promise | boolean)\n | undefined\n}\n\nexport type WithRetryErrorType = ErrorType\n\nexport function withRetry(\n fn: () => Promise,\n {\n delay: delay_ = 100,\n retryCount = 2,\n shouldRetry = () => true,\n }: WithRetryParameters = {},\n) {\n return new Promise((resolve, reject) => {\n const attemptRetry = async ({ count = 0 } = {}) => {\n const retry = async ({ error }: { error: Error }) => {\n const delay =\n typeof delay_ === 'function' ? delay_({ count, error }) : delay_\n if (delay) await wait(delay)\n attemptRetry({ count: count + 1 })\n }\n\n try {\n const data = await fn()\n resolve(data)\n } catch (err) {\n if (\n count < retryCount &&\n (await shouldRetry({ count, error: err as Error }))\n )\n return retry({ error: err as Error })\n reject(err)\n }\n }\n attemptRetry()\n })\n}\n","export async function wait(time: number) {\n return new Promise((res) => setTimeout(res, time))\n}\n","import { BaseError } from '../errors/base.js'\nimport {\n HttpRequestError,\n type HttpRequestErrorType,\n type RpcRequestErrorType,\n type TimeoutErrorType,\n type WebSocketRequestErrorType,\n} from '../errors/request.js'\nimport {\n ChainDisconnectedError,\n type ChainDisconnectedErrorType,\n InternalRpcError,\n type InternalRpcErrorType,\n InvalidInputRpcError,\n type InvalidInputRpcErrorType,\n InvalidParamsRpcError,\n type InvalidParamsRpcErrorType,\n InvalidRequestRpcError,\n type InvalidRequestRpcErrorType,\n JsonRpcVersionUnsupportedError,\n type JsonRpcVersionUnsupportedErrorType,\n LimitExceededRpcError,\n type LimitExceededRpcErrorType,\n MethodNotFoundRpcError,\n type MethodNotFoundRpcErrorType,\n MethodNotSupportedRpcError,\n type MethodNotSupportedRpcErrorType,\n ParseRpcError,\n type ParseRpcErrorType,\n ProviderDisconnectedError,\n type ProviderDisconnectedErrorType,\n type ProviderRpcErrorCode,\n ResourceNotFoundRpcError,\n type ResourceNotFoundRpcErrorType,\n ResourceUnavailableRpcError,\n type ResourceUnavailableRpcErrorType,\n type RpcError,\n type RpcErrorCode,\n type RpcErrorType,\n SwitchChainError,\n type SwitchChainErrorType,\n TransactionRejectedRpcError,\n type TransactionRejectedRpcErrorType,\n UnauthorizedProviderError,\n type UnauthorizedProviderErrorType,\n UnknownRpcError,\n type UnknownRpcErrorType,\n UnsupportedProviderMethodError,\n type UnsupportedProviderMethodErrorType,\n UserRejectedRequestError,\n type UserRejectedRequestErrorType,\n} from '../errors/rpc.js'\nimport type { ErrorType } from '../errors/utils.js'\nimport type {\n EIP1193RequestFn,\n EIP1193RequestOptions,\n} from '../types/eip1193.js'\nimport { stringToHex } from './encoding/toHex.js'\nimport { keccak256 } from './hash/keccak256.js'\nimport type { CreateBatchSchedulerErrorType } from './promise/createBatchScheduler.js'\nimport { withDedupe } from './promise/withDedupe.js'\nimport { type WithRetryErrorType, withRetry } from './promise/withRetry.js'\nimport type { GetSocketRpcClientErrorType } from './rpc/socket.js'\nimport { stringify } from './stringify.js'\n\nexport type RequestErrorType =\n | ChainDisconnectedErrorType\n | CreateBatchSchedulerErrorType\n | HttpRequestErrorType\n | InternalRpcErrorType\n | InvalidInputRpcErrorType\n | InvalidParamsRpcErrorType\n | InvalidRequestRpcErrorType\n | GetSocketRpcClientErrorType\n | JsonRpcVersionUnsupportedErrorType\n | LimitExceededRpcErrorType\n | MethodNotFoundRpcErrorType\n | MethodNotSupportedRpcErrorType\n | ParseRpcErrorType\n | ProviderDisconnectedErrorType\n | ResourceNotFoundRpcErrorType\n | ResourceUnavailableRpcErrorType\n | RpcErrorType\n | RpcRequestErrorType\n | SwitchChainErrorType\n | TimeoutErrorType\n | TransactionRejectedRpcErrorType\n | UnauthorizedProviderErrorType\n | UnknownRpcErrorType\n | UnsupportedProviderMethodErrorType\n | UserRejectedRequestErrorType\n | WebSocketRequestErrorType\n | WithRetryErrorType\n | ErrorType\n\nexport function buildRequest Promise>(\n request: request,\n options: EIP1193RequestOptions = {},\n): EIP1193RequestFn {\n return async (args, overrideOptions = {}) => {\n const {\n dedupe = false,\n retryDelay = 150,\n retryCount = 3,\n uid,\n } = {\n ...options,\n ...overrideOptions,\n }\n const requestId = dedupe\n ? keccak256(stringToHex(`${uid}.${stringify(args)}`))\n : undefined\n return withDedupe(\n () =>\n withRetry(\n async () => {\n try {\n return await request(args)\n } catch (err_) {\n const err = err_ as unknown as RpcError<\n RpcErrorCode | ProviderRpcErrorCode\n >\n switch (err.code) {\n // -32700\n case ParseRpcError.code:\n throw new ParseRpcError(err)\n // -32600\n case InvalidRequestRpcError.code:\n throw new InvalidRequestRpcError(err)\n // -32601\n case MethodNotFoundRpcError.code:\n throw new MethodNotFoundRpcError(err, { method: args.method })\n // -32602\n case InvalidParamsRpcError.code:\n throw new InvalidParamsRpcError(err)\n // -32603\n case InternalRpcError.code:\n throw new InternalRpcError(err)\n // -32000\n case InvalidInputRpcError.code:\n throw new InvalidInputRpcError(err)\n // -32001\n case ResourceNotFoundRpcError.code:\n throw new ResourceNotFoundRpcError(err)\n // -32002\n case ResourceUnavailableRpcError.code:\n throw new ResourceUnavailableRpcError(err)\n // -32003\n case TransactionRejectedRpcError.code:\n throw new TransactionRejectedRpcError(err)\n // -32004\n case MethodNotSupportedRpcError.code:\n throw new MethodNotSupportedRpcError(err, {\n method: args.method,\n })\n // -32005\n case LimitExceededRpcError.code:\n throw new LimitExceededRpcError(err)\n // -32006\n case JsonRpcVersionUnsupportedError.code:\n throw new JsonRpcVersionUnsupportedError(err)\n // 4001\n case UserRejectedRequestError.code:\n throw new UserRejectedRequestError(err)\n // 4100\n case UnauthorizedProviderError.code:\n throw new UnauthorizedProviderError(err)\n // 4200\n case UnsupportedProviderMethodError.code:\n throw new UnsupportedProviderMethodError(err)\n // 4900\n case ProviderDisconnectedError.code:\n throw new ProviderDisconnectedError(err)\n // 4901\n case ChainDisconnectedError.code:\n throw new ChainDisconnectedError(err)\n // 4902\n case SwitchChainError.code:\n throw new SwitchChainError(err)\n // CAIP-25: User Rejected Error\n // https://docs.walletconnect.com/2.0/specs/clients/sign/error-codes#rejected-caip-25\n case 5000:\n throw new UserRejectedRequestError(err)\n default:\n if (err_ instanceof BaseError) throw err_\n throw new UnknownRpcError(err as Error)\n }\n }\n },\n {\n delay: ({ count, error }) => {\n // If we find a Retry-After header, let's retry after the given time.\n if (error && error instanceof HttpRequestError) {\n const retryAfter = error?.headers?.get('Retry-After')\n if (retryAfter?.match(/\\d/))\n return Number.parseInt(retryAfter) * 1000\n }\n\n // Otherwise, let's retry with an exponential backoff.\n return ~~(1 << count) * retryDelay\n },\n retryCount,\n shouldRetry: ({ error }) => shouldRetry(error),\n },\n ),\n { enabled: dedupe, id: requestId },\n )\n }\n}\n\n/** @internal */\nexport function shouldRetry(error: Error) {\n if ('code' in error && typeof error.code === 'number') {\n if (error.code === -1) return true // Unknown error\n if (error.code === LimitExceededRpcError.code) return true\n if (error.code === InternalRpcError.code) return true\n return false\n }\n if (error instanceof HttpRequestError && error.status) {\n // Forbidden\n if (error.status === 403) return true\n // Request Timeout\n if (error.status === 408) return true\n // Request Entity Too Large\n if (error.status === 413) return true\n // Too Many Requests\n if (error.status === 429) return true\n // Internal Server Error\n if (error.status === 500) return true\n // Bad Gateway\n if (error.status === 502) return true\n // Service Unavailable\n if (error.status === 503) return true\n // Gateway Timeout\n if (error.status === 504) return true\n return false\n }\n return true\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { EIP1193RequestFn } from '../../types/eip1193.js'\nimport { buildRequest } from '../../utils/buildRequest.js'\nimport { uid as uid_ } from '../../utils/uid.js'\nimport type { ClientConfig } from '../createClient.js'\n\nexport type TransportConfig<\n type extends string = string,\n eip1193RequestFn extends EIP1193RequestFn = EIP1193RequestFn,\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: eip1193RequestFn\n /** The base delay (in ms) between retries. */\n retryDelay?: number | undefined\n /** The max number of times to retry. */\n retryCount?: number | undefined\n /** The timeout (in ms) for requests. */\n timeout?: number | undefined\n /** The type of the transport. */\n type: type\n}\n\nexport type Transport<\n type extends string = string,\n rpcAttributes = Record,\n eip1193RequestFn extends EIP1193RequestFn = EIP1193RequestFn,\n> = ({\n chain,\n}: {\n chain?: chain | undefined\n pollingInterval?: ClientConfig['pollingInterval'] | undefined\n retryCount?: TransportConfig['retryCount'] | undefined\n timeout?: TransportConfig['timeout'] | undefined\n}) => {\n config: TransportConfig\n request: eip1193RequestFn\n value?: rpcAttributes | undefined\n}\n\nexport type CreateTransportErrorType = ErrorType\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n type extends string,\n rpcAttributes extends Record,\n>(\n {\n key,\n name,\n request,\n retryCount = 3,\n retryDelay = 150,\n timeout,\n type,\n }: TransportConfig,\n value?: rpcAttributes | undefined,\n): ReturnType> {\n const uid = uid_()\n return {\n config: {\n key,\n name,\n request,\n retryCount,\n retryDelay,\n timeout,\n type,\n },\n request: buildRequest(request, { retryCount, retryDelay, uid }),\n value,\n }\n}\n","import {\n type Account,\n type Address,\n type BaseErrorType,\n type Client,\n createClient,\n custom,\n} from 'viem'\nimport { getAddress, parseAccount } from 'viem/utils'\n\nimport type { Config, Connection } from '../createConfig.js'\nimport type { ErrorType } from '../errors/base.js'\nimport {\n ConnectorAccountNotFoundError,\n type ConnectorAccountNotFoundErrorType,\n ConnectorChainMismatchError,\n type ConnectorChainMismatchErrorType,\n ConnectorNotConnectedError,\n type ConnectorNotConnectedErrorType,\n ConnectorUnavailableReconnectingError,\n type ConnectorUnavailableReconnectingErrorType,\n} from '../errors/config.js'\nimport type {\n ChainIdParameter,\n ConnectorParameter,\n} from '../types/properties.js'\nimport type { Compute } from '../types/utils.js'\n\nexport type GetConnectorClientParameters<\n config extends Config = Config,\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n> = Compute<\n ChainIdParameter &\n ConnectorParameter & {\n account?: Address | Account | undefined\n }\n>\n\nexport type GetConnectorClientReturnType<\n config extends Config = Config,\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n> = Compute<\n Client<\n config['_internal']['transports'][chainId],\n Extract,\n Account\n >\n>\n\nexport type GetConnectorClientErrorType =\n | ConnectorAccountNotFoundErrorType\n | ConnectorChainMismatchErrorType\n | ConnectorNotConnectedErrorType\n | ConnectorUnavailableReconnectingErrorType\n // base\n | BaseErrorType\n | ErrorType\n\n/** https://wagmi.sh/core/api/actions/getConnectorClient */\nexport async function getConnectorClient<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n>(\n config: config,\n parameters: GetConnectorClientParameters = {},\n): Promise> {\n // Get connection\n let connection: Connection | undefined\n if (parameters.connector) {\n const { connector } = parameters\n if (\n config.state.status === 'reconnecting' &&\n !connector.getAccounts &&\n !connector.getChainId\n )\n throw new ConnectorUnavailableReconnectingError({ connector })\n\n const [accounts, chainId] = await Promise.all([\n connector.getAccounts(),\n connector.getChainId(),\n ])\n connection = {\n accounts: accounts as readonly [Address, ...Address[]],\n chainId,\n connector,\n }\n } else connection = config.state.connections.get(config.state.current!)\n if (!connection) throw new ConnectorNotConnectedError()\n\n const chainId = parameters.chainId ?? connection.chainId\n\n // Check connector using same chainId as connection\n const connectorChainId = await connection.connector.getChainId()\n if (connectorChainId !== connection.chainId)\n throw new ConnectorChainMismatchError({\n connectionChainId: connection.chainId,\n connectorChainId,\n })\n\n // If connector has custom `getClient` implementation\n type Return = GetConnectorClientReturnType\n const connector = connection.connector\n if (connector.getClient)\n return connector.getClient({ chainId }) as unknown as Return\n\n // Default using `custom` transport\n const account = parseAccount(parameters.account ?? connection.accounts[0]!)\n account.address = getAddress(account.address) // TODO: Checksum address as part of `parseAccount`?\n\n // If account was provided, check that it exists on the connector\n if (\n parameters.account &&\n !connection.accounts.some(\n (x) => x.toLowerCase() === account.address.toLowerCase(),\n )\n )\n throw new ConnectorAccountNotFoundError({\n address: account.address,\n connector,\n })\n\n const chain = config.chains.find((chain) => chain.id === chainId)\n const provider = (await connection.connector.getProvider({ chainId })) as {\n request(...args: any): Promise\n }\n\n return createClient({\n account,\n chain,\n name: 'Connector Client',\n transport: (opts) => custom(provider)({ ...opts, retryCount: 0 }),\n }) as Return\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport {\n type CreateTransportErrorType,\n type Transport,\n type TransportConfig,\n createTransport,\n} from './createTransport.js'\n\ntype EthereumProvider = { request(...args: any): Promise }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key'] | undefined\n /** The name of the transport. */\n name?: TransportConfig['name'] | undefined\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount'] | undefined\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay'] | undefined\n}\n\nexport type CustomTransport = Transport<\n 'custom',\n {},\n EthereumProvider['request']\n>\n\nexport type CustomTransportErrorType = CreateTransportErrorType | ErrorType\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom(\n provider: provider,\n config: CustomTransportConfig = {},\n): CustomTransport {\n const { key = 'custom', name = 'Custom Provider', retryDelay } = config\n return ({ retryCount: defaultRetryCount }) =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n })\n}\n","import { type QueryKey, replaceEqualDeep } from '@tanstack/query-core'\nimport { deepEqual } from '../utils/deepEqual.js'\n\nexport function structuralSharing(\n oldData: data | undefined,\n newData: data,\n): data {\n if (deepEqual(oldData, newData)) return oldData as data\n return replaceEqualDeep(oldData, newData)\n}\n\nexport function hashFn(queryKey: QueryKey): string {\n return JSON.stringify(queryKey, (_, value) => {\n if (isPlainObject(value))\n return Object.keys(value)\n .sort()\n .reduce((result, key) => {\n result[key] = value[key]\n return result\n }, {} as any)\n if (typeof value === 'bigint') return value.toString()\n return value\n })\n}\n\n// biome-ignore lint/complexity/noBannedTypes:\nfunction isPlainObject(value: any): value is Object {\n if (!hasObjectPrototype(value)) {\n return false\n }\n\n // If has modified constructor\n const ctor = value.constructor\n if (typeof ctor === 'undefined') return true\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) return false\n\n // If constructor does not have an Object-specific method\n // biome-ignore lint/suspicious/noPrototypeBuiltins: \n if (!prot.hasOwnProperty('isPrototypeOf')) return false\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function filterQueryOptions>(\n options: type,\n): type {\n // destructuring is super fast\n // biome-ignore format: no formatting\n const {\n // import('@tanstack/query-core').QueryOptions\n _defaulted, behavior, gcTime, initialData, initialDataUpdatedAt, maxPages, meta, networkMode, queryFn, queryHash, queryKey, queryKeyHashFn, retry, retryDelay, structuralSharing,\n\n // import('@tanstack/query-core').InfiniteQueryObserverOptions\n getPreviousPageParam, getNextPageParam, initialPageParam,\n \n // import('@tanstack/react-query').UseQueryOptions\n _optimisticResults, enabled, notifyOnChangeProps, placeholderData, refetchInterval, refetchIntervalInBackground, refetchOnMount, refetchOnReconnect, refetchOnWindowFocus, retryOnMount, select, staleTime, suspense, throwOnError,\n\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n // wagmi\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n config, connector, query,\n ...rest\n } = options\n\n return rest as type\n}\n","import type { QueryOptions } from '@tanstack/query-core'\n\nimport {\n type GetConnectorClientErrorType,\n type GetConnectorClientParameters,\n type GetConnectorClientReturnType,\n getConnectorClient,\n} from '../actions/getConnectorClient.js'\nimport type { Config } from '../createConfig.js'\nimport type { ScopeKeyParameter } from '../types/properties.js'\nimport type { Compute, ExactPartial } from '../types/utils.js'\nimport { filterQueryOptions } from './utils.js'\n\nexport type GetConnectorClientOptions<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n> = Compute<\n ExactPartial> &\n ScopeKeyParameter\n>\n\nexport function getConnectorClientQueryOptions<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n>(config: config, options: GetConnectorClientOptions = {}) {\n return {\n gcTime: 0,\n async queryFn({ queryKey }) {\n const { connector } = options\n const { connectorUid: _, scopeKey: _s, ...parameters } = queryKey[1]\n return getConnectorClient(config, {\n ...parameters,\n connector,\n }) as unknown as Promise>\n },\n queryKey: getConnectorClientQueryKey(options),\n } as const satisfies QueryOptions<\n GetConnectorClientQueryFnData,\n GetConnectorClientErrorType,\n GetConnectorClientData,\n GetConnectorClientQueryKey\n >\n}\n\nexport type GetConnectorClientQueryFnData<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n> = GetConnectorClientReturnType\n\nexport type GetConnectorClientData<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n> = GetConnectorClientQueryFnData\n\nexport function getConnectorClientQueryKey<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n>(options: GetConnectorClientOptions = {}) {\n const { connector, ...parameters } = options\n return [\n 'connectorClient',\n { ...filterQueryOptions(parameters), connectorUid: connector?.uid },\n ] as const\n}\n\nexport type GetConnectorClientQueryKey<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n> = ReturnType>\n","import {\n ensureQueryFn,\n noop,\n replaceData,\n resolveEnabled,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport { canFetch, createRetryer, isCancelledError } from './retryer'\nimport { Removable } from './removable'\nimport type {\n CancelOptions,\n DefaultError,\n FetchStatus,\n InitialDataFunction,\n OmitKeyof,\n QueryFunction,\n QueryFunctionContext,\n QueryKey,\n QueryMeta,\n QueryOptions,\n QueryStatus,\n SetDataOptions,\n} from './types'\nimport type { QueryCache } from './queryCache'\nimport type { QueryObserver } from './queryObserver'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n cache: QueryCache\n queryKey: TQueryKey\n queryHash: string\n options?: QueryOptions\n defaultOptions?: QueryOptions\n state?: QueryState\n}\n\nexport interface QueryState {\n data: TData | undefined\n dataUpdateCount: number\n dataUpdatedAt: number\n error: TError | null\n errorUpdateCount: number\n errorUpdatedAt: number\n fetchFailureCount: number\n fetchFailureReason: TError | null\n fetchMeta: FetchMeta | null\n isInvalidated: boolean\n status: QueryStatus\n fetchStatus: FetchStatus\n}\n\nexport interface FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n fetchFn: () => unknown | Promise\n fetchOptions?: FetchOptions\n signal: AbortSignal\n options: QueryOptions\n queryKey: TQueryKey\n state: QueryState\n}\n\nexport interface QueryBehavior<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n onFetch: (\n context: FetchContext,\n query: Query,\n ) => void\n}\n\nexport type FetchDirection = 'forward' | 'backward'\n\nexport interface FetchMeta {\n fetchMore?: { direction: FetchDirection }\n}\n\nexport interface FetchOptions {\n cancelRefetch?: boolean\n meta?: FetchMeta\n initialPromise?: Promise\n}\n\ninterface FailedAction {\n type: 'failed'\n failureCount: number\n error: TError\n}\n\ninterface FetchAction {\n type: 'fetch'\n meta?: FetchMeta\n}\n\ninterface SuccessAction {\n data: TData | undefined\n type: 'success'\n dataUpdatedAt?: number\n manual?: boolean\n}\n\ninterface ErrorAction {\n type: 'error'\n error: TError\n}\n\ninterface InvalidateAction {\n type: 'invalidate'\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction {\n type: 'setState'\n state: Partial>\n setStateOptions?: SetStateOptions\n}\n\nexport type Action =\n | ContinueAction\n | ErrorAction\n | FailedAction\n | FetchAction\n | InvalidateAction\n | PauseAction\n | SetStateAction\n | SuccessAction\n\nexport interface SetStateOptions {\n meta?: any\n}\n\n// CLASS\n\nexport class Query<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Removable {\n queryKey: TQueryKey\n queryHash: string\n options!: QueryOptions\n state: QueryState\n isFetchingOptimistic?: boolean\n\n #initialState: QueryState\n #revertState?: QueryState\n #cache: QueryCache\n #retryer?: Retryer\n observers: Array>\n #defaultOptions?: QueryOptions\n #abortSignalConsumed: boolean\n\n constructor(config: QueryConfig) {\n super()\n\n this.#abortSignalConsumed = false\n this.#defaultOptions = config.defaultOptions\n this.setOptions(config.options)\n this.observers = []\n this.#cache = config.cache\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.#initialState = getDefaultState(this.options)\n this.state = config.state ?? this.#initialState\n this.scheduleGc()\n }\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n get promise(): Promise | undefined {\n return this.#retryer?.promise\n }\n\n setOptions(\n options?: QueryOptions,\n ): void {\n this.options = { ...this.#defaultOptions, ...options }\n\n this.updateGcTime(this.options.gcTime)\n }\n\n protected optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === 'idle') {\n this.#cache.remove(this)\n }\n }\n\n setData(\n newData: TData,\n options?: SetDataOptions & { manual: boolean },\n ): TData {\n const data = replaceData(this.state.data, newData, this.options)\n\n // Set data and mark it as cached\n this.#dispatch({\n data,\n type: 'success',\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual,\n })\n\n return data\n }\n\n setState(\n state: Partial>,\n setStateOptions?: SetStateOptions,\n ): void {\n this.#dispatch({ type: 'setState', state, setStateOptions })\n }\n\n cancel(options?: CancelOptions): Promise {\n const promise = this.#retryer?.promise\n this.#retryer?.cancel(options)\n return promise ? promise.then(noop).catch(noop) : Promise.resolve()\n }\n\n destroy(): void {\n super.destroy()\n\n this.cancel({ silent: true })\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.#initialState)\n }\n\n isActive(): boolean {\n return this.observers.some(\n (observer) => resolveEnabled(observer.options.enabled, this) !== false,\n )\n }\n\n isDisabled(): boolean {\n return this.getObserversCount() > 0 && !this.isActive()\n }\n\n isStale(): boolean {\n if (this.state.isInvalidated) {\n return true\n }\n\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale,\n )\n }\n\n return this.state.data === undefined\n }\n\n isStaleByTime(staleTime = 0): boolean {\n return (\n this.state.isInvalidated ||\n this.state.data === undefined ||\n !timeUntilStale(this.state.dataUpdatedAt, staleTime)\n )\n }\n\n onFocus(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus())\n\n observer?.refetch({ cancelRefetch: false })\n\n // Continue fetch if currently paused\n this.#retryer?.continue()\n }\n\n onOnline(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect())\n\n observer?.refetch({ cancelRefetch: false })\n\n // Continue fetch if currently paused\n this.#retryer?.continue()\n }\n\n addObserver(observer: QueryObserver): void {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer)\n\n // Stop the query from being garbage collected\n this.clearGcTimeout()\n\n this.#cache.notify({ type: 'observerAdded', query: this, observer })\n }\n }\n\n removeObserver(observer: QueryObserver): void {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x) => x !== observer)\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.#retryer) {\n if (this.#abortSignalConsumed) {\n this.#retryer.cancel({ revert: true })\n } else {\n this.#retryer.cancelRetry()\n }\n }\n\n this.scheduleGc()\n }\n\n this.#cache.notify({ type: 'observerRemoved', query: this, observer })\n }\n }\n\n getObserversCount(): number {\n return this.observers.length\n }\n\n invalidate(): void {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: 'invalidate' })\n }\n }\n\n fetch(\n options?: QueryOptions,\n fetchOptions?: FetchOptions,\n ): Promise {\n if (this.state.fetchStatus !== 'idle') {\n if (this.state.data !== undefined && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetch\n this.cancel({ silent: true })\n } else if (this.#retryer) {\n // make sure that retries that were potentially cancelled due to unmounts can continue\n this.#retryer.continueRetry()\n // Return current promise if we are already fetching\n return this.#retryer.promise\n }\n }\n\n // Update config if passed, otherwise the config from the last execution is used\n if (options) {\n this.setOptions(options)\n }\n\n // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn)\n if (observer) {\n this.setOptions(observer.options)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!Array.isArray(this.options.queryKey)) {\n console.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`,\n )\n }\n }\n\n const abortController = new AbortController()\n\n // Adds an enumerable signal property to the object that\n // which sets abortSignalConsumed to true when the signal\n // is read.\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n this.#abortSignalConsumed = true\n return abortController.signal\n },\n })\n }\n\n // Create fetch function\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions)\n\n // Create query function context\n const queryFnContext: OmitKeyof<\n QueryFunctionContext,\n 'signal'\n > = {\n queryKey: this.queryKey,\n meta: this.meta,\n }\n\n addSignalProperty(queryFnContext)\n\n this.#abortSignalConsumed = false\n if (this.options.persister) {\n return this.options.persister(\n queryFn as QueryFunction,\n queryFnContext as QueryFunctionContext,\n this as unknown as Query,\n )\n }\n\n return queryFn(queryFnContext as QueryFunctionContext)\n }\n\n // Trigger behavior hook\n const context: OmitKeyof<\n FetchContext,\n 'signal'\n > = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn,\n }\n\n addSignalProperty(context)\n\n this.options.behavior?.onFetch(\n context as FetchContext,\n this as unknown as Query,\n )\n\n // Store state in case the current fetch needs to be reverted\n this.#revertState = this.state\n\n // Set to fetching state if not already in it\n if (\n this.state.fetchStatus === 'idle' ||\n this.state.fetchMeta !== context.fetchOptions?.meta\n ) {\n this.#dispatch({ type: 'fetch', meta: context.fetchOptions?.meta })\n }\n\n const onError = (error: TError | { silent?: boolean }) => {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n this.#dispatch({\n type: 'error',\n error: error as TError,\n })\n }\n\n if (!isCancelledError(error)) {\n // Notify cache callback\n this.#cache.config.onError?.(\n error as any,\n this as Query,\n )\n this.#cache.config.onSettled?.(\n this.state.data,\n error as any,\n this as Query,\n )\n }\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n }\n\n // Try to fetch the data\n this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise as\n | Promise\n | undefined,\n fn: context.fetchFn as () => Promise,\n abort: abortController.abort.bind(abortController),\n onSuccess: (data) => {\n if (data === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`,\n )\n }\n onError(new Error(`${this.queryHash} data is undefined`) as any)\n return\n }\n\n this.setData(data)\n\n // Notify cache callback\n this.#cache.config.onSuccess?.(data, this as Query)\n this.#cache.config.onSettled?.(\n data,\n this.state.error as any,\n this as Query,\n )\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n },\n onError,\n onFail: (failureCount, error) => {\n this.#dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.#dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.#dispatch({ type: 'continue' })\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n canRun: () => true,\n })\n\n return this.#retryer.start()\n }\n\n #dispatch(action: Action): void {\n const reducer = (\n state: QueryState,\n ): QueryState => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n fetchStatus: 'paused',\n }\n case 'continue':\n return {\n ...state,\n fetchStatus: 'fetching',\n }\n case 'fetch':\n return {\n ...state,\n ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null,\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success',\n ...(!action.manual && {\n fetchStatus: 'idle',\n fetchFailureCount: 0,\n fetchFailureReason: null,\n }),\n }\n case 'error':\n const error = action.error\n\n if (isCancelledError(error) && error.revert && this.#revertState) {\n return { ...this.#revertState, fetchStatus: 'idle' }\n }\n\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: 'idle',\n status: 'error',\n }\n case 'invalidate':\n return {\n ...state,\n isInvalidated: true,\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate()\n })\n\n this.#cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nexport function fetchState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n data: TData | undefined,\n options: QueryOptions,\n) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? 'fetching' : 'paused',\n ...(data === undefined &&\n ({\n error: null,\n status: 'pending',\n } as const)),\n } as const\n}\n\nfunction getDefaultState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n options: QueryOptions,\n): QueryState {\n const data =\n typeof options.initialData === 'function'\n ? (options.initialData as InitialDataFunction)()\n : options.initialData\n\n const hasData = data !== undefined\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? (options.initialDataUpdatedAt as () => number | undefined)()\n : options.initialDataUpdatedAt\n : 0\n\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? (initialDataUpdatedAt ?? Date.now()) : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'pending',\n fetchStatus: 'idle',\n }\n}\n","import {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n resolveEnabled,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport { focusManager } from './focusManager'\nimport { Subscribable } from './subscribable'\nimport { fetchState } from './query'\nimport type { FetchOptions, Query, QueryState } from './query'\nimport type { QueryClient } from './queryClient'\nimport type {\n DefaultError,\n DefaultedQueryObserverOptions,\n PlaceholderDataFunction,\n QueryKey,\n QueryObserverBaseResult,\n QueryObserverOptions,\n QueryObserverResult,\n QueryOptions,\n RefetchOptions,\n} from './types'\n\ntype QueryObserverListener = (\n result: QueryObserverResult,\n) => void\n\nexport interface NotifyOptions {\n listeners?: boolean\n}\n\nexport interface ObserverFetchOptions extends FetchOptions {\n throwOnError?: boolean\n}\n\nexport class QueryObserver<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Subscribable> {\n #client: QueryClient\n #currentQuery: Query = undefined!\n #currentQueryInitialState: QueryState = undefined!\n #currentResult: QueryObserverResult = undefined!\n #currentResultState?: QueryState\n #currentResultOptions?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n #selectError: TError | null\n #selectFn?: (data: TQueryData) => TData\n #selectResult?: TData\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData?: Query\n #staleTimeoutId?: ReturnType\n #refetchIntervalId?: ReturnType\n #currentRefetchInterval?: number | false\n #trackedProps = new Set()\n\n constructor(\n client: QueryClient,\n public options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ) {\n super()\n\n this.#client = client\n this.#selectError = null\n this.bindMethods()\n this.setOptions(options)\n }\n\n protected bindMethods(): void {\n this.refetch = this.refetch.bind(this)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this)\n\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch()\n } else {\n this.updateResult()\n }\n\n this.#updateTimers()\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.hasListeners()) {\n this.destroy()\n }\n }\n\n shouldFetchOnReconnect(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect,\n )\n }\n\n shouldFetchOnWindowFocus(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus,\n )\n }\n\n destroy(): void {\n this.listeners = new Set()\n this.#clearStaleTimeout()\n this.#clearRefetchInterval()\n this.#currentQuery.removeObserver(this)\n }\n\n setOptions(\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n notifyOptions?: NotifyOptions,\n ): void {\n const prevOptions = this.options\n const prevQuery = this.#currentQuery\n\n this.options = this.#client.defaultQueryOptions(options)\n\n if (\n this.options.enabled !== undefined &&\n typeof this.options.enabled !== 'boolean' &&\n typeof this.options.enabled !== 'function' &&\n typeof resolveEnabled(this.options.enabled, this.#currentQuery) !==\n 'boolean'\n ) {\n throw new Error(\n 'Expected enabled to be a boolean or a callback that returns a boolean',\n )\n }\n\n this.#updateQuery()\n this.#currentQuery.setOptions(this.options)\n\n if (\n prevOptions._defaulted &&\n !shallowEqualObjects(this.options, prevOptions)\n ) {\n this.#client.getQueryCache().notify({\n type: 'observerOptionsUpdated',\n query: this.#currentQuery,\n observer: this,\n })\n }\n\n const mounted = this.hasListeners()\n\n // Fetch if there are subscribers\n if (\n mounted &&\n shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions,\n )\n ) {\n this.#executeFetch()\n }\n\n // Update result\n this.updateResult(notifyOptions)\n\n // Update stale interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n resolveEnabled(this.options.enabled, this.#currentQuery) !==\n resolveEnabled(prevOptions.enabled, this.#currentQuery) ||\n resolveStaleTime(this.options.staleTime, this.#currentQuery) !==\n resolveStaleTime(prevOptions.staleTime, this.#currentQuery))\n ) {\n this.#updateStaleTimeout()\n }\n\n const nextRefetchInterval = this.#computeRefetchInterval()\n\n // Update refetch interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n resolveEnabled(this.options.enabled, this.#currentQuery) !==\n resolveEnabled(prevOptions.enabled, this.#currentQuery) ||\n nextRefetchInterval !== this.#currentRefetchInterval)\n ) {\n this.#updateRefetchInterval(nextRefetchInterval)\n }\n }\n\n getOptimisticResult(\n options: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult {\n const query = this.#client.getQueryCache().build(this.#client, options)\n\n const result = this.createResult(query, options)\n\n if (shouldAssignObserverCurrentProperties(this, result)) {\n // this assigns the optimistic result to the current Observer\n // because if the query function changes, useQuery will be performing\n // an effect where it would fetch again.\n // When the fetch finishes, we perform a deep data cloning in order\n // to reuse objects references. This deep data clone is performed against\n // the `observer.currentResult.data` property\n // When QueryKey changes, we refresh the query and get new `optimistic`\n // result, while we leave the `observer.currentResult`, so when new data\n // arrives, it finds the old `observer.currentResult` which is related\n // to the old QueryKey. Which means that currentResult and selectData are\n // out of sync already.\n // To solve this, we move the cursor of the currentResult every time\n // an observer reads an optimistic value.\n\n // When keeping the previous data, the result doesn't change until new\n // data arrives.\n this.#currentResult = result\n this.#currentResultOptions = this.options\n this.#currentResultState = this.#currentQuery.state\n }\n return result\n }\n\n getCurrentResult(): QueryObserverResult {\n return this.#currentResult\n }\n\n trackResult(\n result: QueryObserverResult,\n onPropTracked?: (key: keyof QueryObserverResult) => void,\n ): QueryObserverResult {\n const trackedResult = {} as QueryObserverResult\n\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackProp(key as keyof QueryObserverResult)\n onPropTracked?.(key as keyof QueryObserverResult)\n return result[key as keyof QueryObserverResult]\n },\n })\n })\n\n return trackedResult\n }\n\n trackProp(key: keyof QueryObserverResult) {\n this.#trackedProps.add(key)\n }\n\n getCurrentQuery(): Query {\n return this.#currentQuery\n }\n\n refetch({ ...options }: RefetchOptions = {}): Promise<\n QueryObserverResult\n > {\n return this.fetch({\n ...options,\n })\n }\n\n fetchOptimistic(\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): Promise> {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n\n const query = this.#client\n .getQueryCache()\n .build(this.#client, defaultedOptions)\n query.isFetchingOptimistic = true\n\n return query.fetch().then(() => this.createResult(query, defaultedOptions))\n }\n\n protected fetch(\n fetchOptions: ObserverFetchOptions,\n ): Promise> {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true,\n }).then(() => {\n this.updateResult()\n return this.#currentResult\n })\n }\n\n #executeFetch(\n fetchOptions?: Omit,\n ): Promise {\n // Make sure we reference the latest query as the current one might have been removed\n this.#updateQuery()\n\n // Fetch\n let promise: Promise = this.#currentQuery.fetch(\n this.options as QueryOptions,\n fetchOptions,\n )\n\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop)\n }\n\n return promise\n }\n\n #updateStaleTimeout(): void {\n this.#clearStaleTimeout()\n const staleTime = resolveStaleTime(\n this.options.staleTime,\n this.#currentQuery,\n )\n\n if (isServer || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n return\n }\n\n const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime)\n\n // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n const timeout = time + 1\n\n this.#staleTimeoutId = setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult()\n }\n }, timeout)\n }\n\n #computeRefetchInterval() {\n return (\n (typeof this.options.refetchInterval === 'function'\n ? this.options.refetchInterval(this.#currentQuery)\n : this.options.refetchInterval) ?? false\n )\n }\n\n #updateRefetchInterval(nextInterval: number | false): void {\n this.#clearRefetchInterval()\n\n this.#currentRefetchInterval = nextInterval\n\n if (\n isServer ||\n resolveEnabled(this.options.enabled, this.#currentQuery) === false ||\n !isValidTimeout(this.#currentRefetchInterval) ||\n this.#currentRefetchInterval === 0\n ) {\n return\n }\n\n this.#refetchIntervalId = setInterval(() => {\n if (\n this.options.refetchIntervalInBackground ||\n focusManager.isFocused()\n ) {\n this.#executeFetch()\n }\n }, this.#currentRefetchInterval)\n }\n\n #updateTimers(): void {\n this.#updateStaleTimeout()\n this.#updateRefetchInterval(this.#computeRefetchInterval())\n }\n\n #clearStaleTimeout(): void {\n if (this.#staleTimeoutId) {\n clearTimeout(this.#staleTimeoutId)\n this.#staleTimeoutId = undefined\n }\n }\n\n #clearRefetchInterval(): void {\n if (this.#refetchIntervalId) {\n clearInterval(this.#refetchIntervalId)\n this.#refetchIntervalId = undefined\n }\n }\n\n protected createResult(\n query: Query,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult {\n const prevQuery = this.#currentQuery\n const prevOptions = this.options\n const prevResult = this.#currentResult as\n | QueryObserverResult\n | undefined\n const prevResultState = this.#currentResultState\n const prevResultOptions = this.#currentResultOptions\n const queryChange = query !== prevQuery\n const queryInitialState = queryChange\n ? query.state\n : this.#currentQueryInitialState\n\n const { state } = query\n let newState = { ...state }\n let isPlaceholderData = false\n let data: TData | undefined\n\n // Optimistically set result in fetching state if needed\n if (options._optimisticResults) {\n const mounted = this.hasListeners()\n\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options)\n\n const fetchOptionally =\n mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions)\n\n if (fetchOnMount || fetchOptionally) {\n newState = {\n ...newState,\n ...fetchState(state.data, query.options),\n }\n }\n if (options._optimisticResults === 'isRestoring') {\n newState.fetchStatus = 'idle'\n }\n }\n\n let { error, errorUpdatedAt, status } = newState\n\n // Select data if needed\n if (options.select && newState.data !== undefined) {\n // Memoize select result\n if (\n prevResult &&\n newState.data === prevResultState?.data &&\n options.select === this.#selectFn\n ) {\n data = this.#selectResult\n } else {\n try {\n this.#selectFn = options.select\n data = options.select(newState.data)\n data = replaceData(prevResult?.data, data, options)\n this.#selectResult = data\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n // Use query data\n else {\n data = newState.data as unknown as TData\n }\n\n // Show placeholder data if needed\n if (\n options.placeholderData !== undefined &&\n data === undefined &&\n status === 'pending'\n ) {\n let placeholderData\n\n // Memoize placeholder data\n if (\n prevResult?.isPlaceholderData &&\n options.placeholderData === prevResultOptions?.placeholderData\n ) {\n placeholderData = prevResult.data\n } else {\n placeholderData =\n typeof options.placeholderData === 'function'\n ? (\n options.placeholderData as unknown as PlaceholderDataFunction\n )(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData as any,\n )\n : options.placeholderData\n if (options.select && placeholderData !== undefined) {\n try {\n placeholderData = options.select(placeholderData)\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n\n if (placeholderData !== undefined) {\n status = 'success'\n data = replaceData(\n prevResult?.data,\n placeholderData as unknown,\n options,\n ) as TData\n isPlaceholderData = true\n }\n }\n\n if (this.#selectError) {\n error = this.#selectError as any\n data = this.#selectResult\n errorUpdatedAt = Date.now()\n status = 'error'\n }\n\n const isFetching = newState.fetchStatus === 'fetching'\n const isPending = status === 'pending'\n const isError = status === 'error'\n\n const isLoading = isPending && isFetching\n const hasData = data !== undefined\n\n const result: QueryObserverBaseResult = {\n status,\n fetchStatus: newState.fetchStatus,\n isPending,\n isSuccess: status === 'success',\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: newState.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: newState.fetchFailureCount,\n failureReason: newState.fetchFailureReason,\n errorUpdateCount: newState.errorUpdateCount,\n isFetched: newState.dataUpdateCount > 0 || newState.errorUpdateCount > 0,\n isFetchedAfterMount:\n newState.dataUpdateCount > queryInitialState.dataUpdateCount ||\n newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: newState.fetchStatus === 'paused',\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch,\n }\n\n return result as QueryObserverResult\n }\n\n updateResult(notifyOptions?: NotifyOptions): void {\n const prevResult = this.#currentResult as\n | QueryObserverResult\n | undefined\n\n const nextResult = this.createResult(this.#currentQuery, this.options)\n this.#currentResultState = this.#currentQuery.state\n this.#currentResultOptions = this.options\n\n if (this.#currentResultState.data !== undefined) {\n this.#lastQueryWithDefinedData = this.#currentQuery\n }\n\n // Only notify and update result if something has changed\n if (shallowEqualObjects(nextResult, prevResult)) {\n return\n }\n\n this.#currentResult = nextResult\n\n // Determine which callbacks to trigger\n const defaultNotifyOptions: NotifyOptions = {}\n\n const shouldNotifyListeners = (): boolean => {\n if (!prevResult) {\n return true\n }\n\n const { notifyOnChangeProps } = this.options\n const notifyOnChangePropsValue =\n typeof notifyOnChangeProps === 'function'\n ? notifyOnChangeProps()\n : notifyOnChangeProps\n\n if (\n notifyOnChangePropsValue === 'all' ||\n (!notifyOnChangePropsValue && !this.#trackedProps.size)\n ) {\n return true\n }\n\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps,\n )\n\n if (this.options.throwOnError) {\n includedProps.add('error')\n }\n\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key as keyof QueryObserverResult\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey]\n return changed && includedProps.has(typedKey)\n })\n }\n\n if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true\n }\n\n this.#notify({ ...defaultNotifyOptions, ...notifyOptions })\n }\n\n #updateQuery(): void {\n const query = this.#client.getQueryCache().build(this.#client, this.options)\n\n if (query === this.#currentQuery) {\n return\n }\n\n const prevQuery = this.#currentQuery as\n | Query\n | undefined\n this.#currentQuery = query\n this.#currentQueryInitialState = query.state\n\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this)\n query.addObserver(this)\n }\n }\n\n onQueryUpdate(): void {\n this.updateResult()\n\n if (this.hasListeners()) {\n this.#updateTimers()\n }\n }\n\n #notify(notifyOptions: NotifyOptions): void {\n notifyManager.batch(() => {\n // First, trigger the listeners\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult)\n })\n }\n\n // Then the cache listeners\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: 'observerResultsUpdated',\n })\n })\n }\n}\n\nfunction shouldLoadOnMount(\n query: Query,\n options: QueryObserverOptions,\n): boolean {\n return (\n resolveEnabled(options.enabled, query) !== false &&\n query.state.data === undefined &&\n !(query.state.status === 'error' && options.retryOnMount === false)\n )\n}\n\nfunction shouldFetchOnMount(\n query: Query,\n options: QueryObserverOptions,\n): boolean {\n return (\n shouldLoadOnMount(query, options) ||\n (query.state.data !== undefined &&\n shouldFetchOn(query, options, options.refetchOnMount))\n )\n}\n\nfunction shouldFetchOn(\n query: Query,\n options: QueryObserverOptions,\n field: (typeof options)['refetchOnMount'] &\n (typeof options)['refetchOnWindowFocus'] &\n (typeof options)['refetchOnReconnect'],\n) {\n if (resolveEnabled(options.enabled, query) !== false) {\n const value = typeof field === 'function' ? field(query) : field\n\n return value === 'always' || (value !== false && isStale(query, options))\n }\n return false\n}\n\nfunction shouldFetchOptionally(\n query: Query,\n prevQuery: Query,\n options: QueryObserverOptions,\n prevOptions: QueryObserverOptions,\n): boolean {\n return (\n (query !== prevQuery ||\n resolveEnabled(prevOptions.enabled, query) === false) &&\n (!options.suspense || query.state.status !== 'error') &&\n isStale(query, options)\n )\n}\n\nfunction isStale(\n query: Query,\n options: QueryObserverOptions,\n): boolean {\n return (\n resolveEnabled(options.enabled, query) !== false &&\n query.isStaleByTime(resolveStaleTime(options.staleTime, query))\n )\n}\n\n// this function would decide if we will update the observer's 'current'\n// properties after an optimistic reading via getOptimisticResult\nfunction shouldAssignObserverCurrentProperties<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n observer: QueryObserver,\n optimisticResult: QueryObserverResult,\n) {\n // if the newly created result isn't what the observer is holding as current,\n // then we'll need to update the properties as well\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true\n }\n\n // basically, just keep previous properties if nothing changed\n return false\n}\n","'use client'\nimport * as React from 'react'\n\n// CONTEXT\n\nexport interface QueryErrorResetBoundaryValue {\n clearReset: () => void\n isReset: () => boolean\n reset: () => void\n}\n\nfunction createValue(): QueryErrorResetBoundaryValue {\n let isReset = false\n return {\n clearReset: () => {\n isReset = false\n },\n reset: () => {\n isReset = true\n },\n isReset: () => {\n return isReset\n },\n }\n}\n\nconst QueryErrorResetBoundaryContext = React.createContext(createValue())\n\n// HOOK\n\nexport const useQueryErrorResetBoundary = () =>\n React.useContext(QueryErrorResetBoundaryContext)\n\n// COMPONENT\n\nexport interface QueryErrorResetBoundaryProps {\n children:\n | ((value: QueryErrorResetBoundaryValue) => React.ReactNode)\n | React.ReactNode\n}\n\nexport const QueryErrorResetBoundary = ({\n children,\n}: QueryErrorResetBoundaryProps) => {\n const [value] = React.useState(() => createValue())\n return (\n \n {typeof children === 'function'\n ? (children as Function)(value)\n : children}\n \n )\n}\n","'use client'\nimport * as React from 'react'\n\nconst IsRestoringContext = React.createContext(false)\n\nexport const useIsRestoring = () => React.useContext(IsRestoringContext)\nexport const IsRestoringProvider = IsRestoringContext.Provider\n","'use client'\nimport * as React from 'react'\nimport { shouldThrowError } from './utils'\nimport type {\n DefaultedQueryObserverOptions,\n Query,\n QueryKey,\n QueryObserverResult,\n ThrowOnError,\n} from '@tanstack/query-core'\nimport type { QueryErrorResetBoundaryValue } from './QueryErrorResetBoundary'\n\nexport const ensurePreventErrorBoundaryRetry = <\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n options: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n errorResetBoundary: QueryErrorResetBoundaryValue,\n) => {\n if (options.suspense || options.throwOnError) {\n // Prevent retrying failed query if the error boundary has not been reset yet\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false\n }\n }\n}\n\nexport const useClearResetErrorBoundary = (\n errorResetBoundary: QueryErrorResetBoundaryValue,\n) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset()\n }, [errorResetBoundary])\n}\n\nexport const getHasError = <\n TData,\n TError,\n TQueryFnData,\n TQueryData,\n TQueryKey extends QueryKey,\n>({\n result,\n errorResetBoundary,\n throwOnError,\n query,\n}: {\n result: QueryObserverResult\n errorResetBoundary: QueryErrorResetBoundaryValue\n throwOnError: ThrowOnError\n query: Query | undefined\n}) => {\n return (\n result.isError &&\n !errorResetBoundary.isReset() &&\n !result.isFetching &&\n query &&\n shouldThrowError(throwOnError, [result.error, query])\n )\n}\n","import type {\n DefaultError,\n DefaultedQueryObserverOptions,\n Query,\n QueryKey,\n QueryObserver,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport type { QueryErrorResetBoundaryValue } from './QueryErrorResetBoundary'\n\nexport const defaultThrowOnError = <\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n _error: TError,\n query: Query,\n) => query.state.data === undefined\n\nexport const ensureSuspenseTimers = (\n defaultedOptions: DefaultedQueryObserverOptions,\n) => {\n if (defaultedOptions.suspense) {\n // Always set stale time when using suspense to prevent\n // fetching again when directly mounting after suspending\n if (typeof defaultedOptions.staleTime !== 'number') {\n defaultedOptions.staleTime = 1000\n }\n if (typeof defaultedOptions.gcTime === 'number') {\n defaultedOptions.gcTime = Math.max(defaultedOptions.gcTime, 1000)\n }\n }\n}\n\nexport const willFetch = (\n result: QueryObserverResult,\n isRestoring: boolean,\n) => result.isLoading && result.isFetching && !isRestoring\n\nexport const shouldSuspend = (\n defaultedOptions:\n | DefaultedQueryObserverOptions\n | undefined,\n result: QueryObserverResult,\n) => defaultedOptions?.suspense && result.isPending\n\nexport const fetchOptimistic = <\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n defaultedOptions: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n observer: QueryObserver,\n errorResetBoundary: QueryErrorResetBoundaryValue,\n) =>\n observer.fetchOptimistic(defaultedOptions).catch(() => {\n errorResetBoundary.clearReset()\n })\n","'use client'\nimport { QueryObserver } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\nimport type { DefaultError, QueryClient, QueryKey } from '@tanstack/query-core'\nimport type {\n DefinedUseQueryResult,\n UseQueryOptions,\n UseQueryResult,\n} from './types'\nimport type {\n DefinedInitialDataOptions,\n UndefinedInitialDataOptions,\n} from './queryOptions'\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions,\n queryClient?: QueryClient,\n): DefinedUseQueryResult\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions,\n queryClient?: QueryClient,\n): UseQueryResult\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UseQueryOptions,\n queryClient?: QueryClient,\n): UseQueryResult\n\nexport function useQuery(options: UseQueryOptions, queryClient?: QueryClient) {\n return useBaseQuery(options, QueryObserver, queryClient)\n}\n","'use client'\nimport * as React from 'react'\n\nimport { notifyManager } from '@tanstack/query-core'\nimport { useQueryErrorResetBoundary } from './QueryErrorResetBoundary'\nimport { useQueryClient } from './QueryClientProvider'\nimport { useIsRestoring } from './isRestoring'\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary,\n} from './errorBoundaryUtils'\nimport {\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n} from './suspense'\nimport type { UseBaseQueryOptions } from './types'\nimport type {\n QueryClient,\n QueryKey,\n QueryObserver,\n QueryObserverResult,\n} from '@tanstack/query-core'\n\nexport function useBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n options: UseBaseQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n Observer: typeof QueryObserver,\n queryClient?: QueryClient,\n): QueryObserverResult {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof options !== 'object' || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object',\n )\n }\n }\n\n const client = useQueryClient(queryClient)\n const isRestoring = useIsRestoring()\n const errorResetBoundary = useQueryErrorResetBoundary()\n const defaultedOptions = client.defaultQueryOptions(options)\n\n ;(client.getDefaultOptions().queries as any)?._experimental_beforeQuery?.(\n defaultedOptions,\n )\n\n // Make sure results are optimistically set in fetching state before subscribing or updating options\n defaultedOptions._optimisticResults = isRestoring\n ? 'isRestoring'\n : 'optimistic'\n\n ensureSuspenseTimers(defaultedOptions)\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary)\n\n useClearResetErrorBoundary(errorResetBoundary)\n\n const [observer] = React.useState(\n () =>\n new Observer(\n client,\n defaultedOptions,\n ),\n )\n\n const result = observer.getOptimisticResult(defaultedOptions)\n\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = isRestoring\n ? () => undefined\n : observer.subscribe(notifyManager.batchCalls(onStoreChange))\n\n // Update result to make sure we did not miss any query updates\n // between creating the observer and subscribing to it.\n observer.updateResult()\n\n return unsubscribe\n },\n [observer, isRestoring],\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult(),\n )\n\n React.useEffect(() => {\n // Do not notify on updates because of changes in the options because\n // these changes should already be reflected in the optimistic result.\n observer.setOptions(defaultedOptions, { listeners: false })\n }, [defaultedOptions, observer])\n\n // Handle suspense\n if (shouldSuspend(defaultedOptions, result)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n }\n\n // Handle error boundary\n if (\n getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query: client\n .getQueryCache()\n .get<\n TQueryFnData,\n TError,\n TQueryData,\n TQueryKey\n >(defaultedOptions.queryHash),\n })\n ) {\n throw result.error\n }\n\n ;(client.getDefaultOptions().queries as any)?._experimental_afterQuery?.(\n defaultedOptions,\n result,\n )\n\n // Handle result property usage tracking\n return !defaultedOptions.notifyOnChangeProps\n ? observer.trackResult(result)\n : result\n}\n","import {\n type DefaultError,\n type QueryKey,\n type UseInfiniteQueryOptions,\n type UseInfiniteQueryResult,\n type UseMutationOptions,\n type UseMutationResult,\n type UseQueryOptions,\n type UseQueryResult,\n useInfiniteQuery as tanstack_useInfiniteQuery,\n useQuery as tanstack_useQuery,\n useMutation,\n} from '@tanstack/react-query'\nimport type {\n Compute,\n ExactPartial,\n Omit,\n UnionStrictOmit,\n} from '@wagmi/core/internal'\nimport { hashFn } from '@wagmi/core/query'\n\nexport type UseMutationParameters<\n data = unknown,\n error = Error,\n variables = void,\n context = unknown,\n> = Compute<\n Omit<\n UseMutationOptions, context>,\n 'mutationFn' | 'mutationKey' | 'throwOnError'\n >\n>\n\nexport type UseMutationReturnType<\n data = unknown,\n error = Error,\n variables = void,\n context = unknown,\n> = Compute<\n UnionStrictOmit<\n UseMutationResult,\n 'mutate' | 'mutateAsync'\n >\n>\n\nexport { useMutation }\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport type UseQueryParameters<\n queryFnData = unknown,\n error = DefaultError,\n data = queryFnData,\n queryKey extends QueryKey = QueryKey,\n> = Compute<\n ExactPartial<\n Omit, 'initialData'>\n > & {\n // Fix `initialData` type\n initialData?:\n | UseQueryOptions['initialData']\n | undefined\n }\n>\n\nexport type UseQueryReturnType = Compute<\n UseQueryResult & {\n queryKey: QueryKey\n }\n>\n\n// Adding some basic customization.\n// Ideally we don't have this function, but `import('@tanstack/react-query').useQuery` currently has some quirks where it is super hard to\n// pass down the inferred `initialData` type because of it's discriminated overload in the on `useQuery`.\nexport function useQuery(\n parameters: UseQueryParameters & {\n queryKey: QueryKey\n },\n): UseQueryReturnType {\n const result = tanstack_useQuery({\n ...(parameters as any),\n queryKeyHashFn: hashFn, // for bigint support\n }) as UseQueryReturnType\n result.queryKey = parameters.queryKey\n return result\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport type UseInfiniteQueryParameters<\n queryFnData = unknown,\n error = DefaultError,\n data = queryFnData,\n queryData = queryFnData,\n queryKey extends QueryKey = QueryKey,\n pageParam = unknown,\n> = Compute<\n Omit<\n UseInfiniteQueryOptions<\n queryFnData,\n error,\n data,\n queryData,\n queryKey,\n pageParam\n >,\n 'initialData'\n > & {\n // Fix `initialData` type\n initialData?:\n | UseInfiniteQueryOptions<\n queryFnData,\n error,\n data,\n queryKey\n >['initialData']\n | undefined\n }\n>\n\nexport type UseInfiniteQueryReturnType<\n data = unknown,\n error = DefaultError,\n> = UseInfiniteQueryResult & {\n queryKey: QueryKey\n}\n\n// Adding some basic customization.\nexport function useInfiniteQuery<\n queryFnData,\n error,\n data,\n queryKey extends QueryKey,\n>(\n parameters: UseInfiniteQueryParameters & {\n queryKey: QueryKey\n },\n): UseInfiniteQueryReturnType {\n const result = tanstack_useInfiniteQuery({\n ...(parameters as any),\n queryKeyHashFn: hashFn, // for bigint support\n }) as UseInfiniteQueryReturnType\n result.queryKey = parameters.queryKey\n return result\n}\n","import type { Config } from '../createConfig.js'\n\nexport type GetChainIdReturnType =\n config['chains'][number]['id']\n\n/** https://wagmi.sh/core/api/actions/getChainId */\nexport function getChainId(\n config: config,\n): GetChainIdReturnType {\n return config.state.chainId\n}\n","'use client'\n\nimport {\n type Config,\n type GetChainIdReturnType,\n type ResolvedRegister,\n getChainId,\n watchChainId,\n} from '@wagmi/core'\nimport { useSyncExternalStore } from 'react'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseChainIdParameters =\n ConfigParameter\n\nexport type UseChainIdReturnType =\n GetChainIdReturnType\n\n/** https://wagmi.sh/react/api/hooks/useChainId */\nexport function useChainId(\n parameters: UseChainIdParameters = {},\n): UseChainIdReturnType {\n const config = useConfig(parameters)\n\n return useSyncExternalStore(\n (onChange) => watchChainId(config, { onChange }),\n () => getChainId(config),\n () => getChainId(config),\n )\n}\n","import type { Config } from '../createConfig.js'\nimport type { GetChainIdReturnType } from './getChainId.js'\n\nexport type WatchChainIdParameters = {\n onChange(\n chainId: GetChainIdReturnType,\n prevChainId: GetChainIdReturnType,\n ): void\n}\n\nexport type WatchChainIdReturnType = () => void\n\n/** https://wagmi.sh/core/api/actions/watchChainId */\nexport function watchChainId(\n config: config,\n parameters: WatchChainIdParameters,\n): WatchChainIdReturnType {\n const { onChange } = parameters\n return config.subscribe((state) => state.chainId, onChange)\n}\n","'use client'\n\nimport { useQueryClient } from '@tanstack/react-query'\nimport type {\n Config,\n GetConnectorClientErrorType,\n ResolvedRegister,\n} from '@wagmi/core'\nimport type { Compute, Omit } from '@wagmi/core/internal'\nimport {\n type GetConnectorClientData,\n type GetConnectorClientOptions,\n type GetConnectorClientQueryFnData,\n type GetConnectorClientQueryKey,\n getConnectorClientQueryOptions,\n} from '@wagmi/core/query'\nimport { useEffect, useRef } from 'react'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport {\n type UseQueryParameters,\n type UseQueryReturnType,\n useQuery,\n} from '../utils/query.js'\nimport { useAccount } from './useAccount.js'\nimport { useChainId } from './useChainId.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseConnectorClientParameters<\n config extends Config = Config,\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n selectData = GetConnectorClientData,\n> = Compute<\n GetConnectorClientOptions &\n ConfigParameter & {\n query?:\n | Compute<\n Omit<\n UseQueryParameters<\n GetConnectorClientQueryFnData,\n GetConnectorClientErrorType,\n selectData,\n GetConnectorClientQueryKey\n >,\n 'gcTime' | 'staleTime'\n >\n >\n | undefined\n }\n>\n\nexport type UseConnectorClientReturnType<\n config extends Config = Config,\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n selectData = GetConnectorClientData,\n> = UseQueryReturnType\n\n/** https://wagmi.sh/react/api/hooks/useConnectorClient */\nexport function useConnectorClient<\n config extends Config = ResolvedRegister['config'],\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n selectData = GetConnectorClientData,\n>(\n parameters: UseConnectorClientParameters = {},\n): UseConnectorClientReturnType {\n const { query = {}, ...rest } = parameters\n\n const config = useConfig(rest)\n const queryClient = useQueryClient()\n const { address, connector, status } = useAccount({ config })\n const chainId = useChainId({ config })\n const activeConnector = parameters.connector ?? connector\n\n const { queryKey, ...options } = getConnectorClientQueryOptions<\n config,\n chainId\n >(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n connector: activeConnector,\n })\n const enabled = Boolean(\n (status === 'connected' ||\n (status === 'reconnecting' && activeConnector?.getProvider)) &&\n (query.enabled ?? true),\n )\n\n const addressRef = useRef(address)\n // biome-ignore lint/correctness/useExhaustiveDependencies: `queryKey` not required\n useEffect(() => {\n const previousAddress = addressRef.current\n if (!address && previousAddress) {\n // remove when account is disconnected\n queryClient.removeQueries({ queryKey })\n addressRef.current = undefined\n } else if (address !== previousAddress) {\n // invalidate when address changes\n queryClient.invalidateQueries({ queryKey })\n addressRef.current = address\n }\n }, [address, queryClient])\n\n return useQuery({\n ...query,\n ...options,\n queryKey,\n enabled,\n staleTime: Number.POSITIVE_INFINITY,\n })\n}\n","import type { Connector } from '../createConfig.js'\nimport { BaseError } from './base.js'\n\nexport type ProviderNotFoundErrorType = ProviderNotFoundError & {\n name: 'ProviderNotFoundError'\n}\nexport class ProviderNotFoundError extends BaseError {\n override name = 'ProviderNotFoundError'\n constructor() {\n super('Provider not found.')\n }\n}\n\nexport type SwitchChainNotSupportedErrorType = SwitchChainNotSupportedError & {\n name: 'SwitchChainNotSupportedError'\n}\nexport class SwitchChainNotSupportedError extends BaseError {\n override name = 'SwitchChainNotSupportedError'\n\n constructor({ connector }: { connector: Connector }) {\n super(`\"${connector.name}\" does not support programmatic chain switching.`)\n }\n}\n","import type { MutateOptions, MutationOptions } from '@tanstack/query-core'\n\nimport {\n type SwitchChainErrorType,\n type SwitchChainParameters,\n type SwitchChainReturnType,\n switchChain,\n} from '../actions/switchChain.js'\nimport type { Config } from '../createConfig.js'\nimport type { Compute } from '../types/utils.js'\n\nexport function switchChainMutationOptions(\n config: config,\n) {\n return {\n mutationFn(variables) {\n return switchChain(config, variables)\n },\n mutationKey: ['switchChain'],\n } as const satisfies MutationOptions<\n SwitchChainData,\n SwitchChainErrorType,\n SwitchChainVariables\n >\n}\n\nexport type SwitchChainData<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n> = Compute>\n\nexport type SwitchChainVariables<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n> = Compute>\n\nexport type SwitchChainMutate = <\n chainId extends config['chains'][number]['id'],\n>(\n variables: SwitchChainVariables,\n options?:\n | Compute<\n MutateOptions<\n SwitchChainData,\n SwitchChainErrorType,\n Compute>,\n context\n >\n >\n | undefined,\n) => void\n\nexport type SwitchChainMutateAsync = <\n chainId extends config['chains'][number]['id'],\n>(\n variables: SwitchChainVariables,\n options?:\n | Compute<\n MutateOptions<\n SwitchChainData,\n SwitchChainErrorType,\n Compute>,\n context\n >\n >\n | undefined,\n) => Promise>\n","import type {\n AddEthereumChainParameter,\n UserRejectedRequestErrorType,\n SwitchChainErrorType as viem_SwitchChainErrorType,\n} from 'viem'\n\nimport type { Config } from '../createConfig.js'\nimport type { BaseErrorType, ErrorType } from '../errors/base.js'\nimport {\n ChainNotConfiguredError,\n type ChainNotConfiguredErrorType,\n} from '../errors/config.js'\nimport {\n type ProviderNotFoundErrorType,\n SwitchChainNotSupportedError,\n type SwitchChainNotSupportedErrorType,\n} from '../errors/connector.js'\nimport type { ConnectorParameter } from '../types/properties.js'\nimport type { Compute, ExactPartial } from '../types/utils.js'\n\nexport type SwitchChainParameters<\n config extends Config = Config,\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n> = Compute<\n ConnectorParameter & {\n chainId: chainId | config['chains'][number]['id']\n addEthereumChainParameter?:\n | Compute>>\n | undefined\n }\n>\n\nexport type SwitchChainReturnType<\n config extends Config = Config,\n chainId extends\n config['chains'][number]['id'] = config['chains'][number]['id'],\n> = Extract<\n config['chains'][number],\n { id: Config extends config ? number : chainId }\n>\n\nexport type SwitchChainErrorType =\n | SwitchChainNotSupportedErrorType\n | ChainNotConfiguredErrorType\n // connector.switchChain()\n | ProviderNotFoundErrorType\n | UserRejectedRequestErrorType\n // base\n | BaseErrorType\n | ErrorType\n // viem\n | viem_SwitchChainErrorType\n\n/** https://wagmi.sh/core/api/actions/switchChain */\nexport async function switchChain<\n config extends Config,\n chainId extends config['chains'][number]['id'],\n>(\n config: config,\n parameters: SwitchChainParameters,\n): Promise> {\n const { addEthereumChainParameter, chainId } = parameters\n\n const connection = config.state.connections.get(\n parameters.connector?.uid ?? config.state.current!,\n )\n if (connection) {\n const connector = connection.connector\n if (!connector.switchChain)\n throw new SwitchChainNotSupportedError({ connector })\n const chain = await connector.switchChain({\n addEthereumChainParameter,\n chainId,\n })\n return chain as SwitchChainReturnType\n }\n\n const chain = config.chains.find((x) => x.id === chainId)\n if (!chain) throw new ChainNotConfiguredError()\n config.setState((x) => ({ ...x, chainId }))\n return chain as SwitchChainReturnType\n}\n","import type { Chain } from 'viem'\nimport type { Config } from '../createConfig.js'\nimport { deepEqual } from '../utils/deepEqual.js'\n\nexport type GetChainsReturnType = readonly [\n ...config['chains'],\n ...Chain[],\n]\n\nlet previousChains: readonly Chain[] = []\n\n/** https://wagmi.sh/core/api/actions/getChains */\nexport function getChains(\n config: config,\n): GetChainsReturnType {\n const chains = config.chains\n if (deepEqual(previousChains, chains))\n return previousChains as GetChainsReturnType\n previousChains = chains\n return chains as unknown as GetChainsReturnType\n}\n","'use client'\n\nimport {\n type Config,\n type GetChainsReturnType,\n type ResolvedRegister,\n getChains,\n} from '@wagmi/core'\nimport { watchChains } from '@wagmi/core/internal'\nimport { useSyncExternalStore } from 'react'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseChainsParameters =\n ConfigParameter\n\nexport type UseChainsReturnType =\n GetChainsReturnType\n\n/** https://wagmi.sh/react/api/hooks/useChains */\nexport function useChains(\n parameters: UseChainsParameters = {},\n): UseChainsReturnType {\n const config = useConfig(parameters)\n\n return useSyncExternalStore(\n (onChange) => watchChains(config, { onChange }),\n () => getChains(config),\n () => getChains(config),\n )\n}\n","import type { Config } from '../createConfig.js'\nimport type { GetChainsReturnType } from './getChains.js'\n\nexport type WatchChainsParameters = {\n onChange(\n chains: GetChainsReturnType,\n prevChains: GetChainsReturnType,\n ): void\n}\n\nexport type WatchChainsReturnType = () => void\n\n/**\n * @internal\n * We don't expose this because as far as consumers know, you can't chainge (lol) `config.chains` at runtime.\n * Setting `config.chains` via `config._internal.chains.setState(...)` is an extremely advanced use case that's not worth documenting or supporting in the public API at this time.\n */\nexport function watchChains(\n config: config,\n parameters: WatchChainsParameters,\n): WatchChainsReturnType {\n const { onChange } = parameters\n return config._internal.chains.subscribe((chains, prevChains) => {\n onChange(\n chains as unknown as GetChainsReturnType,\n prevChains as unknown as GetChainsReturnType,\n )\n })\n}\n","'use client'\n\nimport { useMutation } from '@tanstack/react-query'\nimport type {\n Config,\n ResolvedRegister,\n SwitchChainErrorType,\n} from '@wagmi/core'\nimport type { Compute } from '@wagmi/core/internal'\nimport {\n type SwitchChainData,\n type SwitchChainMutate,\n type SwitchChainMutateAsync,\n type SwitchChainVariables,\n switchChainMutationOptions,\n} from '@wagmi/core/query'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport type {\n UseMutationParameters,\n UseMutationReturnType,\n} from '../utils/query.js'\nimport { useChains } from './useChains.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseSwitchChainParameters<\n config extends Config = Config,\n context = unknown,\n> = Compute<\n ConfigParameter & {\n mutation?:\n | UseMutationParameters<\n SwitchChainData,\n SwitchChainErrorType,\n SwitchChainVariables,\n context\n >\n | undefined\n }\n>\n\nexport type UseSwitchChainReturnType<\n config extends Config = Config,\n context = unknown,\n> = Compute<\n UseMutationReturnType<\n SwitchChainData,\n SwitchChainErrorType,\n SwitchChainVariables,\n context\n > & {\n chains: config['chains']\n switchChain: SwitchChainMutate\n switchChainAsync: SwitchChainMutateAsync\n }\n>\n\n/** https://wagmi.sh/react/api/hooks/useSwitchChain */\nexport function useSwitchChain<\n config extends Config = ResolvedRegister['config'],\n context = unknown,\n>(\n parameters: UseSwitchChainParameters = {},\n): UseSwitchChainReturnType {\n const { mutation } = parameters\n\n const config = useConfig(parameters)\n\n const mutationOptions = switchChainMutationOptions(config)\n const { mutate, mutateAsync, ...result } = useMutation({\n ...mutation,\n ...mutationOptions,\n })\n\n type Return = UseSwitchChainReturnType\n return {\n ...result,\n chains: useChains({ config }) as unknown as config['chains'],\n switchChain: mutate as Return['switchChain'],\n switchChainAsync: mutateAsync as Return['switchChainAsync'],\n }\n}\n","import type { MutationOptions } from '@tanstack/query-core'\n\nimport {\n type DisconnectErrorType,\n type DisconnectParameters,\n type DisconnectReturnType,\n disconnect,\n} from '../actions/disconnect.js'\nimport type { Config } from '../createConfig.js'\nimport type { Mutate, MutateAsync } from './types.js'\n\nexport function disconnectMutationOptions(\n config: config,\n) {\n return {\n mutationFn(variables) {\n return disconnect(config, variables)\n },\n mutationKey: ['disconnect'],\n } as const satisfies MutationOptions<\n DisconnectData,\n DisconnectErrorType,\n DisconnectVariables\n >\n}\n\nexport type DisconnectData = DisconnectReturnType\n\nexport type DisconnectVariables = DisconnectParameters | undefined\n\nexport type DisconnectMutate = Mutate<\n DisconnectData,\n DisconnectErrorType,\n DisconnectVariables,\n context\n>\n\nexport type DisconnectMutateAsync = MutateAsync<\n DisconnectData,\n DisconnectErrorType,\n DisconnectVariables,\n context\n>\n","import type { Config, Connection, Connector } from '../createConfig.js'\nimport type { BaseErrorType, ErrorType } from '../errors/base.js'\nimport type {\n ConnectorNotConnectedErrorType,\n ConnectorNotFoundErrorType,\n} from '../errors/config.js'\nimport type { ConnectorParameter } from '../types/properties.js'\n\nexport type DisconnectParameters = ConnectorParameter\n\nexport type DisconnectReturnType = void\n\nexport type DisconnectErrorType =\n | ConnectorNotFoundErrorType\n | ConnectorNotConnectedErrorType\n // base\n | BaseErrorType\n | ErrorType\n\n/** https://wagmi.sh/core/api/actions/disconnect */\nexport async function disconnect(\n config: Config,\n parameters: DisconnectParameters = {},\n): Promise {\n let connector: Connector | undefined\n if (parameters.connector) connector = parameters.connector\n else {\n const { connections, current } = config.state\n const connection = connections.get(current!)\n connector = connection?.connector\n }\n\n const connections = config.state.connections\n\n if (connector) {\n await connector.disconnect()\n connector.emitter.off('change', config._internal.events.change)\n connector.emitter.off('disconnect', config._internal.events.disconnect)\n connector.emitter.on('connect', config._internal.events.connect)\n\n connections.delete(connector.uid)\n }\n\n config.setState((x) => {\n // if no connections exist, move to disconnected state\n if (connections.size === 0)\n return {\n ...x,\n connections: new Map(),\n current: null,\n status: 'disconnected',\n }\n\n // switch over to another connection\n const nextConnection = connections.values().next().value as Connection\n return {\n ...x,\n connections: new Map(connections),\n current: nextConnection.connector.uid,\n }\n })\n\n // Set recent connector if exists\n {\n const current = config.state.current\n if (!current) return\n const connector = config.state.connections.get(current)?.connector\n if (!connector) return\n await config.storage?.setItem('recentConnectorId', connector.id)\n }\n}\n","import type { Config, Connection } from '../createConfig.js'\nimport type { Compute } from '../types/utils.js'\nimport { deepEqual } from '../utils/deepEqual.js'\n\nexport type GetConnectionsReturnType = Compute[]\n\nlet previousConnections: Connection[] = []\n\n/** https://wagmi.sh/core/api/actions/getConnections */\nexport function getConnections(config: Config): GetConnectionsReturnType {\n const connections = [...config.state.connections.values()]\n if (config.state.status === 'reconnecting') return previousConnections\n if (deepEqual(previousConnections, connections)) return previousConnections\n previousConnections = connections\n return connections\n}\n","'use client'\n\nimport {\n type GetConnectionsReturnType,\n getConnections,\n watchConnections,\n} from '@wagmi/core'\nimport { useSyncExternalStore } from 'react'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseConnectionsParameters = ConfigParameter\n\nexport type UseConnectionsReturnType = GetConnectionsReturnType\n\n/** https://wagmi.sh/react/api/hooks/useConnections */\nexport function useConnections(\n parameters: UseConnectionsParameters = {},\n): UseConnectionsReturnType {\n const config = useConfig(parameters)\n\n return useSyncExternalStore(\n (onChange) => watchConnections(config, { onChange }),\n () => getConnections(config),\n () => getConnections(config),\n )\n}\n","import type { Config } from '../createConfig.js'\nimport { deepEqual } from '../utils/deepEqual.js'\nimport {\n type GetConnectionsReturnType,\n getConnections,\n} from './getConnections.js'\n\nexport type WatchConnectionsParameters = {\n onChange(\n connections: GetConnectionsReturnType,\n prevConnections: GetConnectionsReturnType,\n ): void\n}\n\nexport type WatchConnectionsReturnType = () => void\n\n/** https://wagmi.sh/core/api/actions/watchConnections */\nexport function watchConnections(\n config: Config,\n parameters: WatchConnectionsParameters,\n): WatchConnectionsReturnType {\n const { onChange } = parameters\n return config.subscribe(() => getConnections(config), onChange, {\n equalityFn: deepEqual,\n })\n}\n","import type { Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\n\nexport type GetBalanceParameters = {\n /** The address of the account. */\n address: Address\n} & (\n | {\n /** The balance of the account at a block number. */\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n | {\n blockNumber?: undefined\n /** The balance of the account at a block tag. */\n blockTag?: BlockTag | undefined\n }\n)\n\nexport type GetBalanceReturnType = bigint\n\nexport type GetBalanceErrorType =\n | NumberToHexErrorType\n | RequestErrorType\n | ErrorType\n\n/**\n * Returns the balance of an address in wei.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBalance\n * - JSON-RPC Methods: [`eth_getBalance`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance)\n *\n * You can convert the balance to ether units with [`formatEther`](https://viem.sh/docs/utilities/formatEther).\n *\n * ```ts\n * const balance = await getBalance(client, {\n * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * blockTag: 'safe'\n * })\n * const balanceAsEther = formatEther(balance)\n * // \"6.942\"\n * ```\n *\n * @param client - Client to use\n * @param parameters - {@link GetBalanceParameters}\n * @returns The balance of the address in wei. {@link GetBalanceReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBalance } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const balance = await getBalance(client, {\n * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n * // 10000000000000000000000n (wei)\n */\nexport async function getBalance(\n client: Client,\n { address, blockNumber, blockTag = 'latest' }: GetBalanceParameters,\n): Promise {\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n\n const balance = await client.request({\n method: 'eth_getBalance',\n params: [address, blockNumberHex || blockTag],\n })\n return BigInt(balance)\n}\n","import type {\n Account,\n Chain,\n Client,\n PublicActions,\n RpcSchema,\n Transport,\n WalletActions,\n} from 'viem'\n\n/**\n * Retrieves and returns an action from the client (if exists), and falls\n * back to the tree-shakable action.\n *\n * Useful for extracting overridden actions from a client (ie. if a consumer\n * wants to override the `sendTransaction` implementation).\n */\nexport function getAction<\n transport extends Transport,\n chain extends Chain | undefined,\n account extends Account | undefined,\n rpcSchema extends RpcSchema | undefined,\n extended extends { [key: string]: unknown },\n client extends Client,\n parameters,\n returnType,\n>(\n client: client,\n actionFn: (_: any, parameters: parameters) => returnType,\n // Some minifiers drop `Function.prototype.name`, or replace it with short letters,\n // meaning that `actionFn.name` will not always work. For that case, the consumer\n // needs to pass the name explicitly.\n name: keyof PublicActions | keyof WalletActions,\n): (parameters: parameters) => returnType {\n const action_implicit = client[actionFn.name]\n if (typeof action_implicit === 'function')\n return action_implicit as (params: parameters) => returnType\n\n const action_explicit = client[name]\n if (typeof action_explicit === 'function')\n return action_explicit as (params: parameters) => returnType\n\n return (params) => actionFn(client, params)\n}\n","import { weiUnits } from 'viem'\n\nimport type { Unit } from '../types/unit.js'\n\nexport function getUnit(unit: Unit) {\n if (typeof unit === 'number') return unit\n if (unit === 'wei') return 0\n return Math.abs(weiUnits[unit])\n}\n","import type { Abi, Address } from 'abitype'\n\nimport { AbiDecodingZeroDataError } from '../../errors/abi.js'\nimport { BaseError } from '../../errors/base.js'\nimport {\n ContractFunctionExecutionError,\n type ContractFunctionExecutionErrorType,\n ContractFunctionRevertedError,\n type ContractFunctionRevertedErrorType,\n ContractFunctionZeroDataError,\n type ContractFunctionZeroDataErrorType,\n RawContractError,\n} from '../../errors/contract.js'\nimport { InternalRpcError } from '../../errors/rpc.js'\nimport type { ErrorType } from '../../errors/utils.js'\n\nconst EXECUTION_REVERTED_ERROR_CODE = 3\n\nexport type GetContractErrorReturnType = Omit<\n ContractFunctionExecutionErrorType,\n 'cause'\n> & {\n cause:\n | cause\n | ContractFunctionZeroDataErrorType\n | ContractFunctionRevertedErrorType\n}\n\nexport function getContractError>(\n err: err,\n {\n abi,\n address,\n args,\n docsPath,\n functionName,\n sender,\n }: {\n abi: Abi\n args: any\n address?: Address | undefined\n docsPath?: string | undefined\n functionName: string\n sender?: Address | undefined\n },\n): GetContractErrorReturnType {\n const { code, data, message, shortMessage } = (\n err instanceof RawContractError\n ? err\n : err instanceof BaseError\n ? err.walk((err) => 'data' in (err as Error)) || err.walk()\n : {}\n ) as RawContractError\n\n const cause = (() => {\n if (err instanceof AbiDecodingZeroDataError)\n return new ContractFunctionZeroDataError({ functionName })\n if (\n [EXECUTION_REVERTED_ERROR_CODE, InternalRpcError.code].includes(code) &&\n (data || message || shortMessage)\n ) {\n return new ContractFunctionRevertedError({\n abi,\n data: typeof data === 'object' ? data.data : data,\n functionName,\n message: shortMessage ?? message,\n })\n }\n return err\n })()\n\n return new ContractFunctionExecutionError(cause as BaseError, {\n abi,\n args,\n contractAddress: address,\n docsPath,\n functionName,\n sender,\n }) as GetContractErrorReturnType\n}\n","import type { Client } from '../clients/createClient.js'\nimport type { PublicActions } from '../clients/decorators/public.js'\nimport type { WalletActions } from '../clients/decorators/wallet.js'\nimport type { Transport } from '../clients/transports/createTransport.js'\nimport type { Account } from '../types/account.js'\nimport type { Chain } from '../types/chain.js'\nimport type { RpcSchema } from '../types/eip1193.js'\n\n/**\n * Retrieves and returns an action from the client (if exists), and falls\n * back to the tree-shakable action.\n *\n * Useful for extracting overridden actions from a client (ie. if a consumer\n * wants to override the `sendTransaction` implementation).\n */\nexport function getAction<\n transport extends Transport,\n chain extends Chain | undefined,\n account extends Account | undefined,\n rpcSchema extends RpcSchema | undefined,\n extended extends { [key: string]: unknown },\n client extends Client,\n parameters,\n returnType,\n>(\n client: client,\n actionFn: (_: any, parameters: parameters) => returnType,\n // Some minifiers drop `Function.prototype.name`, or replace it with short letters,\n // meaning that `actionFn.name` will not always work. For that case, the consumer\n // needs to pass the name explicitly.\n name: keyof PublicActions | keyof WalletActions | (string & {}),\n): (parameters: parameters) => returnType {\n const action_implicit = client[actionFn.name]\n if (typeof action_implicit === 'function')\n return action_implicit as (params: parameters) => returnType\n\n const action_explicit = client[name]\n if (typeof action_explicit === 'function')\n return action_explicit as (params: parameters) => returnType\n\n return (params) => actionFn(client, params)\n}\n","import type { Abi } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { BaseError } from '../../errors/base.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n ContractFunctionParameters,\n ContractFunctionReturnType,\n} from '../../types/contract.js'\nimport type { UnionEvaluate } from '../../types/utils.js'\nimport {\n type DecodeFunctionResultErrorType,\n decodeFunctionResult,\n} from '../../utils/abi/decodeFunctionResult.js'\nimport {\n type EncodeFunctionDataErrorType,\n type EncodeFunctionDataParameters,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport {\n type GetContractErrorReturnType,\n getContractError,\n} from '../../utils/errors/getContractError.js'\nimport { getAction } from '../../utils/getAction.js'\n\nimport { type CallErrorType, type CallParameters, call } from './call.js'\n\nexport type ReadContractParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends ContractFunctionName<\n abi,\n 'pure' | 'view'\n > = ContractFunctionName,\n args extends ContractFunctionArgs<\n abi,\n 'pure' | 'view',\n functionName\n > = ContractFunctionArgs,\n> = UnionEvaluate<\n Pick<\n CallParameters,\n | 'account'\n | 'blockNumber'\n | 'blockTag'\n | 'factory'\n | 'factoryData'\n | 'stateOverride'\n >\n> &\n ContractFunctionParameters\n\nexport type ReadContractReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends ContractFunctionName<\n abi,\n 'pure' | 'view'\n > = ContractFunctionName,\n args extends ContractFunctionArgs<\n abi,\n 'pure' | 'view',\n functionName\n > = ContractFunctionArgs,\n> = ContractFunctionReturnType\n\nexport type ReadContractErrorType = GetContractErrorReturnType<\n CallErrorType | EncodeFunctionDataErrorType | DecodeFunctionResultErrorType\n>\n\n/**\n * Calls a read-only function on a contract, and returns the response.\n *\n * - Docs: https://viem.sh/docs/contract/readContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/reading-contracts\n *\n * A \"read-only\" function (constant function) on a Solidity contract is denoted by a `view` or `pure` keyword. They can only read the state of the contract, and cannot make any changes to it. Since read-only methods do not change the state of the contract, they do not require any gas to be executed, and can be called by any user without the need to pay for gas.\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param client - Client to use\n * @param parameters - {@link ReadContractParameters}\n * @returns The response from the contract. Type is inferred. {@link ReadContractReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { readContract } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const result = await readContract(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function balanceOf(address) view returns (uint256)']),\n * functionName: 'balanceOf',\n * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * })\n * // 424122n\n */\nexport async function readContract<\n chain extends Chain | undefined,\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName,\n const args extends ContractFunctionArgs,\n>(\n client: Client,\n parameters: ReadContractParameters,\n): Promise> {\n const { abi, address, args, functionName, ...rest } =\n parameters as ReadContractParameters\n const calldata = encodeFunctionData({\n abi,\n args,\n functionName,\n } as EncodeFunctionDataParameters)\n try {\n const { data } = await getAction(\n client,\n call,\n 'call',\n )({\n ...(rest as CallParameters),\n data: calldata,\n to: address!,\n })\n return decodeFunctionResult({\n abi,\n args,\n functionName,\n data: data || '0x',\n }) as ReadContractReturnType\n } catch (error) {\n throw getContractError(error as BaseError, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/readContract',\n functionName,\n })\n }\n}\n","import type { AbiStateMutability, Address, Narrow } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport { multicall3Abi } from '../../constants/abis.js'\nimport { AbiDecodingZeroDataError } from '../../errors/abi.js'\nimport { BaseError } from '../../errors/base.js'\nimport { RawContractError } from '../../errors/contract.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { ContractFunctionParameters } from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type {\n MulticallContracts,\n MulticallResults,\n} from '../../types/multicall.js'\nimport {\n type DecodeFunctionResultErrorType,\n decodeFunctionResult,\n} from '../../utils/abi/decodeFunctionResult.js'\nimport {\n type EncodeFunctionDataErrorType,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport {\n type GetChainContractAddressErrorType,\n getChainContractAddress,\n} from '../../utils/chain/getChainContractAddress.js'\nimport {\n type GetContractErrorReturnType,\n getContractError,\n} from '../../utils/errors/getContractError.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { getAction } from '../../utils/getAction.js'\nimport type { CallParameters } from './call.js'\nimport { type ReadContractErrorType, readContract } from './readContract.js'\n\nexport type MulticallParameters<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n options extends {\n optional?: boolean\n properties?: Record\n } = {},\n> = Pick & {\n allowFailure?: allowFailure | boolean | undefined\n batchSize?: number | undefined\n contracts: MulticallContracts<\n Narrow,\n { mutability: AbiStateMutability } & options\n >\n multicallAddress?: Address | undefined\n}\n\nexport type MulticallReturnType<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n options extends {\n error?: Error\n } = { error: Error },\n> = MulticallResults<\n Narrow,\n allowFailure,\n { mutability: AbiStateMutability } & options\n>\n\nexport type MulticallErrorType =\n | GetChainContractAddressErrorType\n | ReadContractErrorType\n | GetContractErrorReturnType<\n EncodeFunctionDataErrorType | DecodeFunctionResultErrorType\n >\n | ErrorType\n\n/**\n * Similar to [`readContract`](https://viem.sh/docs/contract/readContract), but batches up multiple functions on a contract in a single RPC call via the [`multicall3` contract](https://github.com/mds1/multicall).\n *\n * - Docs: https://viem.sh/docs/contract/multicall\n *\n * @param client - Client to use\n * @param parameters - {@link MulticallParameters}\n * @returns An array of results with accompanying status. {@link MulticallReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { multicall } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const abi = parseAbi([\n * 'function balanceOf(address) view returns (uint256)',\n * 'function totalSupply() view returns (uint256)',\n * ])\n * const results = await multicall(client, {\n * contracts: [\n * {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi,\n * functionName: 'balanceOf',\n * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * },\n * {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi,\n * functionName: 'totalSupply',\n * },\n * ],\n * })\n * // [{ result: 424122n, status: 'success' }, { result: 1000000n, status: 'success' }]\n */\nexport async function multicall<\n const contracts extends readonly unknown[],\n chain extends Chain | undefined,\n allowFailure extends boolean = true,\n>(\n client: Client,\n parameters: MulticallParameters,\n): Promise> {\n const {\n allowFailure = true,\n batchSize: batchSize_,\n blockNumber,\n blockTag,\n multicallAddress: multicallAddress_,\n stateOverride,\n } = parameters\n const contracts = parameters.contracts as ContractFunctionParameters[]\n\n const batchSize =\n batchSize_ ??\n ((typeof client.batch?.multicall === 'object' &&\n client.batch.multicall.batchSize) ||\n 1_024)\n\n let multicallAddress = multicallAddress_\n if (!multicallAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. multicallAddress is required.',\n )\n\n multicallAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'multicall3',\n })\n }\n\n type Aggregate3Calls = {\n allowFailure: boolean\n callData: Hex\n target: Address\n }[]\n\n const chunkedCalls: Aggregate3Calls[] = [[]]\n let currentChunk = 0\n let currentChunkSize = 0\n for (let i = 0; i < contracts.length; i++) {\n const { abi, address, args, functionName } = contracts[i]\n try {\n const callData = encodeFunctionData({ abi, args, functionName })\n\n currentChunkSize += (callData.length - 2) / 2\n // Check to see if we need to create a new chunk.\n if (\n // Check if batching is enabled.\n batchSize > 0 &&\n // Check if the current size of the batch exceeds the size limit.\n currentChunkSize > batchSize &&\n // Check if the current chunk is not already empty.\n chunkedCalls[currentChunk].length > 0\n ) {\n currentChunk++\n currentChunkSize = (callData.length - 2) / 2\n chunkedCalls[currentChunk] = []\n }\n\n chunkedCalls[currentChunk] = [\n ...chunkedCalls[currentChunk],\n {\n allowFailure: true,\n callData,\n target: address,\n },\n ]\n } catch (err) {\n const error = getContractError(err as BaseError, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/multicall',\n functionName,\n })\n if (!allowFailure) throw error\n chunkedCalls[currentChunk] = [\n ...chunkedCalls[currentChunk],\n {\n allowFailure: true,\n callData: '0x' as Hex,\n target: address,\n },\n ]\n }\n }\n\n const aggregate3Results = await Promise.allSettled(\n chunkedCalls.map((calls) =>\n getAction(\n client,\n readContract,\n 'readContract',\n )({\n abi: multicall3Abi,\n address: multicallAddress!,\n args: [calls],\n blockNumber,\n blockTag,\n functionName: 'aggregate3',\n stateOverride,\n }),\n ),\n )\n\n const results = []\n for (let i = 0; i < aggregate3Results.length; i++) {\n const result = aggregate3Results[i]\n\n // If an error occurred in a `readContract` invocation (ie. network error),\n // then append the failure reason to each contract result.\n if (result.status === 'rejected') {\n if (!allowFailure) throw result.reason\n for (let j = 0; j < chunkedCalls[i].length; j++) {\n results.push({\n status: 'failure',\n error: result.reason,\n result: undefined,\n })\n }\n continue\n }\n\n // If the `readContract` call was successful, then decode the results.\n const aggregate3Result = result.value\n for (let j = 0; j < aggregate3Result.length; j++) {\n // Extract the response from `readContract`\n const { returnData, success } = aggregate3Result[j]\n\n // Extract the request call data from the original call.\n const { callData } = chunkedCalls[i][j]\n\n // Extract the contract config for this call from the `contracts` argument\n // for decoding.\n const { abi, address, functionName, args } = contracts[\n results.length\n ] as ContractFunctionParameters\n\n try {\n if (callData === '0x') throw new AbiDecodingZeroDataError()\n if (!success) throw new RawContractError({ data: returnData })\n const result = decodeFunctionResult({\n abi,\n args,\n data: returnData,\n functionName,\n })\n results.push(allowFailure ? { result, status: 'success' } : result)\n } catch (err) {\n const error = getContractError(err as BaseError, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/multicall',\n functionName,\n })\n if (!allowFailure) throw error\n results.push({ error, result: undefined, status: 'failure' })\n }\n }\n }\n\n if (results.length !== contracts.length)\n throw new BaseError('multicall results mismatch')\n return results as MulticallReturnType\n}\n","import type {\n ContractFunctionParameters,\n MulticallParameters as viem_MulticallParameters,\n MulticallReturnType as viem_MulticallReturnType,\n} from 'viem'\nimport { ContractFunctionExecutionError } from 'viem'\n\nimport type { Config } from '../createConfig.js'\nimport type { ChainIdParameter } from '../types/properties.js'\nimport { type MulticallErrorType, multicall } from './multicall.js'\nimport { type ReadContractErrorType, readContract } from './readContract.js'\n\nexport type ReadContractsParameters<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n config extends Config = Config,\n> = viem_MulticallParameters<\n contracts,\n allowFailure,\n { properties: ChainIdParameter }\n>\n\nexport type ReadContractsReturnType<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n> = viem_MulticallReturnType\n\nexport type ReadContractsErrorType = MulticallErrorType | ReadContractErrorType\n\nexport async function readContracts<\n config extends Config,\n const contracts extends readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n>(\n config: config,\n parameters: ReadContractsParameters,\n): Promise> {\n const { allowFailure = true, blockNumber, blockTag, ...rest } = parameters\n const contracts = parameters.contracts as (ContractFunctionParameters & {\n chainId?: number | undefined\n })[]\n\n try {\n const contractsByChainId: {\n [chainId: number]: {\n contract: ContractFunctionParameters\n index: number\n }[]\n } = {}\n for (const [index, contract] of contracts.entries()) {\n const chainId = contract.chainId ?? config.state.chainId\n if (!contractsByChainId[chainId]) contractsByChainId[chainId] = []\n contractsByChainId[chainId]?.push({ contract, index })\n }\n const promises = () =>\n Object.entries(contractsByChainId).map(([chainId, contracts]) =>\n multicall(config, {\n ...rest,\n allowFailure,\n blockNumber,\n blockTag,\n chainId: Number.parseInt(chainId),\n contracts: contracts.map(({ contract }) => contract),\n }),\n )\n\n const multicallResults = (await Promise.all(promises())).flat()\n // Reorder the contract results back to the order they were\n // provided in.\n const resultIndexes = Object.values(contractsByChainId).flatMap(\n (contracts) => contracts.map(({ index }) => index),\n )\n return multicallResults.reduce((results, result, index) => {\n if (results) (results as unknown[])[resultIndexes[index]!] = result\n return results\n }, [] as unknown[]) as ReadContractsReturnType\n } catch (error) {\n if (error instanceof ContractFunctionExecutionError) throw error\n\n const promises = () =>\n contracts.map((contract) =>\n readContract(config, { ...contract, blockNumber, blockTag }),\n )\n if (allowFailure)\n return (await Promise.allSettled(promises())).map((result) => {\n if (result.status === 'fulfilled')\n return { result: result.value, status: 'success' }\n return { error: result.reason, result: undefined, status: 'failure' }\n }) as ReadContractsReturnType\n\n return (await Promise.all(promises())) as ReadContractsReturnType<\n contracts,\n allowFailure\n >\n }\n}\n","import type {\n ContractFunctionParameters,\n MulticallErrorType as viem_MulticallErrorType,\n MulticallParameters as viem_MulticallParameters,\n MulticallReturnType as viem_MulticallReturnType,\n} from 'viem'\nimport { multicall as viem_multicall } from 'viem/actions'\n\nimport type { Config } from '../createConfig.js'\nimport type { ChainIdParameter } from '../types/properties.js'\nimport { getAction } from '../utils/getAction.js'\n\nexport type MulticallParameters<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n config extends Config = Config,\n> = viem_MulticallParameters & ChainIdParameter\n\nexport type MulticallReturnType<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n> = viem_MulticallReturnType\n\nexport type MulticallErrorType = viem_MulticallErrorType\n\nexport async function multicall<\n config extends Config,\n const contracts extends readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n>(\n config: config,\n parameters: MulticallParameters,\n): Promise> {\n const { allowFailure = true, chainId, contracts, ...rest } = parameters\n const client = config.getClient({ chainId })\n const action = getAction(client, viem_multicall, 'multicall')\n return action({\n allowFailure,\n contracts,\n ...rest,\n }) as Promise>\n}\n","import type { Abi } from 'viem'\nimport type { ContractFunctionArgs, ContractFunctionName } from 'viem'\nimport {\n type ReadContractErrorType as viem_ReadContractErrorType,\n type ReadContractParameters as viem_ReadContractParameters,\n type ReadContractReturnType as viem_ReadContractReturnType,\n readContract as viem_readContract,\n} from 'viem/actions'\n\nimport type { Config } from '../createConfig.js'\nimport type { ChainIdParameter } from '../types/properties.js'\nimport { getAction } from '../utils/getAction.js'\n\nexport type ReadContractParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends ContractFunctionName<\n abi,\n 'pure' | 'view'\n > = ContractFunctionName,\n args extends ContractFunctionArgs<\n abi,\n 'pure' | 'view',\n functionName\n > = ContractFunctionArgs,\n config extends Config = Config,\n> = viem_ReadContractParameters &\n ChainIdParameter\n\nexport type ReadContractReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends ContractFunctionName<\n abi,\n 'pure' | 'view'\n > = ContractFunctionName,\n args extends ContractFunctionArgs<\n abi,\n 'pure' | 'view',\n functionName\n > = ContractFunctionArgs,\n> = viem_ReadContractReturnType\n\nexport type ReadContractErrorType = viem_ReadContractErrorType\n\n/** https://wagmi.sh/core/api/actions/readContract */\nexport function readContract<\n config extends Config,\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName,\n args extends ContractFunctionArgs,\n>(\n config: config,\n parameters: ReadContractParameters,\n): Promise> {\n const { chainId, ...rest } = parameters\n const client = config.getClient({ chainId })\n const action = getAction(client, viem_readContract, 'readContract')\n return action(rest as any)\n}\n","import {\n type Address,\n ContractFunctionExecutionError,\n type Hex,\n formatUnits,\n hexToString,\n trim,\n} from 'viem'\nimport {\n type GetBalanceErrorType as viem_GetBalanceErrorType,\n type GetBalanceParameters as viem_GetBalanceParameters,\n getBalance as viem_getBalance,\n} from 'viem/actions'\n\nimport type { Config } from '../createConfig.js'\nimport type { ChainIdParameter } from '../types/properties.js'\nimport type { Unit } from '../types/unit.js'\nimport type { Compute } from '../types/utils.js'\nimport { getAction } from '../utils/getAction.js'\nimport { getUnit } from '../utils/getUnit.js'\nimport { readContracts } from './readContracts.js'\n\nexport type GetBalanceParameters = Compute<\n ChainIdParameter &\n viem_GetBalanceParameters & {\n /** @deprecated */\n token?: Address | undefined\n /** @deprecated */\n unit?: Unit | undefined\n }\n>\n\nexport type GetBalanceReturnType = {\n decimals: number\n /** @deprecated */\n formatted: string\n symbol: string\n value: bigint\n}\n\nexport type GetBalanceErrorType = viem_GetBalanceErrorType\n\n/** https://wagmi.sh/core/api/actions/getBalance */\nexport async function getBalance(\n config: config,\n parameters: GetBalanceParameters,\n): Promise {\n const {\n address,\n blockNumber,\n blockTag,\n chainId,\n token: tokenAddress,\n unit = 'ether',\n } = parameters\n\n if (tokenAddress) {\n try {\n return getTokenBalance(config, {\n balanceAddress: address,\n chainId,\n symbolType: 'string',\n tokenAddress,\n })\n } catch (error) {\n // In the chance that there is an error upon decoding the contract result,\n // it could be likely that the contract data is represented as bytes32 instead\n // of a string.\n if (error instanceof ContractFunctionExecutionError) {\n const balance = await getTokenBalance(config, {\n balanceAddress: address,\n chainId,\n symbolType: 'bytes32',\n tokenAddress,\n })\n const symbol = hexToString(\n trim(balance.symbol as Hex, { dir: 'right' }),\n )\n return { ...balance, symbol }\n }\n throw error\n }\n }\n\n const client = config.getClient({ chainId })\n const action = getAction(client, viem_getBalance, 'getBalance')\n const value = await action(\n blockNumber ? { address, blockNumber } : { address, blockTag },\n )\n const chain = config.chains.find((x) => x.id === chainId) ?? client.chain!\n return {\n decimals: chain.nativeCurrency.decimals,\n formatted: formatUnits(value, getUnit(unit)),\n symbol: chain.nativeCurrency.symbol,\n value,\n }\n}\n\ntype GetTokenBalanceParameters = {\n balanceAddress: Address\n chainId?: number | undefined\n symbolType: 'bytes32' | 'string'\n tokenAddress: Address\n unit?: Unit | undefined\n}\n\nasync function getTokenBalance(\n config: Config,\n parameters: GetTokenBalanceParameters,\n) {\n const { balanceAddress, chainId, symbolType, tokenAddress, unit } = parameters\n const contract = {\n abi: [\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [{ type: 'address' }],\n outputs: [{ type: 'uint256' }],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ type: 'uint8' }],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ type: symbolType }],\n },\n ],\n address: tokenAddress,\n } as const\n const [value, decimals, symbol] = await readContracts(config, {\n allowFailure: false,\n contracts: [\n {\n ...contract,\n functionName: 'balanceOf',\n args: [balanceAddress],\n chainId,\n },\n { ...contract, functionName: 'decimals', chainId },\n { ...contract, functionName: 'symbol', chainId },\n ] as const,\n })\n const formatted = formatUnits(value ?? '0', getUnit(unit ?? decimals))\n return { decimals, formatted, symbol, value }\n}\n","import type { QueryOptions } from '@tanstack/query-core'\n\nimport {\n type GetBalanceErrorType,\n type GetBalanceParameters,\n type GetBalanceReturnType,\n getBalance,\n} from '../actions/getBalance.js'\nimport type { Config } from '../createConfig.js'\nimport type { ScopeKeyParameter } from '../types/properties.js'\nimport type { Compute, PartialBy } from '../types/utils.js'\nimport { filterQueryOptions } from './utils.js'\n\nexport type GetBalanceOptions = Compute<\n PartialBy, 'address'> & ScopeKeyParameter\n>\n\nexport function getBalanceQueryOptions(\n config: config,\n options: GetBalanceOptions = {},\n) {\n return {\n async queryFn({ queryKey }) {\n const { address, scopeKey: _, ...parameters } = queryKey[1]\n if (!address) throw new Error('address is required')\n const balance = await getBalance(config, {\n ...(parameters as GetBalanceParameters),\n address,\n })\n return balance ?? null\n },\n queryKey: getBalanceQueryKey(options),\n } as const satisfies QueryOptions<\n GetBalanceQueryFnData,\n GetBalanceErrorType,\n GetBalanceData,\n GetBalanceQueryKey\n >\n}\n\nexport type GetBalanceQueryFnData = Compute\n\nexport type GetBalanceData = GetBalanceQueryFnData\n\nexport function getBalanceQueryKey(\n options: GetBalanceOptions = {},\n) {\n return ['balance', filterQueryOptions(options)] as const\n}\n\nexport type GetBalanceQueryKey = ReturnType<\n typeof getBalanceQueryKey\n>\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n\n\n ///////////////////\n // Interaction Errors\n\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ACTION_REJECTED = \"ACTION_REJECTED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n","export const version = \"logger/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.7.0\";\n","export const version = \"providers/5.7.2\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.7.0\";\n","\"use strict\";\n\nimport { BlockTag, FeeData, Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst allowedTransactionKeys: Array = [\n \"accessList\", \"ccipReadEnabled\", \"chainId\", \"customData\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"to\", \"type\", \"value\"\n];\n\nconst forwardErrors = [\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n\n// EIP-712 Typed Data\n// See: https://eips.ethereum.org/EIPS/eip-712\n\nexport interface TypedDataDomain {\n name?: string;\n version?: string;\n chainId?: BigNumberish;\n verifyingContract?: string;\n salt?: BytesLike;\n};\n\nexport interface TypedDataField {\n name: string;\n type: string;\n};\n\n// Sub-classes of Signer may optionally extend this interface to indicate\n// they have a private key available synchronously\nexport interface ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n}\n\n// Sub-Class Notes:\n// - A Signer MUST always make sure, that if present, the \"from\" field\n// matches the Signer, before sending or signing a transaction\n// - A Signer SHOULD always wrap private information (such as a private\n// key or mnemonic) in a function, so that console.log does not leak\n// the data\n\n// @TODO: This is a temporary measure to preserve backwards compatibility\n// In v6, the method on TypedDataSigner will be added to Signer\nexport interface TypedDataSigner {\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise;\n}\n\nexport abstract class Signer {\n readonly provider?: Provider;\n\n ///////////////////\n // Sub-classes MUST implement these\n\n // Returns the checksum address\n abstract getAddress(): Promise\n\n // Returns the signed prefixed-message. This MUST treat:\n // - Bytes as a binary message\n // - string as a UTF8-message\n // i.e. \"0x1234\" is a SIX (6) byte string, NOT 2 bytes of data\n abstract signMessage(message: Bytes | string): Promise;\n\n // Signs a transaction and returns the fully serialized, signed transaction.\n // The EXACT transaction MUST be signed, and NO additional properties to be added.\n // - This MAY throw if signing transactions is not supports, but if\n // it does, sentTransaction MUST be overridden.\n abstract signTransaction(transaction: Deferrable): Promise;\n\n // Returns a new instance of the Signer, connected to provider.\n // This MAY throw if changing providers is not supported.\n abstract connect(provider: Provider): Signer;\n\n readonly _isSigner: boolean;\n\n\n ///////////////////\n // Sub-classes MUST call super\n constructor() {\n logger.checkAbstract(new.target, Signer);\n defineReadOnly(this, \"_isSigner\", true);\n }\n\n\n ///////////////////\n // Sub-classes MAY override these\n\n async getBalance(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getBalance\");\n return await this.provider.getBalance(this.getAddress(), blockTag);\n }\n\n async getTransactionCount(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getTransactionCount\");\n return await this.provider.getTransactionCount(this.getAddress(), blockTag);\n }\n\n // Populates \"from\" if unspecified, and estimates the gas for the transaction\n async estimateGas(transaction: Deferrable): Promise {\n this._checkProvider(\"estimateGas\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.estimateGas(tx);\n }\n\n // Populates \"from\" if unspecified, and calls with the transaction\n async call(transaction: Deferrable, blockTag?: BlockTag): Promise {\n this._checkProvider(\"call\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.call(tx, blockTag);\n }\n\n // Populates all fields in a transaction, signs it and sends it to the network\n async sendTransaction(transaction: Deferrable): Promise {\n this._checkProvider(\"sendTransaction\");\n const tx = await this.populateTransaction(transaction);\n const signedTx = await this.signTransaction(tx);\n return await this.provider.sendTransaction(signedTx);\n }\n\n async getChainId(): Promise {\n this._checkProvider(\"getChainId\");\n const network = await this.provider.getNetwork();\n return network.chainId;\n }\n\n async getGasPrice(): Promise {\n this._checkProvider(\"getGasPrice\");\n return await this.provider.getGasPrice();\n }\n\n async getFeeData(): Promise {\n this._checkProvider(\"getFeeData\");\n return await this.provider.getFeeData();\n }\n\n\n async resolveName(name: string): Promise {\n this._checkProvider(\"resolveName\");\n return await this.provider.resolveName(name);\n }\n\n\n\n // Checks a transaction does not contain invalid keys and if\n // no \"from\" is provided, populates it.\n // - does NOT require a provider\n // - adds \"from\" is not present\n // - returns a COPY (safe to mutate the result)\n // By default called from: (overriding these prevents it)\n // - call\n // - estimateGas\n // - populateTransaction (and therefor sendTransaction)\n checkTransaction(transaction: Deferrable): Deferrable {\n for (const key in transaction) {\n if (allowedTransactionKeys.indexOf(key) === -1) {\n logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n }\n }\n\n const tx = shallowCopy(transaction);\n\n if (tx.from == null) {\n tx.from = this.getAddress();\n\n } else {\n // Make sure any provided address matches this signer\n tx.from = Promise.all([\n Promise.resolve(tx.from),\n this.getAddress()\n ]).then((result) => {\n if (result[0].toLowerCase() !== result[1].toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n return result[0];\n });\n }\n\n return tx;\n }\n\n // Populates ALL keys for a transaction and checks that \"from\" matches\n // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n // By default called from: (overriding these prevents it)\n // - sendTransaction\n //\n // Notes:\n // - We allow gasPrice for EIP-1559 as long as it matches maxFeePerGas\n async populateTransaction(transaction: Deferrable): Promise {\n\n const tx: Deferrable = await resolveProperties(this.checkTransaction(transaction))\n\n if (tx.to != null) {\n tx.to = Promise.resolve(tx.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n\n // Prevent this error from causing an UnhandledPromiseException\n tx.to.catch((error) => { });\n }\n\n // Do not allow mixing pre-eip-1559 and eip-1559 properties\n const hasEip1559 = (tx.maxFeePerGas != null || tx.maxPriorityFeePerGas != null);\n if (tx.gasPrice != null && (tx.type === 2 || hasEip1559)) {\n logger.throwArgumentError(\"eip-1559 transaction do not support gasPrice\", \"transaction\", transaction);\n } else if ((tx.type === 0 || tx.type === 1) && hasEip1559) {\n logger.throwArgumentError(\"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"transaction\", transaction);\n }\n\n if ((tx.type === 2 || tx.type == null) && (tx.maxFeePerGas != null && tx.maxPriorityFeePerGas != null)) {\n // Fully-formed EIP-1559 transaction (skip getFeeData)\n tx.type = 2;\n\n } else if (tx.type === 0 || tx.type === 1) {\n // Explicit Legacy or EIP-2930 transaction\n\n // Populate missing gasPrice\n if (tx.gasPrice == null) { tx.gasPrice = this.getGasPrice(); }\n\n } else {\n\n // We need to get fee data to determine things\n const feeData = await this.getFeeData();\n\n if (tx.type == null) {\n // We need to auto-detect the intended type of this transaction...\n\n if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n // The network supports EIP-1559!\n\n // Upgrade transaction from null to eip-1559\n tx.type = 2;\n\n if (tx.gasPrice != null) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n const gasPrice = tx.gasPrice;\n delete tx.gasPrice;\n tx.maxFeePerGas = gasPrice;\n tx.maxPriorityFeePerGas = gasPrice;\n\n } else {\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n\n } else if (feeData.gasPrice != null) {\n // Network doesn't support EIP-1559...\n\n // ...but they are trying to use EIP-1559 properties\n if (hasEip1559) {\n logger.throwError(\"network does not support EIP-1559\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"populateTransaction\"\n });\n }\n\n // Populate missing fee data\n if (tx.gasPrice == null) { tx.gasPrice = feeData.gasPrice; }\n\n // Explicitly set untyped transaction to legacy\n tx.type = 0;\n\n } else {\n // getFeeData has failed us.\n logger.throwError(\"failed to get consistent fee data\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signer.getFeeData\"\n });\n }\n\n } else if (tx.type === 2) {\n // Explicitly using EIP-1559\n\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n }\n\n if (tx.nonce == null) { tx.nonce = this.getTransactionCount(\"pending\"); }\n\n if (tx.gasLimit == null) {\n tx.gasLimit = this.estimateGas(tx).catch((error) => {\n if (forwardErrors.indexOf(error.code) >= 0) {\n throw error;\n }\n\n return logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n tx: tx\n });\n });\n }\n\n if (tx.chainId == null) {\n tx.chainId = this.getChainId();\n } else {\n tx.chainId = Promise.all([\n Promise.resolve(tx.chainId),\n this.getChainId()\n ]).then((results) => {\n if (results[1] !== 0 && results[0] !== results[1]) {\n logger.throwArgumentError(\"chainId address mismatch\", \"transaction\", transaction);\n }\n return results[0];\n });\n }\n\n return await resolveProperties(tx);\n }\n\n\n ///////////////////\n // Sub-classes SHOULD leave these alone\n\n _checkProvider(operation?: string): void {\n if (!this.provider) { logger.throwError(\"missing provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: (operation || \"_checkProvider\") });\n }\n }\n\n static isSigner(value: any): value is Signer {\n return !!(value && value._isSigner);\n }\n}\n\nexport class VoidSigner extends Signer implements TypedDataSigner {\n readonly address: string;\n\n constructor(address: string, provider?: Provider) {\n super();\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n getAddress(): Promise {\n return Promise.resolve(this.address);\n }\n\n _fail(message: string, operation: string): Promise {\n return Promise.resolve().then(() => {\n logger.throwError(message, Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n });\n }\n\n signMessage(message: Bytes | string): Promise {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n }\n\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n }\n\n connect(provider: Provider): VoidSigner {\n return new VoidSigner(this.address, provider);\n }\n}\n\n","export const version = \"abstract-signer/5.7.0\";\n","export const version = \"bytes/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n","export const version = \"bignumber/5.7.0\";\n","\"use strict\";\n\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\n\nimport _BN from \"bn.js\";\nimport BN = _BN.BN;\n\nimport { Bytes, Hexable, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst _constructorGuard = { };\n\nconst MAX_SAFE = 0x1fffffffffffff;\n\n\nexport type BigNumberish = BigNumber | Bytes | bigint | string | number;\n\nexport function isBigNumberish(value: any): value is BigNumberish {\n return (value != null) && (\n BigNumber.isBigNumber(value) ||\n (typeof(value) === \"number\" && (value % 1) === 0) ||\n (typeof(value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof(value) === \"bigint\") ||\n isBytes(value)\n );\n}\n\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\n\nexport class BigNumber implements Hexable {\n readonly _hex: string;\n readonly _isBigNumber: boolean;\n\n constructor(constructorGuard: any, hex: string) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n\n this._hex = hex;\n this._isBigNumber = true;\n\n Object.freeze(this);\n }\n\n fromTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n\n toTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).toTwos(value));\n }\n\n abs(): BigNumber {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n\n add(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n\n sub(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n\n div(other: BigNumberish): BigNumber {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n\n mul(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n\n mod(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n\n pow(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n\n and(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n\n or(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n\n xor(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n\n mask(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n\n shl(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n\n shr(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n\n eq(other: BigNumberish): boolean {\n return toBN(this).eq(toBN(other));\n }\n\n lt(other: BigNumberish): boolean {\n return toBN(this).lt(toBN(other));\n }\n\n lte(other: BigNumberish): boolean {\n return toBN(this).lte(toBN(other));\n }\n\n gt(other: BigNumberish): boolean {\n return toBN(this).gt(toBN(other));\n }\n\n gte(other: BigNumberish): boolean {\n return toBN(this).gte(toBN(other));\n }\n\n isNegative(): boolean {\n return (this._hex[0] === \"-\");\n }\n\n isZero(): boolean {\n return toBN(this).isZero();\n }\n\n toNumber(): number {\n try {\n return toBN(this).toNumber();\n } catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n\n toBigInt(): bigint {\n try {\n return BigInt(this.toString());\n } catch (e) { }\n\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n\n toString(): string {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n } else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n } else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n }\n }\n return toBN(this).toString(10);\n }\n\n toHexString(): string {\n return this._hex;\n }\n\n toJSON(key?: string): any {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n\n static from(value: any): BigNumber {\n if (value instanceof BigNumber) { return value; }\n\n if (typeof(value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n\n if (typeof(value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n\n return BigNumber.from(String(value));\n }\n\n const anyValue = value;\n\n if (typeof(anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n\n if (anyValue) {\n\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof(hex) === \"string\") {\n return BigNumber.from(hex);\n }\n\n } else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n\n if (typeof(hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n\n static isBigNumber(value: any): value is BigNumber {\n return !!(value && value._isBigNumber);\n }\n}\n\n// Normalize the hex string\nfunction toHex(value: string | BN): string {\n\n // For BN, call on the hex string\n if (typeof(value) !== \"string\") {\n return toHex(value.toString(16));\n }\n\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") { logger.throwArgumentError(\"invalid hex\", \"value\", value); }\n\n // Call toHex on the positive component\n value = toHex(value);\n\n // Do not allow \"-0x00\"\n if (value === \"0x00\") { return value; }\n\n // Negate the value\n return \"-\" + value;\n }\n\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n\n // Normalize zero\n if (value === \"0x\") { return \"0x00\"; }\n\n // Make the string even length\n if (value.length % 2) { value = \"0x0\" + value.substring(2); }\n\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n\n return value;\n}\n\nfunction toBigNumber(value: BN): BigNumber {\n return BigNumber.from(toHex(value));\n}\n\nfunction toBN(value: BigNumberish): BN {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\n\nfunction throwFault(fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value != null) { params.value = value; }\n\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// value should have no prefix\nexport function _base36To16(value: string): string {\n return (new BN(value, 36)).toString(16);\n}\n\n// value should have no prefix\nexport function _base16To36(value: string): string {\n return (new BN(value, 16)).toString(36);\n}\n","\"use strict\";\n\nimport sha3 from \"js-sha3\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function keccak256(data: BytesLike): string {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n","export const version = \"rlp/5.7.0\";\n","\"use strict\";\n\n//See: https://github.com/ethereum/wiki/wiki/RLP\n\nimport { arrayify, BytesLike, hexlify, isBytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction arrayifyInteger(value: number): Array {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\n\nfunction unarrayifyInteger(data: Uint8Array, offset: number, length: number): number {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\n\nfunction _encode(object: Array | string): Array {\n if (Array.isArray(object)) {\n let payload: Array = [];\n object.forEach(function(child) {\n payload = payload.concat(_encode(child));\n });\n\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length)\n return payload;\n }\n\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n\n return length.concat(payload);\n\n }\n\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n\n const data: Array = Array.prototype.slice.call(arrayify(object));\n\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n\n } else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n\n return length.concat(data);\n}\n\nexport function encode(object: any): string {\n return hexlify(_encode(object));\n}\n\ntype Decoded = {\n result: any;\n consumed: number;\n};\n\nfunction _decodeChildren(data: Uint8Array, offset: number, childOffset: number, length: number): Decoded {\n const result = [];\n\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n\n result.push(decoded.result);\n\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n }\n\n return {consumed: (1 + length), result: result};\n}\n\n// returns { consumed: number, result: Object }\nfunction _decode(data: Uint8Array, offset: number): { consumed: number, result: any } {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n\n } else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1, length);\n\n } else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result }\n\n } else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result }\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\n\nexport function decode(data: BytesLike): any {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n\n","export const version = \"address/5.7.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction getChecksumAddress(address: string): string {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n address = address.toLowerCase();\n\n const chars = address.substring(2).split(\"\");\n\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n\n const hashed = arrayify(keccak256(expanded));\n\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n\n return \"0x\" + chars.join(\"\");\n}\n\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER: number = 0x1fffffffffffff;\n\nfunction log10(x: number): number {\n if (Math.log10) { return Math.log10(x); }\n return Math.log(x) / Math.LN10;\n}\n\n\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n\n// Create lookup table\nconst ibanLookup: { [character: string]: string } = { };\nfor (let i = 0; i < 10; i++) { ibanLookup[String(i)] = String(i); }\nfor (let i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }\n\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\n\nfunction ibanChecksum(address: string): string {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits){\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) { checksum = \"0\" + checksum; }\n\n return checksum;\n};\n\nexport function getAddress(address: string): string {\n let result = null;\n\n if (typeof(address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") { address = \"0x\" + address; }\n\n result = getChecksumAddress(address);\n\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n\n // Maybe ICAP? (we only support direct mode)\n } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n\n result = _base36To16(address.substring(4));\n while (result.length < 40) { result = \"0\" + result; }\n result = getChecksumAddress(\"0x\" + result);\n\n } else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n return result;\n}\n\nexport function isAddress(address: string): boolean {\n try {\n getAddress(address);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getIcapAddress(address: string): string {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) { base36 = \"0\" + base36; }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction: { from: string, nonce: BigNumberish }) {\n let from: string = null;\n try {\n from = getAddress(transaction.from);\n } catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n\n return getAddress(hexDataSlice(keccak256(encode([ from, nonce ])), 12));\n}\n\nexport function getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([ \"0xff\", getAddress(from), salt, initCodeHash ])), 12))\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.7.0\";\n","export const version = \"hash/5.7.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n\nexport enum UnicodeNormalizationForm {\n current = \"\",\n NFC = \"NFC\",\n NFD = \"NFD\",\n NFKC = \"NFKC\",\n NFKD = \"NFKD\"\n};\n\nexport enum Utf8ErrorReason {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n UNEXPECTED_CONTINUE = \"unexpected continuation byte\",\n\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n BAD_PREFIX = \"bad codepoint prefix\",\n\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n OVERRUN = \"string overrun\",\n\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n MISSING_CONTINUE = \"missing continuation byte\",\n\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n OUT_OF_RANGE = \"out of UTF-8 range\",\n\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n UTF16_SURROGATE = \"UTF-16 surrogate\",\n\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n OVERLONG = \"overlong representation\",\n};\n\n\nexport type Utf8ErrorFunc = (reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number) => number;\n\nfunction errorFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n return logger.throwArgumentError(`invalid codepoint at offset ${ offset }; ${ reason }`, \"bytes\", bytes);\n}\n\nfunction ignoreFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) { break; }\n i++;\n }\n return i;\n }\n\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n\n // Nothing to skip\n return 0;\n}\n\nfunction replaceFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n\n // Put the replacement character into the output\n output.push(0xfffd);\n\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n\n// Common error handing strategies\nexport const Utf8ErrorFuncs: { [ name: string ]: Utf8ErrorFunc } = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes: BytesLike, onError?: Utf8ErrorFunc): Array {\n if (onError == null) { onError = Utf8ErrorFuncs.error; }\n\n bytes = arrayify(bytes);\n\n const result: Array = [];\n let i = 0;\n\n // Invalid bytes are ignored\n while(i < bytes.length) {\n\n const c = bytes[i++];\n\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n\n // 1110 xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n\n } else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n } else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n };\n\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n\n // See above loop for invalid continuation byte\n if (res === null) { continue; }\n\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n result.push(res);\n }\n\n return result;\n}\n\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Uint8Array {\n\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n\n if (c < 0x80) {\n result.push(c);\n\n } else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n\n } else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n\n } else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n\n return arrayify(result);\n};\n\nfunction escapeChar(value: number) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\n\nexport function _toEscapedUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\"\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\n\nexport function _toUtf8String(codePoints: Array): string {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode(\n (((codePoint >> 10) & 0x3ff) + 0xd800),\n ((codePoint & 0x3ff) + 0xdc00)\n );\n }).join(\"\");\n}\n\nexport function toUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n\nexport function toUtf8CodePoints(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Array {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n","export const version = \"strings/5.7.0\";\n","import { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport function id(text: string): string {\n return keccak256(toUtf8Bytes(text));\n}\n","import { TypedDataDomain, TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { id } from \"./id\";\n\nconst padding = new Uint8Array(32);\npadding.fill(0);\n\nconst NegativeOne: BigNumber = BigNumber.from(-1);\nconst Zero: BigNumber = BigNumber.from(0);\nconst One: BigNumber = BigNumber.from(1);\nconst MaxUint256: BigNumber = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nfunction hexPadRight(value: BytesLike) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32\n if (padOffset) {\n return hexConcat([ bytes, padding.slice(padOffset) ]);\n }\n return hexlify(bytes);\n}\n\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\n\nconst domainFieldTypes: Record = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\n\nconst domainFieldNames: Array = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\n\nfunction checkString(key: string): (value: any) => string {\n return function (value: any){\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${ JSON.stringify(key) }`, `domain.${ key }`, value);\n }\n return value;\n }\n}\n\nconst domainChecks: Record any> = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function(value: any) {\n try {\n return BigNumber.from(value).toString()\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function(value: any) {\n try {\n return getAddress(value).toLowerCase();\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function(value: any) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) { throw new Error(\"bad length\"); }\n return hexlify(bytes);\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n}\n\nfunction getBaseEncoder(type: string): (value: any) => string {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n\n const boundsUpper = MaxUint256.mask(signed ? (width - 1): width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne): Zero;\n\n return function(value: BigNumberish) {\n const v = BigNumber.from(value);\n\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${ type }`, \"value\", value);\n }\n\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n\n return function(value: BytesLike) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${ type }`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n\n switch (type) {\n case \"address\": return function(value: string) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function(value: boolean) {\n return ((!value) ? hexFalse: hexTrue);\n };\n case \"bytes\": return function(value: BytesLike) {\n return keccak256(value);\n };\n case \"string\": return function(value: string) {\n return id(value);\n };\n }\n\n return null;\n}\n\nfunction encodeType(name: string, fields: Array): string {\n return `${ name }(${ fields.map(({ name, type }) => (type + \" \" + name)).join(\",\") })`;\n}\n\nexport class TypedDataEncoder {\n readonly primaryType: string;\n readonly types: Record>;\n\n readonly _encoderCache: Record string>;\n readonly _types: Record;\n\n constructor(types: Record>) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n\n defineReadOnly(this, \"_encoderCache\", { });\n defineReadOnly(this, \"_types\", { });\n\n // Link struct types to their direct child structs\n const links: Record> = { };\n\n // Link structs to structs which contain them as a child\n const parents: Record> = { };\n\n // Link all subtypes within a given struct\n const subtypes: Record> = { };\n\n Object.keys(types).forEach((type) => {\n links[type] = { };\n parents[type] = [ ];\n subtypes[type] = { }\n });\n\n for (const name in types) {\n\n const uniqueNames: Record = { };\n\n types[name].forEach((field) => {\n\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${ JSON.stringify(field.name) } in ${ JSON.stringify(name) }`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) { return ;}\n\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n } else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${ primaryTypes.map((t) => (JSON.stringify(t))).join(\", \") }`, \"types\", types);\n }\n\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n\n // Check for circular type references\n function checkCircular(type: string, found: Record) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(type) }`, \"types\", types);\n }\n\n found[type] = true;\n\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) { return; }\n\n // Recursively check children\n checkCircular(child, found);\n\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n\n delete found[type];\n }\n checkCircular(this.primaryType, { });\n\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n\n getEncoder(type: string): (value: any) => string {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n\n _getEncoder(type: string): (value: any) => string {\n\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return encoder; }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value: Array) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n\n return keccak256(hexConcat(result));\n };\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value: Record) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) { return keccak256(result); }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n }\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n encodeType(name: string): string {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${ JSON.stringify(name) }`, \"name\", name);\n }\n return result;\n }\n\n encodeData(type: string, value: any): string {\n return this.getEncoder(type)(value);\n }\n\n hashStruct(name: string, value: Record): string {\n return keccak256(this.encodeData(name, value));\n }\n\n encode(value: Record): string {\n return this.encodeData(this.primaryType, value);\n }\n\n hash(value: Record): string {\n return this.hashStruct(this.primaryType, value);\n }\n\n _visit(type: string, value: any, callback: (type: string, data: any) => any): any {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return callback(type, value); }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v: any) => this._visit(subtype, v, callback));\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, >{});\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n visit(value: Record, callback: (type: string, data: any) => any): any {\n return this._visit(this.primaryType, value, callback);\n }\n\n static from(types: Record>): TypedDataEncoder {\n return new TypedDataEncoder(types);\n }\n\n static getPrimaryType(types: Record>): string {\n return TypedDataEncoder.from(types).primaryType;\n }\n\n static hashStruct(name: string, types: Record>, value: Record): string {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n\n static hashDomain(domain: TypedDataDomain): string {\n const domainFields: Array = [ ];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${ JSON.stringify(name) }`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n\n static encode(domain: TypedDataDomain, types: Record>, value: Record): string {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n\n static hash(domain: TypedDataDomain, types: Record>, value: Record): string {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain: TypedDataDomain, types: Record>, value: Record, resolveName: (name: string) => Promise): Promise<{ domain: TypedDataDomain, value: any }> {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n\n // Look up all ENS names\n const ensCache: Record = { };\n\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n\n // Get a list of all the addresses\n encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n\n // Replace all ENS names with their address\n value = encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && ensCache[value]) { return ensCache[value]; }\n return value;\n });\n\n return { domain, value };\n }\n\n static getPayload(domain: TypedDataDomain, types: Record>, value: Record): any {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n\n // Derive the EIP712Domain Struct reference type\n const domainValues: Record = { };\n const domainTypes: Array<{ name: string, type:string }> = [ ];\n\n domainFieldNames.forEach((name) => {\n const value = (domain)[name];\n if (value == null) { return; }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n\n const encoder = TypedDataEncoder.from(types);\n\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n } else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n\n // Validate the data structures and types\n encoder.encode(value);\n\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type: string, value: any) => {\n\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n\n","import { BigNumber } from \"@ethersproject/bignumber\";\n\nconst NegativeOne: BigNumber = (/*#__PURE__*/BigNumber.from(-1));\nconst Zero: BigNumber = (/*#__PURE__*/BigNumber.from(0));\nconst One: BigNumber = (/*#__PURE__*/BigNumber.from(1));\nconst Two: BigNumber = (/*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther: BigNumber = (/*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nconst MinInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\"));\nconst MaxInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256,\n MinInt256,\n MaxInt256,\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","import _ec from \"elliptic\";\nvar EC = _ec.ec;\nexport { EC };\n//# sourceMappingURL=elliptic.js.map","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.7.0\";\n","export const version = \"signing-key/5.7.0\";\n","\"use strict\";\n\nimport { EC } from \"./elliptic\";\n\nimport { arrayify, BytesLike, hexDataLength, hexlify, hexZeroPad, Signature, SignatureLike, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet _curve: EC = null\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\n\nexport class SigningKey {\n\n readonly curve: string;\n\n readonly privateKey: string;\n readonly publicKey: string;\n readonly compressedPublicKey: string;\n\n //readonly address: string;\n\n readonly _isSigningKey: boolean;\n\n constructor(privateKey: BytesLike) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n\n _addPoint(other: BytesLike): string {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n\n signDigest(digest: BytesLike): Signature {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n })\n }\n\n computeSharedSecret(otherKey: BytesLike): string {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n\n static isSigningKey(value: any): value is SigningKey {\n return !!(value && value._isSigningKey);\n }\n}\n\nexport function recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\n\nexport function computePublicKey(key: BytesLike, compressed?: boolean): string {\n const bytes = arrayify(key);\n\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n\n } else if (bytes.length === 33) {\n if (compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n\n } else if (bytes.length === 65) {\n if (!compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n\n","export const version = \"transactions/5.7.0\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, DataOptions, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, SignatureLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type AccessList = Array<{ address: string, storageKeys: Array }>;\n\n// Input allows flexibility in describing an access list\nexport type AccessListish = AccessList |\n Array<[ string, Array ]> |\n Record>;\n\nexport enum TransactionTypes {\n legacy = 0,\n eip2930 = 1,\n eip1559 = 2,\n};\n\nexport type UnsignedTransaction = {\n to?: string;\n nonce?: number;\n\n gasLimit?: BigNumberish;\n gasPrice?: BigNumberish;\n\n data?: BytesLike;\n value?: BigNumberish;\n chainId?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessListish;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n}\n\nexport interface Transaction {\n hash?: string;\n\n to?: string;\n from?: string;\n nonce: number;\n\n gasLimit: BigNumber;\n gasPrice?: BigNumber;\n\n data: string;\n value: BigNumber;\n chainId: number;\n\n r?: string;\n s?: string;\n v?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessList;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumber;\n maxFeePerGas?: BigNumber;\n}\n\n///////////////////////////////\n\nfunction handleAddress(value: string): string {\n if (value === \"0x\") { return null; }\n return getAddress(value);\n}\n\nfunction handleNumber(value: string): BigNumber {\n if (value === \"0x\") { return Zero; }\n return BigNumber.from(value);\n}\n\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, type: true, value: true\n}\n\nexport function computeAddress(key: BytesLike | string): string {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\n\nexport function recoverAddress(digest: BytesLike, signature: SignatureLike): string {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\n\nfunction formatNumber(value: BigNumberish, name: string): Uint8Array {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\n\nfunction accessSetify(addr: string, storageKeys: Array): { address: string,storageKeys: Array } {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }:${ index }]`, storageKey)\n }\n return storageKey.toLowerCase();\n })\n };\n}\n\nexport function accessListify(value: AccessListish): AccessList {\n if (Array.isArray(value)) {\n return (] | { address: string, storageKeys: Array}>>value).map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${ index }]`, set);\n }\n return accessSetify(set[0], set[1])\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n\n const result: Array<{ address: string, storageKeys: Array }> = Object.keys(value).map((addr) => {\n const storageKeys: Record = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, >{ });\n return accessSetify(addr, Object.keys(storageKeys).sort())\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\n\nfunction formatAccessList(value: AccessListish): Array<[ string, Array ]> {\n return accessListify(value).map((set) => [ set.address, set.storageKeys ]);\n}\n\nfunction _serializeEip1559(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x02\", RLP.encode(fields)]);\n}\n\nfunction _serializeEip2930(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x01\", RLP.encode(fields)]);\n}\n\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n checkProperties(transaction, allowedTransactionKeys);\n\n const raw: Array = [];\n\n transactionFields.forEach(function(fieldInfo) {\n let value = (transaction)[fieldInfo.name] || ([]);\n const options: DataOptions = { };\n if (fieldInfo.numeric) { options.hexPad = \"left\"; }\n value = arrayify(hexlify(value, options));\n\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value );\n }\n }\n\n raw.push(hexlify(value));\n });\n\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n\n if (typeof(chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n\n } else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n } else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n\n return RLP.encode(raw);\n}\n\nexport function serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ transaction.type }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\n\nfunction _parseEipSignature(tx: Transaction, fields: Array, serialize: (tx: UnsignedTransaction) => string): void {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) { throw new Error(\"bad recid\"); }\n tx.v = recid;\n } catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n } catch (error) { }\n}\n\nfunction _parseEip1559(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx: Transaction = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n\n return tx;\n}\n\nfunction _parseEip2930(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n\n const tx: Transaction = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n\n return tx;\n}\n\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction: Uint8Array): Transaction {\n const transaction = RLP.decode(rawTransaction);\n\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n\n const tx: Transaction = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n\n // Legacy unsigned transaction\n if (transaction.length === 6) { return tx; }\n\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n\n } catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n\n } else {\n // Signed Transaction\n\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) { tx.chainId = 0; }\n\n let recoveryParam = tx.v - 27;\n\n const raw = transaction.slice(0, 6);\n\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n } catch (error) { }\n\n tx.hash = keccak256(rawTransaction);\n }\n\n tx.type = null;\n\n return tx;\n}\n\n\nexport function parse(rawTransaction: BytesLike): Transaction {\n const payload = arrayify(rawTransaction);\n\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) { return _parse(payload); }\n\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ payload[0] }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function decode(textData: string): Uint8Array {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\n\nexport function encode(data: BytesLike): string {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n\n\n","\"use strict\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nimport type { GetUrlResponse, Options } from \"./types\";\n\nexport { GetUrlResponse, Options };\n\nexport async function getUrl(href: string, options?: Options): Promise {\n if (options == null) { options = { }; }\n\n const request: RequestInit = {\n method: (options.method || \"GET\"),\n headers: (options.headers || { }),\n body: (options.body || undefined),\n };\n\n if (options.skipFetchSetup !== true) {\n request.mode = \"cors\"; // no-cors, cors, *same-origin\n request.cache = \"no-cache\"; // *default, no-cache, reload, force-cache, only-if-cached\n request.credentials = \"same-origin\"; // include, *same-origin, omit\n request.redirect = \"follow\"; // manual, *follow, error\n request.referrer = \"client\"; // no-referrer, *client\n };\n\n if (options.fetchOptions != null) {\n const opts = options.fetchOptions;\n if (opts.mode) { request.mode = (opts.mode); }\n if (opts.cache) { request.cache = (opts.cache); }\n if (opts.credentials) { request.credentials = (opts.credentials); }\n if (opts.redirect) { request.redirect = (opts.redirect); }\n if (opts.referrer) { request.referrer = opts.referrer; }\n }\n\n const response = await fetch(href, request);\n const body = await response.arrayBuffer();\n\n const headers: { [ name: string ]: string } = { };\n if (response.headers.forEach) {\n response.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n } else {\n (<() => Array>(((response.headers)).keys))().forEach((key) => {\n headers[key.toLowerCase()] = response.headers.get(key);\n });\n }\n\n return {\n headers: headers,\n statusCode: response.status,\n statusMessage: response.statusText,\n body: arrayify(new Uint8Array(body)),\n }\n}\n","\"use strict\";\n\nimport { decode as base64Decode, encode as base64Encode } from \"@ethersproject/base64\";\nimport { hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getUrl, GetUrlResponse, Options } from \"./geturl\";\n\nfunction staller(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\nfunction bodyify(value: any, type: string): string {\n if (value == null) { return null; }\n\n if (typeof(value) === \"string\") { return value; }\n\n if (isBytesLike(value)) {\n if (type && (type.split(\"/\")[0] === \"text\" || type.split(\";\")[0].trim() === \"application/json\")) {\n try {\n return toUtf8String(value);\n } catch (error) { };\n }\n return hexlify(value);\n }\n\n return value;\n}\n\n// Exported Types\nexport type ConnectionInfo = {\n url: string,\n headers?: { [key: string]: string | number }\n\n user?: string,\n password?: string,\n\n allowInsecureAuthentication?: boolean,\n allowGzip?: boolean,\n\n throttleLimit?: number,\n throttleSlotInterval?: number;\n throttleCallback?: (attempt: number, url: string) => Promise,\n\n skipFetchSetup?: boolean;\n fetchOptions?: Record;\n errorPassThrough?: boolean;\n\n timeout?: number,\n};\n\nexport interface OnceBlockable {\n once(eventName: \"block\", handler: () => void): void;\n}\n\nexport interface OncePollable {\n once(eventName: \"poll\", handler: () => void): void;\n}\n\nexport type PollOptions = {\n timeout?: number,\n floor?: number,\n ceiling?: number,\n interval?: number,\n retryLimit?: number,\n onceBlock?: OnceBlockable\n oncePoll?: OncePollable\n};\n\nexport type FetchJsonResponse = {\n statusCode: number;\n headers: { [ header: string ]: string };\n};\n\n\ntype Header = { key: string, value: string };\n\nfunction unpercent(value: string): Uint8Array {\n return toUtf8Bytes(value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n }));\n}\n\n// This API is still a work in progress; the future changes will likely be:\n// - ConnectionInfo => FetchDataRequest\n// - FetchDataRequest.body? = string | Uint8Array | { contentType: string, data: string | Uint8Array }\n// - If string => text/plain, Uint8Array => application/octet-stream (if content-type unspecified)\n// - FetchDataRequest.processFunc = (body: Uint8Array, response: FetchDataResponse) => T\n// For this reason, it should be considered internal until the API is finalized\nexport function _fetchData(connection: string | ConnectionInfo, body?: Uint8Array, processFunc?: (value: Uint8Array, response: FetchJsonResponse) => T): Promise {\n\n // How many times to retry in the event of a throttle\n const attemptLimit = (typeof(connection) === \"object\" && connection.throttleLimit != null) ? connection.throttleLimit: 12;\n logger.assertArgument((attemptLimit > 0 && (attemptLimit % 1) === 0),\n \"invalid connection throttle limit\", \"connection.throttleLimit\", attemptLimit);\n\n const throttleCallback = ((typeof(connection) === \"object\") ? connection.throttleCallback: null);\n const throttleSlotInterval = ((typeof(connection) === \"object\" && typeof(connection.throttleSlotInterval) === \"number\") ? connection.throttleSlotInterval: 100);\n logger.assertArgument((throttleSlotInterval > 0 && (throttleSlotInterval % 1) === 0),\n \"invalid connection throttle slot interval\", \"connection.throttleSlotInterval\", throttleSlotInterval);\n\n const errorPassThrough = ((typeof(connection) === \"object\") ? !!(connection.errorPassThrough): false);\n\n const headers: { [key: string]: Header } = { };\n\n let url: string = null;\n\n // @TODO: Allow ConnectionInfo to override some of these values\n const options: Options = {\n method: \"GET\",\n };\n\n let allow304 = false;\n\n let timeout = 2 * 60 * 1000;\n\n if (typeof(connection) === \"string\") {\n url = connection;\n\n } else if (typeof(connection) === \"object\") {\n if (connection == null || connection.url == null) {\n logger.throwArgumentError(\"missing URL\", \"connection.url\", connection);\n }\n\n url = connection.url;\n\n if (typeof(connection.timeout) === \"number\" && connection.timeout > 0) {\n timeout = connection.timeout;\n }\n\n if (connection.headers) {\n for (const key in connection.headers) {\n headers[key.toLowerCase()] = { key: key, value: String(connection.headers[key]) };\n if ([\"if-none-match\", \"if-modified-since\"].indexOf(key.toLowerCase()) >= 0) {\n allow304 = true;\n }\n }\n }\n\n options.allowGzip = !!connection.allowGzip;\n\n if (connection.user != null && connection.password != null) {\n if (url.substring(0, 6) !== \"https:\" && connection.allowInsecureAuthentication !== true) {\n logger.throwError(\n \"basic authentication requires a secure https url\",\n Logger.errors.INVALID_ARGUMENT,\n { argument: \"url\", url: url, user: connection.user, password: \"[REDACTED]\" }\n );\n }\n\n const authorization = connection.user + \":\" + connection.password;\n headers[\"authorization\"] = {\n key: \"Authorization\",\n value: \"Basic \" + base64Encode(toUtf8Bytes(authorization))\n };\n }\n\n if (connection.skipFetchSetup != null) {\n options.skipFetchSetup = !!connection.skipFetchSetup;\n }\n\n if (connection.fetchOptions != null) {\n options.fetchOptions = shallowCopy(connection.fetchOptions);\n }\n }\n\n const reData = new RegExp(\"^data:([^;:]*)?(;base64)?,(.*)$\", \"i\");\n const dataMatch = ((url) ? url.match(reData): null);\n if (dataMatch) {\n try {\n const response = {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: { \"content-type\": (dataMatch[1] || \"text/plain\")},\n body: (dataMatch[2] ? base64Decode(dataMatch[3]): unpercent(dataMatch[3]))\n };\n\n let result: T = response.body;\n if (processFunc) {\n result = processFunc(response.body, response);\n }\n return Promise.resolve(result);\n\n } catch (error) {\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(dataMatch[1], dataMatch[2]),\n error: error,\n requestBody: null,\n requestMethod: \"GET\",\n url: url\n });\n }\n }\n\n if (body) {\n options.method = \"POST\";\n options.body = body;\n if (headers[\"content-type\"] == null) {\n headers[\"content-type\"] = { key: \"Content-Type\", value: \"application/octet-stream\" };\n }\n if (headers[\"content-length\"] == null) {\n headers[\"content-length\"] = { key: \"Content-Length\", value: String(body.length) };\n }\n }\n\n const flatHeaders: { [ key: string ]: string } = { };\n Object.keys(headers).forEach((key) => {\n const header = headers[key];\n flatHeaders[header.key] = header.value;\n });\n options.headers = flatHeaders;\n\n const runningTimeout = (function() {\n let timer: NodeJS.Timer = null;\n const promise: Promise = new Promise(function(resolve, reject) {\n if (timeout) {\n timer = setTimeout(() => {\n if (timer == null) { return; }\n timer = null;\n\n reject(logger.makeError(\"timeout\", Logger.errors.TIMEOUT, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n timeout: timeout,\n url: url\n }));\n }, timeout);\n }\n });\n\n const cancel = function() {\n if (timer == null) { return; }\n clearTimeout(timer);\n timer = null;\n }\n\n return { promise, cancel };\n })();\n\n const runningFetch = (async function() {\n\n for (let attempt = 0; attempt < attemptLimit; attempt++) {\n let response: GetUrlResponse = null;\n\n try {\n response = await getUrl(url, options);\n\n if (attempt < attemptLimit) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Redirection; for now we only support absolute locataions\n const location = response.headers.location || \"\";\n if (options.method === \"GET\" && location.match(/^https:/)) {\n url = response.headers.location;\n continue;\n }\n\n } else if (response.statusCode === 429) {\n // Exponential back-off throttling\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n let stall = 0;\n\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof(retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n stall = parseInt(retryAfter) * 1000;\n } else {\n stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n }\n\n //console.log(\"Stalling 429\");\n await staller(stall);\n continue;\n }\n }\n }\n\n } catch (error) {\n response = (error).response;\n if (response == null) {\n runningTimeout.cancel();\n logger.throwError(\"missing response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n serverError: error,\n url: url\n });\n }\n }\n\n\n let body = response.body;\n\n if (allow304 && response.statusCode === 304) {\n body = null;\n } else if (!errorPassThrough && (response.statusCode < 200 || response.statusCode >= 300)) {\n runningTimeout.cancel();\n logger.throwError(\"bad response\", Logger.errors.SERVER_ERROR, {\n status: response.statusCode,\n headers: response.headers,\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n\n if (processFunc) {\n try {\n const result = await processFunc(body, response);\n runningTimeout.cancel();\n return result;\n\n } catch (error) {\n // Allow the processFunc to trigger a throttle\n if (error.throttleRetry && attempt < attemptLimit) {\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n const timeout = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n //console.log(\"Stalling callback\");\n await staller(timeout);\n continue;\n }\n }\n\n runningTimeout.cancel();\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n error: error,\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n }\n\n runningTimeout.cancel();\n\n // If we had a processFunc, it either returned a T or threw above.\n // The \"body\" is now a Uint8Array.\n return (body);\n }\n\n return logger.throwError(\"failed response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n })();\n\n return Promise.race([ runningTimeout.promise, runningFetch ]);\n}\n\nexport function fetchJson(connection: string | ConnectionInfo, json?: string, processFunc?: (value: any, response: FetchJsonResponse) => any): Promise {\n let processJsonFunc = (value: Uint8Array, response: FetchJsonResponse) => {\n let result: any = null;\n if (value != null) {\n try {\n result = JSON.parse(toUtf8String(value));\n } catch (error) {\n logger.throwError(\"invalid JSON\", Logger.errors.SERVER_ERROR, {\n body: value,\n error: error\n });\n }\n }\n\n if (processFunc) {\n result = processFunc(result, response);\n }\n\n return result;\n }\n\n // If we have json to send, we must\n // - add content-type of application/json (unless already overridden)\n // - convert the json to bytes\n let body: Uint8Array = null;\n if (json != null) {\n body = toUtf8Bytes(json);\n\n // Create a connection with the content-type set for JSON\n const updated: ConnectionInfo = (typeof(connection) === \"string\") ? ({ url: connection }): shallowCopy(connection);\n if (updated.headers) {\n const hasContentType = (Object.keys(updated.headers).filter((k) => (k.toLowerCase() === \"content-type\")).length) !== 0;\n if (!hasContentType) {\n updated.headers = shallowCopy(updated.headers);\n updated.headers[\"content-type\"] = \"application/json\";\n }\n } else {\n updated.headers = { \"content-type\": \"application/json\" };\n }\n connection = updated;\n }\n\n return _fetchData(connection, body, processJsonFunc);\n}\n\nexport function poll(func: () => Promise, options?: PollOptions): Promise {\n if (!options) { options = {}; }\n options = shallowCopy(options);\n if (options.floor == null) { options.floor = 0; }\n if (options.ceiling == null) { options.ceiling = 10000; }\n if (options.interval == null) { options.interval = 250; }\n\n return new Promise(function(resolve, reject) {\n\n let timer: NodeJS.Timer = null;\n let done: boolean = false;\n\n // Returns true if cancel was successful. Unsuccessful cancel means we're already done.\n const cancel = (): boolean => {\n if (done) { return false; }\n done = true;\n if (timer) { clearTimeout(timer); }\n return true;\n };\n\n if (options.timeout) {\n timer = setTimeout(() => {\n if (cancel()) { reject(new Error(\"timeout\")); }\n }, options.timeout)\n }\n\n const retryLimit = options.retryLimit;\n\n let attempt = 0;\n function check() {\n return func().then(function(result) {\n\n // If we have a result, or are allowed null then we're done\n if (result !== undefined) {\n if (cancel()) { resolve(result); }\n\n } else if (options.oncePoll) {\n options.oncePoll.once(\"poll\", check);\n\n } else if (options.onceBlock) {\n options.onceBlock.once(\"block\", check);\n\n // Otherwise, exponential back-off (up to 10s) our next request\n } else if (!done) {\n attempt++;\n if (attempt > retryLimit) {\n if (cancel()) { reject(new Error(\"retry limit reached\")); }\n return;\n }\n\n let timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n if (timeout < options.floor) { timeout = options.floor; }\n if (timeout > options.ceiling) { timeout = options.ceiling; }\n\n setTimeout(check, timeout);\n }\n\n return null;\n }, function(error) {\n if (cancel()) { reject(error); }\n });\n }\n check();\n });\n}\n\n","export const version = \"web/5.7.1\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.7.0\";\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { BytesLike, isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { Deferrable, Description, defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { AccessListish, Transaction } from \"@ethersproject/transactions\";\nimport { OnceBlockable } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\n\nexport type TransactionRequest = {\n to?: string,\n from?: string,\n nonce?: BigNumberish,\n\n gasLimit?: BigNumberish,\n gasPrice?: BigNumberish,\n\n data?: BytesLike,\n value?: BigNumberish,\n chainId?: number\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n\n customData?: Record;\n ccipReadEnabled?: boolean;\n}\n\nexport interface TransactionResponse extends Transaction {\n hash: string;\n\n // Only if a transaction has been mined\n blockNumber?: number,\n blockHash?: string,\n timestamp?: number,\n\n confirmations: number,\n\n // Not optional (as it is in Transaction)\n from: string;\n\n // The raw transaction\n raw?: string,\n\n // This function waits until the transaction has been mined\n wait: (confirmations?: number) => Promise\n};\n\nexport type BlockTag = string | number;\n\nexport interface _Block {\n hash: string;\n parentHash: string;\n number: number;\n\n timestamp: number;\n nonce: string;\n difficulty: number;\n _difficulty: BigNumber;\n\n gasLimit: BigNumber;\n gasUsed: BigNumber;\n\n miner: string;\n extraData: string;\n\n baseFeePerGas?: null | BigNumber;\n}\n\nexport interface Block extends _Block {\n transactions: Array;\n}\n\nexport interface BlockWithTransactions extends _Block {\n transactions: Array;\n}\n\n\nexport interface Log {\n blockNumber: number;\n blockHash: string;\n transactionIndex: number;\n\n removed: boolean;\n\n address: string;\n data: string;\n\n topics: Array;\n\n transactionHash: string;\n logIndex: number;\n}\n\nexport interface TransactionReceipt {\n to: string;\n from: string;\n contractAddress: string,\n transactionIndex: number,\n root?: string,\n gasUsed: BigNumber,\n logsBloom: string,\n blockHash: string,\n transactionHash: string,\n logs: Array,\n blockNumber: number,\n confirmations: number,\n cumulativeGasUsed: BigNumber,\n effectiveGasPrice: BigNumber,\n byzantium: boolean,\n type: number;\n status?: number\n};\n\nexport interface FeeData {\n lastBaseFeePerGas: null | BigNumber;\n maxFeePerGas: null | BigNumber;\n maxPriorityFeePerGas: null | BigNumber;\n gasPrice: null | BigNumber;\n}\n\nexport interface EventFilter {\n address?: string;\n topics?: Array | null>;\n}\n\nexport interface Filter extends EventFilter {\n fromBlock?: BlockTag,\n toBlock?: BlockTag,\n}\n\nexport interface FilterByBlockHash extends EventFilter {\n blockHash?: string;\n}\n\n//export type CallTransactionable = {\n// call(transaction: TransactionRequest): Promise;\n//};\n\nexport abstract class ForkEvent extends Description {\n readonly expiry: number;\n\n readonly _isForkEvent?: boolean;\n\n static isForkEvent(value: any): value is ForkEvent {\n return !!(value && value._isForkEvent);\n }\n}\n\nexport class BlockForkEvent extends ForkEvent {\n readonly blockHash: string;\n\n readonly _isBlockForkEvent?: boolean;\n\n constructor(blockHash: string, expiry?: number) {\n if (!isHexString(blockHash, 32)) {\n logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n }\n\n super({\n _isForkEvent: true,\n _isBlockForkEvent: true,\n expiry: (expiry || 0),\n blockHash: blockHash\n });\n }\n}\n\nexport class TransactionForkEvent extends ForkEvent {\n readonly hash: string;\n\n readonly _isTransactionOrderForkEvent?: boolean;\n\n constructor(hash: string, expiry?: number) {\n if (!isHexString(hash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionForkEvent: true,\n expiry: (expiry || 0),\n hash: hash\n });\n }\n}\n\nexport class TransactionOrderForkEvent extends ForkEvent {\n readonly beforeHash: string;\n readonly afterHash: string;\n\n constructor(beforeHash: string, afterHash: string, expiry?: number) {\n if (!isHexString(beforeHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"beforeHash\", beforeHash);\n }\n if (!isHexString(afterHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"afterHash\", afterHash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionOrderForkEvent: true,\n expiry: (expiry || 0),\n beforeHash: beforeHash,\n afterHash: afterHash\n });\n }\n}\n\nexport type EventType = string | Array> | EventFilter | ForkEvent;\n\nexport type Listener = (...args: Array) => void;\n\n///////////////////////////////\n// Exported Abstracts\nexport abstract class Provider implements OnceBlockable {\n\n // Network\n abstract getNetwork(): Promise;\n\n // Latest State\n abstract getBlockNumber(): Promise;\n abstract getGasPrice(): Promise;\n async getFeeData(): Promise {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: this.getGasPrice().catch((error) => {\n // @TODO: Why is this now failing on Calaveras?\n //console.log(error);\n return null;\n })\n });\n\n let lastBaseFeePerGas = null, maxFeePerGas = null, maxPriorityFeePerGas = null;\n\n if (block && block.baseFeePerGas) {\n // We may want to compute this more accurately in the future,\n // using the formula \"check if the base fee is correct\".\n // See: https://eips.ethereum.org/EIPS/eip-1559\n lastBaseFeePerGas = block.baseFeePerGas;\n maxPriorityFeePerGas = BigNumber.from(\"1500000000\");\n maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);\n }\n\n return { lastBaseFeePerGas, maxFeePerGas, maxPriorityFeePerGas, gasPrice };\n }\n\n // Account\n abstract getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise ;\n abstract getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise;\n\n // Execution\n abstract sendTransaction(signedTransaction: string | Promise): Promise;\n abstract call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise;\n abstract estimateGas(transaction: Deferrable): Promise;\n\n // Queries\n abstract getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getTransaction(transactionHash: string): Promise;\n abstract getTransactionReceipt(transactionHash: string): Promise;\n\n // Bloom-filter Queries\n abstract getLogs(filter: Filter): Promise>;\n\n // ENS\n abstract resolveName(name: string | Promise): Promise;\n abstract lookupAddress(address: string | Promise): Promise;\n\n // Event Emitter (ish)\n abstract on(eventName: EventType, listener: Listener): Provider;\n abstract once(eventName: EventType, listener: Listener): Provider;\n abstract emit(eventName: EventType, ...args: Array): boolean\n abstract listenerCount(eventName?: EventType): number;\n abstract listeners(eventName?: EventType): Array;\n abstract off(eventName: EventType, listener?: Listener): Provider;\n abstract removeAllListeners(eventName?: EventType): Provider;\n\n // Alias for \"on\"\n addListener(eventName: EventType, listener: Listener): Provider {\n return this.on(eventName, listener);\n }\n\n // Alias for \"off\"\n removeListener(eventName: EventType, listener: Listener): Provider {\n return this.off(eventName, listener);\n }\n\n // @TODO: This *could* be implemented here, but would pull in events...\n abstract waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise;\n\n readonly _isProvider: boolean;\n\n constructor() {\n logger.checkAbstract(new.target, Provider);\n defineReadOnly(this, \"_isProvider\", true);\n }\n\n static isProvider(value: any): value is Provider {\n return !!(value && value._isProvider);\n }\n\n/*\n static getResolver(network: Network, callable: CallTransactionable, namehash: string): string {\n // No ENS...\n if (!network.ensAddress) {\n errors.throwError(\n \"network does support ENS\",\n errors.UNSUPPORTED_OPERATION,\n { operation: \"ENS\", network: network.name }\n );\n }\n\n // Not a namehash\n if (!isHexString(namehash, 32)) {\n errors.throwArgumentError(\"invalid name hash\", \"namehash\", namehash);\n }\n\n // keccak256(\"resolver(bytes32)\")\n let data = \"0x0178b8bf\" + namehash.substring(2);\n let transaction = { to: network.ensAddress, data: data };\n\n return provider.call(transaction).then((data) => {\n return provider.formatter.callAddress(data);\n });\n }\n\n static resolveNamehash(network: Network, callable: CallTransactionable, namehash: string): string {\n return this.getResolver(network, callable, namehash).then((resolverAddress) => {\n if (!resolverAddress) { return null; }\n\n // keccak256(\"addr(bytes32)\")\n let data = \"0x3b3b57de\" + namehash(name).substring(2);\n let transaction = { to: resolverAddress, data: data };\n return callable.call(transaction).then((data) => {\n return this.formatter.callAddress(data);\n });\n\n })\n }\n*/\n}\n","export const version = \"abstract-provider/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.7.0\";\n","/**\n * var basex = require(\"base-x\");\n *\n * This implementation is heavily based on base-x. The main reason to\n * deviate was to prevent the dependency of Buffer.\n *\n * Contributors:\n *\n * base-x encoding\n * Forked from https://github.com/cryptocoinjs/bs58\n * Originally written by Mike Hearn for BitcoinJ\n * Copyright (c) 2011 Google Inc\n * Ported to JavaScript by Stefan Thomas\n * Merged Buffer refactorings from base58-native by Stephen Pair\n * Copyright (c) 2013 BitPay Inc\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n */\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nexport class BaseX {\n readonly alphabet: string;\n readonly base: number;\n\n _alphabetMap: { [ character: string ]: number };\n _leader: string;\n\n constructor(alphabet: string) {\n defineReadOnly(this, \"alphabet\", alphabet);\n defineReadOnly(this, \"base\", alphabet.length);\n\n defineReadOnly(this, \"_alphabetMap\", { });\n defineReadOnly(this, \"_leader\", alphabet.charAt(0));\n\n // pre-compute lookup table\n for (let i = 0; i < alphabet.length; i++) {\n this._alphabetMap[alphabet.charAt(i)] = i;\n }\n }\n\n encode(value: BytesLike): string {\n let source = arrayify(value);\n\n if (source.length === 0) { return \"\"; }\n\n let digits = [ 0 ]\n for (let i = 0; i < source.length; ++i) {\n let carry = source[i];\n for (let j = 0; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % this.base;\n carry = (carry / this.base) | 0;\n }\n\n while (carry > 0) {\n digits.push(carry % this.base);\n carry = (carry / this.base) | 0;\n }\n }\n\n let string = \"\"\n\n // deal with leading zeros\n for (let k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n string += this._leader;\n }\n\n // convert digits to a string\n for (let q = digits.length - 1; q >= 0; --q) {\n string += this.alphabet[digits[q]];\n }\n\n return string;\n }\n\n decode(value: string): Uint8Array {\n if (typeof(value) !== \"string\") {\n throw new TypeError(\"Expected String\");\n }\n\n let bytes: Array = [];\n if (value.length === 0) { return new Uint8Array(bytes); }\n\n bytes.push(0);\n for (let i = 0; i < value.length; i++) {\n let byte = this._alphabetMap[value[i]];\n\n if (byte === undefined) {\n throw new Error(\"Non-base\" + this.base + \" character\");\n }\n\n let carry = byte;\n for (let j = 0; j < bytes.length; ++j) {\n carry += bytes[j] * this.base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while (carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for (let k = 0; value[k] === this._leader && k < value.length - 1; ++k) {\n bytes.push(0)\n }\n\n return arrayify(new Uint8Array(bytes.reverse()))\n }\n}\n\nconst Base32 = new BaseX(\"abcdefghijklmnopqrstuvwxyz234567\");\nconst Base58 = new BaseX(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\");\n\nexport { Base32, Base58 };\n\n//console.log(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\"))\n//console.log(Base58.encode(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\")))\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nexport type Numbers = Uint8Array | Array;\nexport type NextFunc = (...args: Array) => number;\n\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array: Array, depth?: number): Array {\n if (depth == null) { depth = 1; }\n const result: Array = [];\n\n const forEach = result.forEach;\n\n const flatDeep = function (arr: Array, depth: number) {\n forEach.call(arr, function (val: any) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n } else {\n result.push(val);\n }\n });\n };\n\n flatDeep(array, depth);\n return result;\n}\n\nfunction fromEntries(array: Array<[T, U]>): Record {\n const result: Record = >{ };\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\n\nexport function decode_arithmetic(bytes: Numbers): Array {\n\tlet pos = 0;\n\tfunction u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n\t\n\t// decode the frequency table\n\tlet symbol_count = u16();\n\tlet total = 1;\n\tlet acc = [0, 1]; // first symbol has frequency 1\n\tfor (let i = 1; i < symbol_count; i++) {\n\t\tacc.push(total += u16());\n\t}\n\n\t// skip the sized-payload that the last 3 symbols index into\n\tlet skip = u16();\n\tlet pos_payload = pos;\n\tpos += skip;\n\n\tlet read_width = 0;\n\tlet read_buffer = 0; \n\tfunction read_bit() {\n\t\tif (read_width == 0) {\n\t\t\t// this will read beyond end of buffer\n\t\t\t// but (undefined|0) => zero pad\n\t\t\tread_buffer = (read_buffer << 8) | bytes[pos++];\n\t\t\tread_width = 8;\n\t\t}\n\t\treturn (read_buffer >> --read_width) & 1;\n\t}\n\n\tconst N = 31;\n\tconst FULL = 2**N;\n\tconst HALF = FULL >>> 1;\n\tconst QRTR = HALF >> 1;\n\tconst MASK = FULL - 1;\n\n\t// fill register\n\tlet register = 0;\n\tfor (let i = 0; i < N; i++) register = (register << 1) | read_bit();\n\n\tlet symbols = [];\n\tlet low = 0;\n\tlet range = FULL; // treat like a float\n\twhile (true) {\n\t\tlet value = Math.floor((((register - low + 1) * total) - 1) / range);\n\t\tlet start = 0;\n\t\tlet end = symbol_count;\n\t\twhile (end - start > 1) { // binary search\n\t\t\tlet mid = (start + end) >>> 1;\n\t\t\tif (value < acc[mid]) {\n\t\t\t\tend = mid;\n\t\t\t} else {\n\t\t\t\tstart = mid;\n\t\t\t}\n\t\t}\n\t\tif (start == 0) break; // first symbol is end mark\n\t\tsymbols.push(start);\n\t\tlet a = low + Math.floor(range * acc[start] / total);\n\t\tlet b = low + Math.floor(range * acc[start+1] / total) - 1\n\t\twhile (((a ^ b) & HALF) == 0) {\n\t\t\tregister = (register << 1) & MASK | read_bit();\n\t\t\ta = (a << 1) & MASK;\n\t\t\tb = (b << 1) & MASK | 1;\n\t\t}\n\t\twhile (a & ~b & QRTR) {\n\t\t\tregister = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n\t\t\ta = (a << 1) ^ HALF;\n\t\t\tb = ((b ^ HALF) << 1) | HALF | 1;\n\t\t}\n\t\tlow = a;\n\t\trange = 1 + b - a;\n\t}\n\tlet offset = symbol_count - 4;\n\treturn symbols.map(x => { // index into payload\n\t\tswitch (x - offset) {\n\t\t\tcase 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 1: return offset + bytes[pos_payload++];\n\t\t\tdefault: return x - 1;\n\t\t}\n\t});\n}\t\n\n\n// returns an iterator which returns the next symbol\nexport function read_payload(v: Numbers): NextFunc {\n\tlet pos = 0;\n\treturn () => v[pos++];\n}\nexport function read_compressed_payload(bytes: Numbers): NextFunc {\n\treturn read_payload(decode_arithmetic(bytes));\n}\n\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i: number): number { \n\treturn (i & 1) ? (~i >> 1) : (i >> 1);\n}\n\nfunction read_counts(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0; i < n; i++) v[i] = 1 + next();\n\treturn v;\n}\n\nfunction read_ascending(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = -1; i < n; i++) v[i] = x += 1 + next();\n\treturn v;\n}\n\nfunction read_deltas(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = 0; i < n; i++) v[i] = x += signed(next());\n\treturn v;\n}\n\nexport function read_member_array(next: NextFunc, lookup?: Record) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next: NextFunc): Record> {\n\tlet ret = [];\n\twhile (true) {\n\t\tlet w = next();\n\t\tif (w == 0) break;\n\t\tret.push(read_linear_table(w, next));\n\t}\n\twhile (true) {\n\t\tlet w = next() - 1;\n\t\tif (w < 0) break;\n\t\tret.push(read_replacement_table(w, next));\n\t}\n\treturn fromEntries>(flat(ret));\n}\n\nexport function read_zero_terminated_array(next: NextFunc): Array {\n\tlet v = [];\n\twhile (true) {\n\t\tlet i = next();\n\t\tif (i == 0) break;\n\t\tv.push(i);\n\t}\n\treturn v;\n}\n\nfunction read_transposed(n: number, w: number, next: NextFunc): Array> {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\n\n\nfunction read_linear_table(w: number, next: NextFunc): Array>> {\n\tlet dx = 1 + next();\n\tlet dy = next();\n\tlet vN = read_zero_terminated_array(next);\n\tlet m = read_transposed(vN.length, 1+w, next);\n\treturn flat(m.map((v, i) => {\n\t const x = v[0], ys = v.slice(1);\n\t\t//let [x, ...ys] = v;\n\t\t//return Array(vN[i]).fill().map((_, j) => {\n\t\treturn Array(vN[i]).fill(undefined).map((_, j) => {\n\t\t\tlet j_dy = j * dy;\n\t\t\treturn [x + j * dx, ys.map(y => y + j_dy)];\n\t\t});\n\t}));\n}\n\nfunction read_replacement_table(w: number, next: NextFunc): Array<[ number, Array ]> {\n\tlet n = 1 + next();\n\tlet m = read_transposed(n, 1+w, next);\n\treturn m.map(v => [v[0], v.slice(1)]);\n}\n\nexport type Branch = {\n set: Set;\n node: Node;\n};\n\nexport type Node = {\n branches: Array;\n valid: number;\n fe0f: boolean;\n save: boolean;\n check: boolean;\n};\n\nexport function read_emoji_trie(next: NextFunc): Node {\n\tlet sorted = read_member_array(next).sort((a, b) => a - b);\n\treturn read();\n\tfunction read(): Node {\n\t\tlet branches = [];\n\t\twhile (true) {\n\t\t\tlet keys = read_member_array(next, sorted);\n\t\t\tif (keys.length == 0) break;\n\t\t\tbranches.push({set: new Set(keys), node: read()});\n\t\t}\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n \t\tlet temp = next();\n \t\tlet valid = temp % 3;\n \t\ttemp = (temp / 3)|0;\n \t\tlet fe0f = !!(temp & 1);\n \t\ttemp >>= 1;\n \t\tlet save = temp == 1;\n \t\tlet check = temp == 2;\n \t\treturn {branches, valid, fe0f, save, check};\n\t}\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\n\nimport { getData } from './include.js';\nconst r = getData();\n\nimport {read_member_array, read_mapped_map, read_emoji_trie} from './decoder.js';\n\n// @TODO: This should be lazily loaded\n\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\n\nfunction explode_cp(name: string): Array {\n return toUtf8CodePoints(name);\n}\n\nfunction filter_fe0f(cps: Array): Array {\n return cps.filter(cp => cp != 0xFE0F);\n}\n\nexport function ens_normalize_post_check(name: string): string {\n\tfor (let label of name.split('.')) {\n\t\tlet cps = explode_cp(label);\n\t\ttry {\n\t\t\tfor (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n\t\t\t\tif (cps[i] !== UNDERSCORE) {\n\t\t\t\t\tthrow new Error(`underscore only allowed at start`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n\t\t\t\tthrow new Error(`invalid label extension`);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tthrow new Error(`Invalid label \"${label}\": ${err.message}`);\n\t\t}\n\t}\n\treturn name;\n}\n\nexport function ens_normalize(name: string): string {\n\treturn ens_normalize_post_check(normalize(name, filter_fe0f));\n}\n\nfunction normalize(name: string, emoji_filter: (a: Array) => Array): string {\n\tlet input = explode_cp(name).reverse(); // flip for pop\n\tlet output = [];\n\twhile (input.length) {\t\t\n\t\tlet emoji = consume_emoji_reversed(input);\n\t\tif (emoji) {\n\t\t\toutput.push(...emoji_filter(emoji));\n\t\t\tcontinue;\n\t\t}\n\t\tlet cp = input.pop();\n\t\tif (VALID.has(cp)) {\n\t\t\toutput.push(cp);\n\t\t\tcontinue;\n\t\t} \n\t\tif (IGNORED.has(cp)) {\n\t\t\tcontinue;\n\t\t}\n\t\tlet cps = MAPPED[cp];\n\t\tif (cps) {\n\t\t\toutput.push(...cps);\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n\t}\n\treturn ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\n\nfunction nfc(s: string): string {\n return s.normalize('NFC');\n}\n\nfunction consume_emoji_reversed(cps: Array, eaten?: Array) {\n\tlet node = EMOJI_ROOT;\n\tlet emoji;\n\tlet saved;\n\tlet stack = [];\n\tlet pos = cps.length;\n\tif (eaten) eaten.length = 0; // clear input buffer (if needed)\n\twhile (pos) {\n\t\tlet cp = cps[--pos];\n\t\tnode = node.branches.find(x => x.set.has(cp))?.node;\n\t\tif (!node) break;\n\t\tif (node.save) { // remember\n\t\t\tsaved = cp;\n\t\t} else if (node.check) { // check exclusion\n\t\t\tif (cp === saved) break;\n\t\t}\n\t\tstack.push(cp);\n\t\tif (node.fe0f) {\n\t\t\tstack.push(0xFE0F);\n\t\t\tif (pos > 0 && cps[pos - 1] == 0xFE0F) pos--; // consume optional FE0F\n\t\t}\n\t\tif (node.valid) { // this is a valid emoji (so far)\n\t\t\temoji = stack.slice(); // copy stack\n\t\t\tif (node.valid == 2) emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n\t\t\tif (eaten) eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n\t\t\tcps.length = pos; // truncate\n\t\t}\n\t}\n\treturn emoji;\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { decode } from \"@ethersproject/base64\";\n\nimport {read_compressed_payload} from './decoder.js';\n\nexport function getData(): () => number {\n return read_compressed_payload(decode('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'));\n}\n\n","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { ens_normalize } from \"./ens-normalize/lib\";\n\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\n\nfunction checkComponent(comp: Uint8Array): Uint8Array {\n if (comp.length === 0) { throw new Error(\"invalid ENS name; empty component\"); }\n return comp;\n}\n\nfunction ensNameSplit(name: string): Array {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps: Array = [ ];\n\n if (name.length === 0) { return comps; }\n\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n\n // There was a stray separator at the end of the name\n if (last >= bytes.length) { throw new Error(\"invalid ENS name; empty component\"); }\n\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\n\nexport function ensNormalize(name: string): string {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\n\nexport function isValidName(name: string): boolean {\n try {\n return (ensNameSplit(name).length !== 0);\n } catch (error) { }\n return false;\n}\n\nexport function namehash(name: string): string {\n /* istanbul ignore if */\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n\n let result: string | Uint8Array = Zeros;\n\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n\n return hexlify(result);\n}\n\nexport function dnsEncode(name: string): string {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n\n }))) + \"00\";\n}\n","export const version = \"networks/5.7.1\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Network, Networkish } from \"./types\";\n\nexport {\n Network,\n Networkish\n};\n\ntype DefaultProviderFunc = (providers: any, options?: any) => any;\n\ninterface Renetworkable extends DefaultProviderFunc {\n renetwork: (network: Network) => DefaultProviderFunc;\n};\n\nfunction isRenetworkable(value: any): value is Renetworkable {\n return (value && typeof(value.renetwork) === \"function\");\n}\n\nfunction ethDefaultProvider(network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (options == null) { options = { }; }\n const providerList: Array = [];\n\n if (providers.InfuraProvider && options.infura !== \"-\") {\n try {\n providerList.push(new providers.InfuraProvider(network, options.infura));\n } catch(error) { }\n }\n\n if (providers.EtherscanProvider && options.etherscan !== \"-\") {\n try {\n providerList.push(new providers.EtherscanProvider(network, options.etherscan));\n } catch(error) { }\n }\n\n if (providers.AlchemyProvider && options.alchemy !== \"-\") {\n try {\n providerList.push(new providers.AlchemyProvider(network, options.alchemy));\n } catch(error) { }\n }\n\n if (providers.PocketProvider && options.pocket !== \"-\") {\n // These networks are currently faulty on Pocket as their\n // network does not handle the Berlin hardfork, which is\n // live on these ones.\n // @TODO: This goes away once Pocket has upgraded their nodes\n const skip = [ \"goerli\", \"ropsten\", \"rinkeby\", \"sepolia\" ];\n try {\n const provider = new providers.PocketProvider(network, options.pocket);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providers.CloudflareProvider && options.cloudflare !== \"-\") {\n try {\n providerList.push(new providers.CloudflareProvider(network));\n } catch(error) { }\n }\n\n if (providers.AnkrProvider && options.ankr !== \"-\") {\n try {\n const skip = [ \"ropsten\" ];\n const provider = new providers.AnkrProvider(network, options.ankr);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providerList.length === 0) { return null; }\n\n if (providers.FallbackProvider) {\n let quorum = 1;\n if (options.quorum != null) {\n quorum = options.quorum;\n } else if (network === \"homestead\") {\n quorum = 2;\n }\n return new providers.FallbackProvider(providerList, quorum);\n }\n\n return providerList[0];\n };\n\n func.renetwork = function(network: Network) {\n return ethDefaultProvider(network);\n };\n\n return func;\n}\n\nfunction etcDefaultProvider(url: string, network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (providers.JsonRpcProvider) {\n return new providers.JsonRpcProvider(url, network);\n }\n\n return null;\n };\n\n func.renetwork = function(network: Network) {\n return etcDefaultProvider(url, network);\n };\n\n return func;\n}\n\nconst homestead: Network = {\n chainId: 1,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"homestead\",\n _defaultProvider: ethDefaultProvider(\"homestead\")\n};\n\nconst ropsten: Network = {\n chainId: 3,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"ropsten\",\n _defaultProvider: ethDefaultProvider(\"ropsten\")\n};\n\nconst classicMordor: Network = {\n chainId: 63,\n name: \"classicMordor\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/mordor\", \"classicMordor\")\n};\n\n// See: https://chainlist.org\nconst networks: { [name: string]: Network } = {\n unspecified: { chainId: 0, name: \"unspecified\" },\n\n homestead: homestead,\n mainnet: homestead,\n\n morden: { chainId: 2, name: \"morden\" },\n\n ropsten: ropsten,\n testnet: ropsten,\n\n rinkeby: {\n chainId: 4,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"rinkeby\",\n _defaultProvider: ethDefaultProvider(\"rinkeby\")\n },\n\n kovan: {\n chainId: 42,\n name: \"kovan\",\n _defaultProvider: ethDefaultProvider(\"kovan\")\n },\n\n goerli: {\n chainId: 5,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"goerli\",\n _defaultProvider: ethDefaultProvider(\"goerli\")\n },\n\n kintsugi: { chainId: 1337702, name: \"kintsugi\" },\n\n sepolia: {\n chainId: 11155111,\n name: \"sepolia\",\n _defaultProvider: ethDefaultProvider(\"sepolia\")\n },\n\n\n // ETC (See: #351)\n classic: {\n chainId: 61,\n name: \"classic\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/etc\", \"classic\")\n },\n\n classicMorden: { chainId: 62, name: \"classicMorden\" },\n\n classicMordor: classicMordor,\n classicTestnet: classicMordor,\n\n classicKotti: {\n chainId: 6,\n name: \"classicKotti\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/kotti\", \"classicKotti\")\n },\n\n xdai: { chainId: 100, name: \"xdai\" },\n\n matic: {\n chainId: 137,\n name: \"matic\",\n _defaultProvider: ethDefaultProvider(\"matic\")\n },\n maticmum: { chainId: 80001, name: \"maticmum\" },\n\n optimism: {\n chainId: 10,\n name: \"optimism\",\n _defaultProvider: ethDefaultProvider(\"optimism\")\n },\n \"optimism-kovan\": { chainId: 69, name: \"optimism-kovan\" },\n \"optimism-goerli\": { chainId: 420, name: \"optimism-goerli\" },\n\n arbitrum: { chainId: 42161, name: \"arbitrum\" },\n \"arbitrum-rinkeby\": { chainId: 421611, name: \"arbitrum-rinkeby\" },\n \"arbitrum-goerli\": { chainId: 421613, name: \"arbitrum-goerli\" },\n\n bnb: { chainId: 56, name: \"bnb\" },\n bnbt: { chainId: 97, name: \"bnbt\" },\n}\n\n/**\n * getNetwork\n *\n * Converts a named common networks or chain ID (network ID) to a Network\n * and verifies a network is a valid Network..\n */\nexport function getNetwork(network: Networkish): Network {\n // No network (null)\n if (network == null) { return null; }\n\n if (typeof(network) === \"number\") {\n for (const name in networks) {\n const standard = networks[name];\n if (standard.chainId === network) {\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: (standard.ensAddress || null),\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n }\n\n return {\n chainId: network,\n name: \"unknown\"\n };\n }\n\n if (typeof(network) === \"string\") {\n const standard = networks[network];\n if (standard == null) { return null; }\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: standard.ensAddress,\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n\n const standard = networks[network.name];\n\n // Not a standard network; check that it is a valid network in general\n if (!standard) {\n if (typeof(network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network chainId\", \"network\", network);\n }\n return network;\n }\n\n // Make sure the chainId matches the expected network chainId (or is 0; disable EIP-155)\n if (network.chainId !== 0 && network.chainId !== standard.chainId) {\n logger.throwArgumentError(\"network chainId mismatch\", \"network\", network);\n }\n\n // @TODO: In the next major version add an attach function to a defaultProvider\n // class and move the _defaultProvider internal to this file (extend Network)\n let defaultProvider: DefaultProviderFunc = network._defaultProvider || null;\n if (defaultProvider == null && standard._defaultProvider) {\n if (isRenetworkable(standard._defaultProvider)) {\n defaultProvider = standard._defaultProvider.renetwork(network);\n } else {\n defaultProvider = standard._defaultProvider;\n }\n }\n\n // Standard Network (allow overriding the ENS address)\n return {\n name: network.name,\n chainId: standard.chainId,\n ensAddress: (network.ensAddress || standard.ensAddress || null),\n _defaultProvider: defaultProvider\n };\n}\n","\"use strict\";\n\nimport hash from \"hash.js\";\n//const _ripemd160 = _hash.ripemd160;\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function ripemd160(data: BytesLike): string {\n return \"0x\" + (hash.ripemd160().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha256(data: BytesLike): string {\n return \"0x\" + (hash.sha256().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha512(data: BytesLike): string {\n return \"0x\" + (hash.sha512().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function computeHmac(algorithm: SupportedAlgorithm, key: BytesLike, data: BytesLike): string {\n if (!SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm \" + algorithm, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"hmac\",\n algorithm: algorithm\n });\n }\n\n return \"0x\" + hash.hmac((hash)[algorithm], arrayify(key)).update(arrayify(data)).digest(\"hex\");\n}\n\n","export const version = \"sha2/5.7.0\";\n","export const AddressZero = \"0x0000000000000000000000000000000000000000\";\n\n","\"use strict\";\n\nimport { Block, TransactionReceipt, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { hexDataLength, hexDataSlice, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, parse as parseTransaction } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport type FormatFunc = (value: any) => any;\n\nexport type FormatFuncs = { [ key: string ]: FormatFunc };\n\nexport type Formats = {\n transaction: FormatFuncs,\n transactionRequest: FormatFuncs,\n receipt: FormatFuncs,\n receiptLog: FormatFuncs,\n block: FormatFuncs,\n blockWithTransactions: FormatFuncs,\n filter: FormatFuncs,\n filterLog: FormatFuncs,\n};\n\nexport class Formatter {\n readonly formats: Formats;\n\n constructor() {\n this.formats = this.getDefaultFormats();\n }\n\n getDefaultFormats(): Formats {\n const formats: Formats = ({ });\n\n const address = this.address.bind(this);\n const bigNumber = this.bigNumber.bind(this);\n const blockTag = this.blockTag.bind(this);\n const data = this.data.bind(this);\n const hash = this.hash.bind(this);\n const hex = this.hex.bind(this);\n const number = this.number.bind(this);\n const type = this.type.bind(this);\n\n const strictData = (v: any) => { return this.data(v, true); };\n\n formats.transaction = {\n hash: hash,\n\n type: type,\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n\n blockHash: Formatter.allowNull(hash, null),\n blockNumber: Formatter.allowNull(number, null),\n transactionIndex: Formatter.allowNull(number, null),\n\n confirmations: Formatter.allowNull(number, null),\n\n from: address,\n\n // either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas)\n // must be set\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n\n gasLimit: bigNumber,\n to: Formatter.allowNull(address, null),\n value: bigNumber,\n nonce: number,\n data: data,\n\n r: Formatter.allowNull(this.uint256),\n s: Formatter.allowNull(this.uint256),\n v: Formatter.allowNull(number),\n\n creates: Formatter.allowNull(address, null),\n\n raw: Formatter.allowNull(data),\n };\n\n formats.transactionRequest = {\n from: Formatter.allowNull(address),\n nonce: Formatter.allowNull(number),\n gasLimit: Formatter.allowNull(bigNumber),\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n to: Formatter.allowNull(address),\n value: Formatter.allowNull(bigNumber),\n data: Formatter.allowNull(strictData),\n type: Formatter.allowNull(number),\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n };\n\n formats.receiptLog = {\n transactionIndex: number,\n blockNumber: number,\n transactionHash: hash,\n address: address,\n topics: Formatter.arrayOf(hash),\n data: data,\n logIndex: number,\n blockHash: hash,\n };\n\n formats.receipt = {\n to: Formatter.allowNull(this.address, null),\n from: Formatter.allowNull(this.address, null),\n contractAddress: Formatter.allowNull(address, null),\n transactionIndex: number,\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n root: Formatter.allowNull(hex),\n gasUsed: bigNumber,\n logsBloom: Formatter.allowNull(data),// @TODO: should this be data?\n blockHash: hash,\n transactionHash: hash,\n logs: Formatter.arrayOf(this.receiptLog.bind(this)),\n blockNumber: number,\n confirmations: Formatter.allowNull(number, null),\n cumulativeGasUsed: bigNumber,\n effectiveGasPrice: Formatter.allowNull(bigNumber),\n status: Formatter.allowNull(number),\n type: type\n };\n\n formats.block = {\n hash: Formatter.allowNull(hash),\n parentHash: hash,\n number: number,\n\n timestamp: number,\n nonce: Formatter.allowNull(hex),\n difficulty: this.difficulty.bind(this),\n\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n\n miner: Formatter.allowNull(address),\n extraData: data,\n\n transactions: Formatter.allowNull(Formatter.arrayOf(hash)),\n\n baseFeePerGas: Formatter.allowNull(bigNumber)\n };\n\n formats.blockWithTransactions = shallowCopy(formats.block);\n formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));\n\n formats.filter = {\n fromBlock: Formatter.allowNull(blockTag, undefined),\n toBlock: Formatter.allowNull(blockTag, undefined),\n blockHash: Formatter.allowNull(hash, undefined),\n address: Formatter.allowNull(address, undefined),\n topics: Formatter.allowNull(this.topics.bind(this), undefined),\n };\n\n formats.filterLog = {\n blockNumber: Formatter.allowNull(number),\n blockHash: Formatter.allowNull(hash),\n transactionIndex: number,\n\n removed: Formatter.allowNull(this.boolean.bind(this)),\n\n address: address,\n data: Formatter.allowFalsish(data, \"0x\"),\n\n topics: Formatter.arrayOf(hash),\n\n transactionHash: hash,\n logIndex: number,\n };\n\n return formats;\n }\n\n accessList(accessList: Array): AccessList {\n return accessListify(accessList || []);\n }\n\n // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number\n // Strict! Used on input.\n number(number: any): number {\n if (number === \"0x\") { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n type(number: any): number {\n if (number === \"0x\" || number == null) { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n // Strict! Used on input.\n bigNumber(value: any): BigNumber {\n return BigNumber.from(value);\n }\n\n // Requires a boolean, \"true\" or \"false\"; returns a boolean\n boolean(value: any): boolean {\n if (typeof(value) === \"boolean\") { return value; }\n if (typeof(value) === \"string\") {\n value = value.toLowerCase();\n if (value === \"true\") { return true; }\n if (value === \"false\") { return false; }\n }\n throw new Error(\"invalid boolean - \" + value);\n }\n\n hex(value: any, strict?: boolean): string {\n if (typeof(value) === \"string\") {\n if (!strict && value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n if (isHexString(value)) {\n return value.toLowerCase();\n }\n }\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n\n data(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if ((result.length % 2) !== 0) {\n throw new Error(\"invalid data; odd-length - \" + value);\n }\n return result;\n }\n\n // Requires an address\n // Strict! Used on input.\n address(value: any): string {\n return getAddress(value);\n }\n\n callAddress(value: any): string {\n if (!isHexString(value, 32)) { return null; }\n const address = getAddress(hexDataSlice(value, 12));\n return (address === AddressZero) ? null: address;\n }\n\n contractAddress(value: any): string {\n return getContractAddress(value);\n }\n\n // Strict! Used on input.\n blockTag(blockTag: any): string {\n if (blockTag == null) { return \"latest\"; }\n\n if (blockTag === \"earliest\") { return \"0x0\"; }\n\n switch (blockTag) {\n case \"earliest\": return \"0x0\";\n case \"latest\": case \"pending\": case \"safe\": case \"finalized\":\n return blockTag;\n }\n\n if (typeof(blockTag) === \"number\" || isHexString(blockTag)) {\n return hexValue(blockTag);\n }\n\n throw new Error(\"invalid blockTag\");\n }\n\n // Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.\n hash(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if (hexDataLength(result) !== 32) {\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n return result;\n }\n\n // Returns the difficulty as a number, or if too large (i.e. PoA network) null\n difficulty(value: any): number {\n if (value == null) { return null; }\n\n const v = BigNumber.from(value);\n\n try {\n return v.toNumber();\n } catch (error) { }\n\n return null;\n }\n\n uint256(value: any): string {\n if (!isHexString(value)) {\n throw new Error(\"invalid uint256\");\n }\n return hexZeroPad(value, 32);\n }\n\n _block(value: any, format: any): Block {\n if (value.author != null && value.miner == null) {\n value.miner = value.author;\n }\n // The difficulty may need to come from _difficulty in recursed blocks\n const difficulty = (value._difficulty != null) ? value._difficulty: value.difficulty;\n const result = Formatter.check(format, value);\n result._difficulty = ((difficulty == null) ? null: BigNumber.from(difficulty));\n return result;\n }\n\n block(value: any): Block {\n return this._block(value, this.formats.block);\n }\n\n blockWithTransactions(value: any): Block {\n return this._block(value, this.formats.blockWithTransactions);\n }\n\n // Strict! Used on input.\n transactionRequest(value: any): any {\n return Formatter.check(this.formats.transactionRequest, value);\n }\n\n transactionResponse(transaction: any): TransactionResponse {\n\n // Rename gas to gasLimit\n if (transaction.gas != null && transaction.gasLimit == null) {\n transaction.gasLimit = transaction.gas;\n }\n\n // Some clients (TestRPC) do strange things like return 0x0 for the\n // 0 address; correct this to be a real address\n if (transaction.to && BigNumber.from(transaction.to).isZero()) {\n transaction.to = \"0x0000000000000000000000000000000000000000\";\n }\n\n // Rename input to data\n if (transaction.input != null && transaction.data == null) {\n transaction.data = transaction.input;\n }\n\n // If to and creates are empty, populate the creates from the transaction\n if (transaction.to == null && transaction.creates == null) {\n transaction.creates = this.contractAddress(transaction);\n }\n\n if ((transaction.type === 1 || transaction.type === 2)&& transaction.accessList == null) {\n transaction.accessList = [ ];\n }\n\n const result: TransactionResponse = Formatter.check(this.formats.transaction, transaction);\n\n if (transaction.chainId != null) {\n let chainId = transaction.chainId;\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n result.chainId = chainId;\n\n } else {\n let chainId = transaction.networkId;\n\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = transaction.chainId;\n }\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n if (typeof(chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) { chainId = 0; }\n chainId = parseInt(chainId);\n }\n\n if (typeof(chainId) !== \"number\") { chainId = 0; }\n\n result.chainId = chainId;\n }\n\n // 0x0000... should actually be null\n if (result.blockHash && result.blockHash.replace(/0/g, \"\") === \"x\") {\n result.blockHash = null;\n }\n\n return result;\n }\n\n transaction(value: any): any {\n return parseTransaction(value);\n }\n\n receiptLog(value: any): any {\n return Formatter.check(this.formats.receiptLog, value);\n }\n\n receipt(value: any): TransactionReceipt {\n const result: TransactionReceipt = Formatter.check(this.formats.receipt, value);\n\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (result.root != null) {\n if (result.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = BigNumber.from(result.root).toNumber();\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (result.status != null && (result.status !== value)) {\n logger.throwArgumentError(\"alt-root-status/status mismatch\", \"value\", { root: result.root, status: result.status });\n }\n result.status = value;\n delete result.root;\n } else {\n logger.throwArgumentError(\"invalid alt-root-status\", \"value.root\", result.root);\n }\n } else if (result.root.length !== 66) {\n // Must be a valid bytes32\n logger.throwArgumentError(\"invalid root hash\", \"value.root\", result.root);\n }\n }\n\n if (result.status != null) {\n result.byzantium = true;\n }\n\n return result;\n }\n\n topics(value: any): any {\n if (Array.isArray(value)) {\n return value.map((v) => this.topics(v));\n\n } else if (value != null) {\n return this.hash(value, true);\n }\n\n return null;\n }\n\n filter(value: any): any {\n return Formatter.check(this.formats.filter, value);\n }\n\n filterLog(value: any): any {\n return Formatter.check(this.formats.filterLog, value);\n }\n\n static check(format: { [ name: string ]: FormatFunc }, object: any): any {\n const result: any = {};\n for (const key in format) {\n try {\n const value = format[key](object[key]);\n if (value !== undefined) { result[key] = value; }\n } catch (error) {\n error.checkKey = key;\n error.checkValue = object[key];\n throw error;\n }\n }\n return result;\n }\n\n // if value is null-ish, nullValue is returned\n static allowNull(format: FormatFunc, nullValue?: any): FormatFunc {\n return (function(value: any) {\n if (value == null) { return nullValue; }\n return format(value);\n });\n }\n\n // If value is false-ish, replaceValue is returned\n static allowFalsish(format: FormatFunc, replaceValue: any): FormatFunc {\n return (function(value: any) {\n if (!value) { return replaceValue; }\n return format(value);\n });\n }\n\n // Requires an Array satisfying check\n static arrayOf(format: FormatFunc): FormatFunc {\n return (function(array: any): Array {\n if (!Array.isArray(array)) { throw new Error(\"not an array\"); }\n\n const result: any = [];\n\n array.forEach(function(value) {\n result.push(format(value));\n });\n\n return result;\n });\n }\n}\n\nexport interface CommunityResourcable {\n isCommunityResource(): boolean;\n}\n\nexport function isCommunityResourcable(value: any): value is CommunityResourcable {\n return (value && typeof(value.isCommunityResource) === \"function\");\n}\n\nexport function isCommunityResource(value: any): boolean {\n return (isCommunityResourcable(value) && value.isCommunityResource());\n}\n\n// Show the throttle message only once\nlet throttleMessage = false;\nexport function showThrottleMessage() {\n if (throttleMessage) { return; }\n throttleMessage = true;\n\n console.log(\"========= NOTICE =========\")\n console.log(\"Request-Rate Exceeded (this message will not be repeated)\");\n console.log(\"\");\n console.log(\"The default API keys for each service are provided as a highly-throttled,\");\n console.log(\"community resource for low-traffic projects and early prototyping.\");\n console.log(\"\");\n console.log(\"While your application will continue to function, we highly recommended\");\n console.log(\"signing up for your own API keys to improve performance, increase your\");\n console.log(\"request rate/limit and enable other perks, such as metrics and advanced APIs.\");\n console.log(\"\");\n console.log(\"For more details: https:/\\/docs.ethers.io/api-keys/\");\n console.log(\"==========================\");\n}\n\n","\"use strict\";\n\nimport {\n Block, BlockTag, BlockWithTransactions, EventType, Filter, FilterByBlockHash, ForkEvent,\n Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse\n} from \"@ethersproject/abstract-provider\";\nimport { encode as base64Encode } from \"@ethersproject/base64\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexConcat, hexDataLength, hexDataSlice, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { HashZero } from \"@ethersproject/constants\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { getNetwork, Network, Networkish } from \"@ethersproject/networks\";\nimport { Deferrable, defineReadOnly, getStatic, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transactions\";\nimport { sha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchJson, poll } from \"@ethersproject/web\";\n\nimport bech32 from \"bech32\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Formatter } from \"./formatter\";\n\nconst MAX_CCIP_REDIRECTS = 10;\n\n//////////////////////////////\n// Event Serializeing\n\nfunction checkTopic(topic: string): string {\n if (topic == null) { return \"null\"; }\n if (hexDataLength(topic) !== 32) {\n logger.throwArgumentError(\"invalid topic\", \"topic\", topic);\n }\n return topic.toLowerCase();\n}\n\nfunction serializeTopics(topics: Array>): string {\n // Remove trailing null AND-topics; they are redundant\n topics = topics.slice();\n while (topics.length > 0 && topics[topics.length - 1] == null) { topics.pop(); }\n\n return topics.map((topic) => {\n if (Array.isArray(topic)) {\n\n // Only track unique OR-topics\n const unique: { [ topic: string ]: boolean } = { }\n topic.forEach((topic) => {\n unique[checkTopic(topic)] = true;\n });\n\n // The order of OR-topics does not matter\n const sorted = Object.keys(unique);\n sorted.sort();\n\n return sorted.join(\"|\");\n\n } else {\n return checkTopic(topic);\n }\n }).join(\"&\");\n}\n\nfunction deserializeTopics(data: string): Array> {\n if (data === \"\") { return [ ]; }\n\n return data.split(/&/g).map((topic) => {\n if (topic === \"\") { return [ ]; }\n\n const comps = topic.split(\"|\").map((topic) => {\n return ((topic === \"null\") ? null: topic);\n });\n\n return ((comps.length === 1) ? comps[0]: comps);\n });\n}\n\nfunction getEventTag(eventName: EventType): string {\n if (typeof(eventName) === \"string\") {\n eventName = eventName.toLowerCase();\n\n if (hexDataLength(eventName) === 32) {\n return \"tx:\" + eventName;\n }\n\n if (eventName.indexOf(\":\") === -1) {\n return eventName;\n }\n\n } else if (Array.isArray(eventName)) {\n return \"filter:*:\" + serializeTopics(eventName);\n\n } else if (ForkEvent.isForkEvent(eventName)) {\n logger.warn(\"not implemented\");\n throw new Error(\"not implemented\");\n\n } else if (eventName && typeof(eventName) === \"object\") {\n return \"filter:\" + (eventName.address || \"*\") + \":\" + serializeTopics(eventName.topics || []);\n }\n\n throw new Error(\"invalid event - \" + eventName);\n}\n\n//////////////////////////////\n// Helper Object\n\nfunction getTime() {\n return (new Date()).getTime();\n}\n\nfunction stall(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\n//////////////////////////////\n// Provider Object\n\n\n/**\n * EventType\n * - \"block\"\n * - \"poll\"\n * - \"didPoll\"\n * - \"pending\"\n * - \"error\"\n * - \"network\"\n * - filter\n * - topics array\n * - transaction hash\n */\n\nconst PollableEvents = [ \"block\", \"network\", \"pending\", \"poll\" ];\n\nexport class Event {\n readonly listener: Listener;\n readonly once: boolean;\n readonly tag: string;\n\n _lastBlockNumber: number\n _inflight: boolean;\n\n constructor(tag: string, listener: Listener, once: boolean) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"listener\", listener);\n defineReadOnly(this, \"once\", once);\n\n this._lastBlockNumber = -2;\n this._inflight = false;\n }\n\n get event(): EventType {\n switch (this.type) {\n case \"tx\":\n return this.hash;\n case \"filter\":\n return this.filter;\n }\n return this.tag;\n }\n\n get type(): string {\n return this.tag.split(\":\")[0]\n }\n\n get hash(): string {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"tx\") { return null; }\n return comps[1];\n }\n\n get filter(): Filter {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"filter\") { return null; }\n const address = comps[1];\n\n const topics = deserializeTopics(comps[2]);\n const filter: Filter = { };\n\n if (topics.length > 0) { filter.topics = topics; }\n if (address && address !== \"*\") { filter.address = address; }\n\n return filter;\n }\n\n pollable(): boolean {\n return (this.tag.indexOf(\":\") >= 0 || PollableEvents.indexOf(this.tag) >= 0);\n }\n}\n\nexport interface EnsResolver {\n\n // Name this Resolver is associated with\n readonly name: string;\n\n // The address of the resolver\n readonly address: string;\n\n // Multichain address resolution (also normal address resolution)\n // See: https://eips.ethereum.org/EIPS/eip-2304\n getAddress(coinType?: 60): Promise\n\n // Contenthash field\n // See: https://eips.ethereum.org/EIPS/eip-1577\n getContentHash(): Promise;\n\n // Storage of text records\n // See: https://eips.ethereum.org/EIPS/eip-634\n getText(key: string): Promise;\n};\n\nexport interface EnsProvider {\n resolveName(name: string): Promise;\n lookupAddress(address: string): Promise;\n getResolver(name: string): Promise;\n}\n\ntype CoinInfo = {\n symbol: string,\n ilk?: string, // General family\n prefix?: string, // Bech32 prefix\n p2pkh?: number, // Pay-to-Public-Key-Hash Version\n p2sh?: number, // Pay-to-Script-Hash Version\n};\n\n// https://github.com/satoshilabs/slips/blob/master/slip-0044.md\nconst coinInfos: { [ coinType: string ]: CoinInfo } = {\n \"0\": { symbol: \"btc\", p2pkh: 0x00, p2sh: 0x05, prefix: \"bc\" },\n \"2\": { symbol: \"ltc\", p2pkh: 0x30, p2sh: 0x32, prefix: \"ltc\" },\n \"3\": { symbol: \"doge\", p2pkh: 0x1e, p2sh: 0x16 },\n \"60\": { symbol: \"eth\", ilk: \"eth\" },\n \"61\": { symbol: \"etc\", ilk: \"eth\" },\n \"700\": { symbol: \"xdai\", ilk: \"eth\" },\n};\n\nfunction bytes32ify(value: number): string {\n return hexZeroPad(BigNumber.from(value).toHexString(), 32);\n}\n\n// Compute the Base58Check encoded data (checksum is first 4 bytes of sha256d)\nfunction base58Encode(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nexport interface Avatar {\n url: string;\n linkage: Array<{ type: string, content: string }>;\n}\n\nconst matcherIpfs = new RegExp(\"^(ipfs):/\\/(.*)$\", \"i\");\nconst matchers = [\n new RegExp(\"^(https):/\\/(.*)$\", \"i\"),\n new RegExp(\"^(data):(.*)$\", \"i\"),\n matcherIpfs,\n new RegExp(\"^eip155:[0-9]+/(erc[0-9]+):(.*)$\", \"i\"),\n];\n\nfunction _parseString(result: string, start: number): null | string {\n try {\n return toUtf8String(_parseBytes(result, start));\n } catch(error) { }\n return null;\n}\n\nfunction _parseBytes(result: string, start: number): null | string {\n if (result === \"0x\") { return null; }\n\n const offset = BigNumber.from(hexDataSlice(result, start, start + 32)).toNumber();\n const length = BigNumber.from(hexDataSlice(result, offset, offset + 32)).toNumber();\n\n return hexDataSlice(result, offset + 32, offset + 32 + length);\n}\n\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link: string): string {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n } else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n } else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n\n return `https:/\\/gateway.ipfs.io/ipfs/${ link }`;\n}\n\nfunction numPad(value: number): Uint8Array {\n const result = arrayify(value);\n if (result.length > 32) { throw new Error(\"internal; should not happen\"); }\n\n const padded = new Uint8Array(32);\n padded.set(result, 32 - result.length);\n return padded;\n}\n\nfunction bytesPad(value: Uint8Array): Uint8Array {\n if ((value.length % 32) === 0) { return value; }\n\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas: Array) {\n const result: Array = [ ];\n\n let byteCount = 0;\n\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(null);\n byteCount += 32;\n }\n\n for (let i = 0; i < datas.length; i++) {\n const data = arrayify(datas[i]);\n\n // Update the bytes offset\n result[i] = numPad(byteCount);\n\n // The length and padded value of data\n result.push(numPad(data.length));\n result.push(bytesPad(data));\n byteCount += 32 + Math.ceil(data.length / 32) * 32;\n }\n\n return hexConcat(result);\n}\n\nexport class Resolver implements EnsResolver {\n readonly provider: BaseProvider;\n\n readonly name: string;\n readonly address: string;\n\n readonly _resolvedAddress: null | string;\n\n // For EIP-2544 names, the ancestor that provided the resolver\n _supportsEip2544: null | Promise;\n\n // The resolvedAddress is only for creating a ReverseLookup resolver\n constructor(provider: BaseProvider, address: string, name: string, resolvedAddress?: string) {\n defineReadOnly(this, \"provider\", provider);\n defineReadOnly(this, \"name\", name);\n defineReadOnly(this, \"address\", provider.formatter.address(address));\n defineReadOnly(this, \"_resolvedAddress\", resolvedAddress);\n }\n\n supportsWildcard(): Promise {\n if (!this._supportsEip2544) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n this._supportsEip2544 = this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return BigNumber.from(result).eq(1);\n }).catch((error) => {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return false; }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n this._supportsEip2544 = null;\n throw error;\n });\n }\n\n return this._supportsEip2544;\n }\n\n async _fetch(selector: string, parameters?: string): Promise {\n\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const tx = {\n to: this.address,\n ccipReadEnabled: true,\n data: hexConcat([ selector, namehash(this.name), (parameters || \"0x\") ])\n };\n\n // Wildcard support; use EIP-2544 to resolve the request\n let parseBytes = false;\n if (await this.supportsWildcard()) {\n parseBytes = true;\n\n // selector(\"resolve(bytes,bytes)\")\n tx.data = hexConcat([ \"0x9061b923\", encodeBytes([ dnsEncode(this.name), tx.data ]) ]);\n }\n\n try {\n let result = await this.provider.call(tx);\n if ((arrayify(result).length % 32) === 4) {\n logger.throwError(\"resolver threw error\", Logger.errors.CALL_EXCEPTION, {\n transaction: tx, data: result\n });\n }\n if (parseBytes) { result = _parseBytes(result, 0); }\n return result;\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n async _fetchBytes(selector: string, parameters?: string): Promise {\n const result = await this._fetch(selector, parameters);\n if (result != null) { return _parseBytes(result, 0); }\n return null;\n }\n\n _getAddress(coinType: number, hexBytes: string): string {\n const coinInfo = coinInfos[String(coinType)];\n\n if (coinInfo == null) {\n logger.throwError(`unsupported coin type: ${ coinType }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`\n });\n }\n\n if (coinInfo.ilk === \"eth\") {\n return this.provider.formatter.address(hexBytes);\n }\n\n const bytes = arrayify(hexBytes);\n\n // P2PKH: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG\n if (coinInfo.p2pkh != null) {\n const p2pkh = hexBytes.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);\n if (p2pkh) {\n const length = parseInt(p2pkh[1], 16);\n if (p2pkh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2pkh ], (\"0x\" + p2pkh[2]) ]));\n }\n }\n }\n\n // P2SH: OP_HASH160 OP_EQUAL\n if (coinInfo.p2sh != null) {\n const p2sh = hexBytes.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);\n if (p2sh) {\n const length = parseInt(p2sh[1], 16);\n if (p2sh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2sh ], (\"0x\" + p2sh[2]) ]));\n }\n }\n }\n\n // Bech32\n if (coinInfo.prefix != null) {\n const length = bytes[1];\n\n // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#witness-program\n let version = bytes[0];\n if (version === 0x00) {\n if (length !== 20 && length !== 32) {\n version = -1;\n }\n } else {\n version = -1;\n }\n\n if (version >= 0 && bytes.length === 2 + length && length >= 1 && length <= 75) {\n const words = bech32.toWords(bytes.slice(2));\n words.unshift(version);\n return bech32.encode(coinInfo.prefix, words);\n }\n }\n\n return null;\n }\n\n\n async getAddress(coinType?: number): Promise {\n if (coinType == null) { coinType = 60; }\n\n // If Ethereum, use the standard `addr(bytes32)`\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n\n // No address\n if (result === \"0x\" || result === HashZero) { return null; }\n\n return this.provider.formatter.callAddress(result);\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n // keccak256(\"addr(bytes32,uint256\")\n const hexBytes = await this._fetchBytes(\"0xf1cb7e06\", bytes32ify(coinType));\n\n // No address\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // Compute the address\n const address = this._getAddress(coinType, hexBytes);\n\n if (address == null) {\n logger.throwError(`invalid or unsupported coin data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`,\n coinType: coinType,\n data: hexBytes\n });\n }\n\n return address;\n }\n\n async getAvatar(): Promise {\n const linkage: Array<{ type: string, content: string }> = [ { type: \"name\", content: this.name } ];\n try {\n // test data for ricmoo.eth\n //const avatar = \"eip155:1/erc721:0x265385c7f4132228A0d54EB1A9e7460b91c0cC68/29233\";\n const avatar = await this.getText(\"avatar\");\n if (avatar == null) { return null; }\n\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) { continue; }\n\n const scheme = match[1].toLowerCase();\n\n switch (scheme) {\n case \"https\":\n linkage.push({ type: \"url\", content: avatar });\n return { linkage, url: avatar };\n\n case \"data\":\n linkage.push({ type: \"data\", content: avatar });\n return { linkage, url: avatar };\n\n case \"ipfs\":\n linkage.push({ type: \"ipfs\", content: avatar });\n return { linkage, url: getIpfsLink(avatar) };\n\n case \"erc721\":\n case \"erc1155\": {\n // Depending on the ERC type, use tokenURI(uint256) or url(uint256)\n const selector = (scheme === \"erc721\") ? \"0xc87b56dd\": \"0x0e89341c\";\n linkage.push({ type: scheme, content: avatar });\n\n // The owner of this name\n const owner = (this._resolvedAddress || await this.getAddress());\n\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) { return null; }\n\n const addr = await this.provider.formatter.address(comps[0]);\n const tokenId = hexZeroPad(BigNumber.from(comps[1]).toHexString(), 32);\n\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = this.provider.formatter.callAddress(await this.provider.call({\n to: addr, data: hexConcat([ \"0x6352211e\", tokenId ])\n }));\n if (owner !== tokenOwner) { return null; }\n linkage.push({ type: \"owner\", content: tokenOwner });\n\n } else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = BigNumber.from(await this.provider.call({\n to: addr, data: hexConcat([ \"0x00fdd58e\", hexZeroPad(owner, 32), tokenId ])\n }));\n if (balance.isZero()) { return null; }\n linkage.push({ type: \"balance\", content: balance.toString() });\n }\n\n // Call the token contract for the metadata URL\n const tx = {\n to: this.provider.formatter.address(comps[0]),\n data: hexConcat([ selector, tokenId ])\n };\n\n let metadataUrl = _parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) { return null; }\n linkage.push({ type: \"metadata-url-base\", content: metadataUrl });\n\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", tokenId.substring(2));\n linkage.push({ type: \"metadata-url-expanded\", content: metadataUrl });\n }\n\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n\n linkage.push({ type: \"metadata-url\", content: metadataUrl });\n\n // Get the token metadata\n const metadata = await fetchJson(metadataUrl);\n if (!metadata) { return null; }\n linkage.push({ type: \"metadata\", content: JSON.stringify(metadata) });\n\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof(imageUrl) !== \"string\") { return null; }\n\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n } else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) { return null; }\n\n linkage.push({ type: \"url-ipfs\", content: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n\n linkage.push({ type: \"url\", content: imageUrl });\n\n return { linkage, url: imageUrl };\n }\n }\n }\n } catch (error) { }\n\n return null;\n }\n\n async getContentHash(): Promise {\n\n // keccak256(\"contenthash()\")\n const hexBytes = await this._fetchBytes(\"0xbc1c58d1\");\n\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // IPFS (CID: 1, Type: DAG-PB)\n const ipfs = hexBytes.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const length = parseInt(ipfs[3], 16);\n if (ipfs[4].length === length * 2) {\n return \"ipfs:/\\/\" + Base58.encode(\"0x\" + ipfs[1]);\n }\n }\n\n // IPNS (CID: 1, Type: libp2p-key)\n const ipns = hexBytes.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipns) {\n const length = parseInt(ipns[3], 16);\n if (ipns[4].length === length * 2) {\n return \"ipns:/\\/\" + Base58.encode(\"0x\" + ipns[1]);\n }\n }\n\n // Swarm (CID: 1, Type: swarm-manifest; hash/length hard-coded to keccak256/32)\n const swarm = hexBytes.match(/^0xe40101fa011b20([0-9a-f]*)$/)\n if (swarm) {\n if (swarm[1].length === (32 * 2)) {\n return \"bzz:/\\/\" + swarm[1]\n }\n }\n\n const skynet = hexBytes.match(/^0x90b2c605([0-9a-f]*)$/);\n if (skynet) {\n if (skynet[1].length === (34 * 2)) {\n // URL Safe base64; https://datatracker.ietf.org/doc/html/rfc4648#section-5\n const urlSafe: Record = { \"=\": \"\", \"+\": \"-\", \"/\": \"_\" };\n const hash = base64Encode(\"0x\" + skynet[1]).replace(/[=+\\/]/g, (a) => (urlSafe[a]));\n return \"sia:/\\/\" + hash;\n }\n }\n\n return logger.throwError(`invalid or unsupported content hash data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getContentHash()\",\n data: hexBytes\n });\n }\n\n async getText(key: string): Promise {\n\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\n\n // The nodehash consumes the first slot, so the string pointer targets\n // offset 64, with the length at offset 64 and data starting at offset 96\n keyBytes = concat([ bytes32ify(64), bytes32ify(keyBytes.length), keyBytes ]);\n\n // Pad to word-size (32 bytes)\n if ((keyBytes.length % 32) !== 0) {\n keyBytes = concat([ keyBytes, hexZeroPad(\"0x\", 32 - (key.length % 32)) ])\n }\n\n const hexBytes = await this._fetchBytes(\"0x59d1d43c\", hexlify(keyBytes));\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n return toUtf8String(hexBytes);\n }\n}\n\nlet defaultFormatter: Formatter = null;\n\nlet nextPollId = 1;\n\nexport class BaseProvider extends Provider implements EnsProvider {\n _networkPromise: Promise;\n _network: Network;\n\n _events: Array;\n\n formatter: Formatter;\n\n // To help mitigate the eventually consistent nature of the blockchain\n // we keep a mapping of events we emit. If we emit an event X, we expect\n // that a user should be able to query for that event in the callback,\n // if the node returns null, we stall the response until we get back a\n // meaningful value, since we may be hitting a re-org, or a node that\n // has not indexed the event yet.\n // Events:\n // - t:{hash} - Transaction hash\n // - b:{hash} - BlockHash\n // - block - The most recent emitted block\n _emitted: { [ eventName: string ]: number | \"pending\" };\n\n _pollingInterval: number;\n _poller: NodeJS.Timer;\n _bootstrapPoll: NodeJS.Timer;\n\n _lastBlockNumber: number;\n _maxFilterBlockRange: number;\n\n _fastBlockNumber: number;\n _fastBlockNumberPromise: Promise;\n _fastQueryDate: number;\n\n _maxInternalBlockNumber: number;\n _internalBlockNumber: Promise<{ blockNumber: number, reqTime: number, respTime: number }>;\n\n readonly anyNetwork: boolean;\n\n disableCcipRead: boolean;\n\n\n /**\n * ready\n *\n * A Promise that resolves only once the provider is ready.\n *\n * Sub-classes that call the super with a network without a chainId\n * MUST set this. Standard named networks have a known chainId.\n *\n */\n\n constructor(network: Networkish | Promise) {\n super();\n\n // Events being listened to\n this._events = [];\n\n this._emitted = { block: -2 };\n\n this.disableCcipRead = false;\n\n this.formatter = new.target.getFormatter();\n\n // If network is any, this Provider allows the underlying\n // network to change dynamically, and we auto-detect the\n // current network\n defineReadOnly(this, \"anyNetwork\", (network === \"any\"));\n if (this.anyNetwork) { network = this.detectNetwork(); }\n\n if (network instanceof Promise) {\n this._networkPromise = network;\n\n // Squash any \"unhandled promise\" errors; that do not need to be handled\n network.catch((error) => { });\n\n // Trigger initial network setting (async)\n this._ready().catch((error) => { });\n\n } else {\n const knownNetwork = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n if (knownNetwork) {\n defineReadOnly(this, \"_network\", knownNetwork);\n this.emit(\"network\", knownNetwork, null);\n\n } else {\n logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n }\n\n this._maxInternalBlockNumber = -1024;\n\n this._lastBlockNumber = -2;\n this._maxFilterBlockRange = 10;\n\n this._pollingInterval = 4000;\n\n this._fastQueryDate = 0;\n }\n\n async _ready(): Promise {\n if (this._network == null) {\n let network: Network = null;\n if (this._networkPromise) {\n try {\n network = await this._networkPromise;\n } catch (error) { }\n }\n\n // Try the Provider's network detection (this MUST throw if it cannot)\n if (network == null) {\n network = await this.detectNetwork();\n }\n\n // This should never happen; every Provider sub-class should have\n // suggested a network by here (or have thrown).\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // Possible this call stacked so do not call defineReadOnly again\n if (this._network == null) {\n if (this.anyNetwork) {\n this._network = network;\n } else {\n defineReadOnly(this, \"_network\", network);\n }\n this.emit(\"network\", network, null);\n }\n }\n\n return this._network;\n }\n\n // This will always return the most recently established network.\n // For \"any\", this can change (a \"network\" event is emitted before\n // any change is reflected); otherwise this cannot change\n get ready(): Promise {\n return poll(() => {\n return this._ready().then((network) => {\n return network;\n }, (error) => {\n // If the network isn't running yet, we will wait\n if (error.code === Logger.errors.NETWORK_ERROR && error.event === \"noNetwork\") {\n return undefined;\n }\n throw error;\n });\n });\n }\n\n // @TODO: Remove this and just create a singleton formatter\n static getFormatter(): Formatter {\n if (defaultFormatter == null) {\n defaultFormatter = new Formatter();\n }\n return defaultFormatter;\n }\n\n // @TODO: Remove this and just use getNetwork\n static getNetwork(network: Networkish): Network {\n return getNetwork((network == null) ? \"homestead\": network);\n }\n\n async ccipReadFetch(tx: Transaction, calldata: string, urls: Array): Promise {\n if (this.disableCcipRead || urls.length === 0) { return null; }\n\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n\n const errorMessages: Array = [ ];\n\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\n\n // If no {data} is present, use POST; otherwise GET\n const json: string | null = (url.indexOf(\"{data}\") >= 0) ? null: JSON.stringify({ data, sender });\n\n const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n value.status = response.statusCode;\n return value;\n });\n\n if (result.data) { return result.data; }\n\n const errorMessage = (result.message || \"unknown error\");\n\n // 4xx indicates the result is not present; stop\n if (result.status >= 400 && result.status < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${ errorMessage }`, Logger.errors.SERVER_ERROR, { url, errorMessage });\n }\n\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n\n return logger.throwError(`error encountered during CCIP fetch: ${ errorMessages.map((m) => JSON.stringify(m)).join(\", \") }`, Logger.errors.SERVER_ERROR, {\n urls, errorMessages\n });\n }\n\n // Fetches the blockNumber, but will reuse any result that is less\n // than maxAge old or has been requested since the last request\n async _getInternalBlockNumber(maxAge: number): Promise {\n await this._ready();\n\n // Allowing stale data up to maxAge old\n if (maxAge > 0) {\n\n // While there are pending internal block requests...\n while (this._internalBlockNumber) {\n\n // ...\"remember\" which fetch we started with\n const internalBlockNumber = this._internalBlockNumber;\n\n try {\n // Check the result is not too stale\n const result = await internalBlockNumber;\n if ((getTime() - result.respTime) <= maxAge) {\n return result.blockNumber;\n }\n\n // Too old; fetch a new value\n break;\n\n } catch(error) {\n\n // The fetch rejected; if we are the first to get the\n // rejection, drop through so we replace it with a new\n // fetch; all others blocked will then get that fetch\n // which won't match the one they \"remembered\" and loop\n if (this._internalBlockNumber === internalBlockNumber) {\n break;\n }\n }\n }\n }\n\n const reqTime = getTime();\n\n const checkInternalBlockNumber = resolveProperties({\n blockNumber: this.perform(\"getBlockNumber\", { }),\n networkError: this.getNetwork().then((network) => (null), (error) => (error))\n }).then(({ blockNumber, networkError }) => {\n if (networkError) {\n // Unremember this bad internal block number\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n throw networkError;\n }\n\n const respTime = getTime();\n\n blockNumber = BigNumber.from(blockNumber).toNumber();\n if (blockNumber < this._maxInternalBlockNumber) { blockNumber = this._maxInternalBlockNumber; }\n\n this._maxInternalBlockNumber = blockNumber;\n this._setFastBlockNumber(blockNumber); // @TODO: Still need this?\n return { blockNumber, reqTime, respTime };\n });\n\n this._internalBlockNumber = checkInternalBlockNumber;\n\n // Swallow unhandled exceptions; if needed they are handled else where\n checkInternalBlockNumber.catch((error) => {\n // Don't null the dead (rejected) fetch, if it has already been updated\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n });\n\n return (await checkInternalBlockNumber).blockNumber;\n }\n\n async poll(): Promise {\n const pollId = nextPollId++;\n\n // Track all running promises, so we can trigger a post-poll once they are complete\n const runners: Array> = [];\n\n let blockNumber: number = null;\n try {\n blockNumber = await this._getInternalBlockNumber(100 + this.pollingInterval / 2);\n } catch (error) {\n this.emit(\"error\", error);\n return;\n }\n this._setFastBlockNumber(blockNumber);\n\n // Emit a poll event after we have the latest (fast) block number\n this.emit(\"poll\", pollId, blockNumber);\n\n // If the block has not changed, meh.\n if (blockNumber === this._lastBlockNumber) {\n this.emit(\"didPoll\", pollId);\n return;\n }\n\n // First polling cycle, trigger a \"block\" events\n if (this._emitted.block === -2) {\n this._emitted.block = blockNumber - 1;\n }\n\n if (Math.abs(((this._emitted.block)) - blockNumber) > 1000) {\n logger.warn(`network block skew detected; skipping block events (emitted=${ this._emitted.block } blockNumber${ blockNumber })`);\n this.emit(\"error\", logger.makeError(\"network block skew detected\", Logger.errors.NETWORK_ERROR, {\n blockNumber: blockNumber,\n event: \"blockSkew\",\n previousBlockNumber: this._emitted.block\n }));\n this.emit(\"block\", blockNumber);\n\n } else {\n // Notify all listener for each block that has passed\n for (let i = (this._emitted.block) + 1; i <= blockNumber; i++) {\n this.emit(\"block\", i);\n }\n }\n\n // The emitted block was updated, check for obsolete events\n if ((this._emitted.block) !== blockNumber) {\n this._emitted.block = blockNumber;\n\n Object.keys(this._emitted).forEach((key) => {\n // The block event does not expire\n if (key === \"block\") { return; }\n\n // The block we were at when we emitted this event\n const eventBlockNumber = this._emitted[key];\n\n // We cannot garbage collect pending transactions or blocks here\n // They should be garbage collected by the Provider when setting\n // \"pending\" events\n if (eventBlockNumber === \"pending\") { return; }\n\n // Evict any transaction hashes or block hashes over 12 blocks\n // old, since they should not return null anyways\n if (blockNumber - eventBlockNumber > 12) {\n delete this._emitted[key];\n }\n });\n }\n\n // First polling cycle\n if (this._lastBlockNumber === -2) {\n this._lastBlockNumber = blockNumber - 1;\n }\n // Find all transaction hashes we are waiting on\n this._events.forEach((event) => {\n switch (event.type) {\n case \"tx\": {\n const hash = event.hash;\n let runner = this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt || receipt.blockNumber == null) { return null; }\n this._emitted[\"t:\" + hash] = receipt.blockNumber;\n this.emit(hash, receipt);\n return null;\n }).catch((error: Error) => { this.emit(\"error\", error); });\n\n runners.push(runner);\n\n break;\n }\n\n case \"filter\": {\n // We only allow a single getLogs to be in-flight at a time\n if (!event._inflight) {\n event._inflight = true;\n\n // This is the first filter for this event, so we want to\n // restrict events to events that happened no earlier than now\n if (event._lastBlockNumber === -2) {\n event._lastBlockNumber = blockNumber - 1;\n }\n\n // Filter from the last *known* event; due to load-balancing\n // and some nodes returning updated block numbers before\n // indexing events, a logs result with 0 entries cannot be\n // trusted and we must retry a range which includes it again\n const filter = event.filter;\n filter.fromBlock = event._lastBlockNumber + 1;\n filter.toBlock = blockNumber;\n\n // Prevent fitler ranges from growing too wild, since it is quite\n // likely there just haven't been any events to move the lastBlockNumber.\n const minFromBlock = filter.toBlock - this._maxFilterBlockRange;\n if (minFromBlock > filter.fromBlock) { filter.fromBlock = minFromBlock; }\n\n if (filter.fromBlock < 0) { filter.fromBlock = 0; }\n\n const runner = this.getLogs(filter).then((logs) => {\n // Allow the next getLogs\n event._inflight = false;\n\n if (logs.length === 0) { return; }\n\n logs.forEach((log: Log) => {\n // Only when we get an event for a given block number\n // can we trust the events are indexed\n if (log.blockNumber > event._lastBlockNumber) {\n event._lastBlockNumber = log.blockNumber;\n }\n\n // Make sure we stall requests to fetch blocks and txs\n this._emitted[\"b:\" + log.blockHash] = log.blockNumber;\n this._emitted[\"t:\" + log.transactionHash] = log.blockNumber;\n\n this.emit(filter, log);\n });\n }).catch((error: Error) => {\n this.emit(\"error\", error);\n\n // Allow another getLogs (the range was not updated)\n event._inflight = false;\n });\n runners.push(runner);\n }\n\n break;\n }\n }\n });\n\n this._lastBlockNumber = blockNumber;\n\n // Once all events for this loop have been processed, emit \"didPoll\"\n Promise.all(runners).then(() => {\n this.emit(\"didPoll\", pollId);\n }).catch((error) => { this.emit(\"error\", error); });\n\n return;\n }\n\n // Deprecated; do not use this\n resetEventsBlock(blockNumber: number): void {\n this._lastBlockNumber = blockNumber - 1;\n if (this.polling) { this.poll(); }\n }\n\n get network(): Network {\n return this._network;\n }\n\n // This method should query the network if the underlying network\n // can change, such as when connected to a JSON-RPC backend\n async detectNetwork(): Promise {\n return logger.throwError(\"provider does not support network detection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"provider.detectNetwork\"\n });\n }\n\n async getNetwork(): Promise {\n const network = await this._ready();\n\n // Make sure we are still connected to the same network; this is\n // only an external call for backends which can have the underlying\n // network change spontaneously\n const currentNetwork = await this.detectNetwork();\n if (network.chainId !== currentNetwork.chainId) {\n\n // We are allowing network changes, things can get complex fast;\n // make sure you know what you are doing if you use \"any\"\n if (this.anyNetwork) {\n this._network = currentNetwork;\n\n // Reset all internal block number guards and caches\n this._lastBlockNumber = -2;\n this._fastBlockNumber = null;\n this._fastBlockNumberPromise = null;\n this._fastQueryDate = 0;\n this._emitted.block = -2;\n this._maxInternalBlockNumber = -1024;\n this._internalBlockNumber = null;\n\n // The \"network\" event MUST happen before this method resolves\n // so any events have a chance to unregister, so we stall an\n // additional event loop before returning from /this/ call\n this.emit(\"network\", currentNetwork, network);\n await stall(0);\n\n return this._network;\n }\n\n const error = logger.makeError(\"underlying network changed\", Logger.errors.NETWORK_ERROR, {\n event: \"changed\",\n network: network,\n detectedNetwork: currentNetwork\n });\n\n this.emit(\"error\", error);\n throw error;\n }\n\n return network;\n }\n\n get blockNumber(): number {\n this._getInternalBlockNumber(100 + this.pollingInterval / 2).then((blockNumber) => {\n this._setFastBlockNumber(blockNumber);\n }, (error) => { });\n\n return (this._fastBlockNumber != null) ? this._fastBlockNumber: -1;\n }\n\n get polling(): boolean {\n return (this._poller != null);\n }\n\n set polling(value: boolean) {\n if (value && !this._poller) {\n this._poller = setInterval(() => { this.poll(); }, this.pollingInterval);\n\n if (!this._bootstrapPoll) {\n this._bootstrapPoll = setTimeout(() => {\n this.poll();\n\n // We block additional polls until the polling interval\n // is done, to prevent overwhelming the poll function\n this._bootstrapPoll = setTimeout(() => {\n // If polling was disabled, something may require a poke\n // since starting the bootstrap poll and it was disabled\n if (!this._poller) { this.poll(); }\n\n // Clear out the bootstrap so we can do another\n this._bootstrapPoll = null;\n }, this.pollingInterval);\n }, 0);\n }\n\n } else if (!value && this._poller) {\n clearInterval(this._poller);\n this._poller = null;\n }\n }\n\n get pollingInterval(): number {\n return this._pollingInterval;\n }\n\n set pollingInterval(value: number) {\n if (typeof(value) !== \"number\" || value <= 0 || parseInt(String(value)) != value) {\n throw new Error(\"invalid polling interval\");\n }\n\n this._pollingInterval = value;\n\n if (this._poller) {\n clearInterval(this._poller);\n this._poller = setInterval(() => { this.poll(); }, this._pollingInterval);\n }\n }\n\n _getFastBlockNumber(): Promise {\n const now = getTime();\n\n // Stale block number, request a newer value\n if ((now - this._fastQueryDate) > 2 * this._pollingInterval) {\n this._fastQueryDate = now;\n this._fastBlockNumberPromise = this.getBlockNumber().then((blockNumber) => {\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n }\n return this._fastBlockNumber;\n });\n }\n\n return this._fastBlockNumberPromise;\n }\n\n _setFastBlockNumber(blockNumber: number): void {\n // Older block, maybe a stale request\n if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) { return; }\n\n // Update the time we updated the blocknumber\n this._fastQueryDate = getTime();\n\n // Newer block number, use it\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n this._fastBlockNumberPromise = Promise.resolve(blockNumber);\n }\n }\n\n async waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise {\n return this._waitForTransaction(transactionHash, (confirmations == null) ? 1: confirmations, timeout || 0, null);\n }\n\n async _waitForTransaction(transactionHash: string, confirmations: number, timeout: number, replaceable: { data: string, from: string, nonce: number, to: string, value: BigNumber, startBlock: number }): Promise {\n const receipt = await this.getTransactionReceipt(transactionHash);\n\n // Receipt is already good\n if ((receipt ? receipt.confirmations: 0) >= confirmations) { return receipt; }\n\n // Poll until the receipt is good...\n return new Promise((resolve, reject) => {\n const cancelFuncs: Array<() => void> = [];\n\n let done = false;\n const alreadyDone = function() {\n if (done) { return true; }\n done = true;\n cancelFuncs.forEach((func) => { func(); });\n return false;\n };\n\n const minedHandler = (receipt: TransactionReceipt) => {\n if (receipt.confirmations < confirmations) { return; }\n if (alreadyDone()) { return; }\n resolve(receipt);\n }\n this.on(transactionHash, minedHandler);\n cancelFuncs.push(() => { this.removeListener(transactionHash, minedHandler); });\n\n if (replaceable) {\n let lastBlockNumber = replaceable.startBlock;\n let scannedBlock: number = null;\n const replaceHandler = async (blockNumber: number) => {\n if (done) { return; }\n\n // Wait 1 second; this is only used in the case of a fault, so\n // we will trade off a little bit of latency for more consistent\n // results and fewer JSON-RPC calls\n await stall(1000);\n\n this.getTransactionCount(replaceable.from).then(async (nonce) => {\n if (done) { return; }\n\n if (nonce <= replaceable.nonce) {\n lastBlockNumber = blockNumber;\n\n } else {\n // First check if the transaction was mined\n {\n const mined = await this.getTransaction(transactionHash);\n if (mined && mined.blockNumber != null) { return; }\n }\n\n // First time scanning. We start a little earlier for some\n // wiggle room here to handle the eventually consistent nature\n // of blockchain (e.g. the getTransactionCount was for a\n // different block)\n if (scannedBlock == null) {\n scannedBlock = lastBlockNumber - 3;\n if (scannedBlock < replaceable.startBlock) {\n scannedBlock = replaceable.startBlock;\n }\n }\n\n while (scannedBlock <= blockNumber) {\n if (done) { return; }\n\n const block = await this.getBlockWithTransactions(scannedBlock);\n for (let ti = 0; ti < block.transactions.length; ti++) {\n const tx = block.transactions[ti];\n\n // Successfully mined!\n if (tx.hash === transactionHash) { return; }\n\n // Matches our transaction from and nonce; its a replacement\n if (tx.from === replaceable.from && tx.nonce === replaceable.nonce) {\n if (done) { return; }\n\n // Get the receipt of the replacement\n const receipt = await this.waitForTransaction(tx.hash, confirmations);\n\n // Already resolved or rejected (prolly a timeout)\n if (alreadyDone()) { return; }\n\n // The reason we were replaced\n let reason = \"replaced\";\n if (tx.data === replaceable.data && tx.to === replaceable.to && tx.value.eq(replaceable.value)) {\n reason = \"repriced\";\n } else if (tx.data === \"0x\" && tx.from === tx.to && tx.value.isZero()) {\n reason = \"cancelled\"\n }\n\n // Explain why we were replaced\n reject(logger.makeError(\"transaction was replaced\", Logger.errors.TRANSACTION_REPLACED, {\n cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n reason,\n replacement: this._wrapTransaction(tx),\n hash: transactionHash,\n receipt\n }));\n\n return;\n }\n }\n scannedBlock++;\n }\n }\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n }, (error) => {\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n });\n };\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n cancelFuncs.push(() => {\n this.removeListener(\"block\", replaceHandler);\n });\n }\n\n if (typeof(timeout) === \"number\" && timeout > 0) {\n const timer = setTimeout(() => {\n if (alreadyDone()) { return; }\n reject(logger.makeError(\"timeout exceeded\", Logger.errors.TIMEOUT, { timeout: timeout }));\n }, timeout);\n if (timer.unref) { timer.unref(); }\n\n cancelFuncs.push(() => { clearTimeout(timer); });\n }\n });\n }\n\n async getBlockNumber(): Promise {\n return this._getInternalBlockNumber(0);\n }\n\n async getGasPrice(): Promise {\n await this.getNetwork();\n\n const result = await this.perform(\"getGasPrice\", { });\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getGasPrice\",\n result, error\n });\n }\n }\n\n async getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getBalance\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getBalance\",\n params, result, error\n });\n }\n }\n\n async getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getTransactionCount\", params);\n try {\n return BigNumber.from(result).toNumber();\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getTransactionCount\",\n params, result, error\n });\n }\n }\n\n async getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getCode\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getCode\",\n params, result, error\n });\n }\n }\n\n async getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag),\n position: Promise.resolve(position).then((p) => hexValue(p))\n });\n const result = await this.perform(\"getStorageAt\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getStorageAt\",\n params, result, error\n });\n }\n }\n\n // This should be called by any subclass wrapping a TransactionResponse\n _wrapTransaction(tx: Transaction, hash?: string, startBlock?: number): TransactionResponse {\n if (hash != null && hexDataLength(hash) !== 32) { throw new Error(\"invalid response - sendTransaction\"); }\n\n const result = tx;\n\n // Check the hash we expect is the same as the hash the server reported\n if (hash != null && tx.hash !== hash) {\n logger.throwError(\"Transaction hash mismatch from Provider.sendTransaction.\", Logger.errors.UNKNOWN_ERROR, { expectedHash: tx.hash, returnedHash: hash });\n }\n\n result.wait = async (confirms?: number, timeout?: number) => {\n if (confirms == null) { confirms = 1; }\n if (timeout == null) { timeout = 0; }\n\n // Get the details to detect replacement\n let replacement = undefined;\n if (confirms !== 0 && startBlock != null) {\n replacement = {\n data: tx.data,\n from: tx.from,\n nonce: tx.nonce,\n to: tx.to,\n value: tx.value,\n startBlock\n };\n }\n\n const receipt = await this._waitForTransaction(tx.hash, confirms, timeout, replacement);\n if (receipt == null && confirms === 0) { return null; }\n\n // No longer pending, allow the polling loop to garbage collect this\n this._emitted[\"t:\" + tx.hash] = receipt.blockNumber;\n\n if (receipt.status === 0) {\n logger.throwError(\"transaction failed\", Logger.errors.CALL_EXCEPTION, {\n transactionHash: tx.hash,\n transaction: tx,\n receipt: receipt\n });\n }\n return receipt;\n };\n\n return result;\n }\n\n async sendTransaction(signedTransaction: string | Promise): Promise {\n await this.getNetwork();\n const hexTx = await Promise.resolve(signedTransaction).then(t => hexlify(t));\n const tx = this.formatter.transaction(signedTransaction);\n if (tx.confirmations == null) { tx.confirmations = 0; }\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n try {\n const hash = await this.perform(\"sendTransaction\", { signedTransaction: hexTx });\n return this._wrapTransaction(tx, hash, blockNumber);\n } catch (error) {\n (error).transaction = tx;\n (error).transactionHash = tx.hash;\n throw error;\n }\n }\n\n async _getTransactionRequest(transaction: Deferrable): Promise {\n const values: any = await transaction;\n\n const tx: any = { };\n\n [\"from\", \"to\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? this._getAddress(v): null))\n });\n\n [\"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"value\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? BigNumber.from(v): null));\n });\n\n [\"type\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => ((v != null) ? v: null));\n });\n\n if (values.accessList) {\n tx.accessList = this.formatter.accessList(values.accessList);\n }\n\n [\"data\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? hexlify(v): null));\n });\n\n return this.formatter.transactionRequest(await resolveProperties(tx));\n }\n\n async _getFilter(filter: Filter | FilterByBlockHash | Promise): Promise {\n filter = await filter;\n\n const result: any = { };\n\n if (filter.address != null) {\n result.address = this._getAddress(filter.address);\n }\n\n [\"blockHash\", \"topics\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = (filter)[key];\n });\n\n [\"fromBlock\", \"toBlock\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = this._getBlockTag((filter)[key]);\n });\n\n return this.formatter.filter(await resolveProperties(result));\n }\n\n async _call(transaction: TransactionRequest, blockTag: BlockTag, attempt: number): Promise {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", Logger.errors.SERVER_ERROR, {\n redirects: attempt, transaction\n });\n }\n\n const txSender = transaction.to;\n\n const result = await this.perform(\"call\", { transaction, blockTag });\n\n // CCIP Read request via OffchainLookup(address,string[],bytes,bytes4,bytes)\n if (attempt >= 0 && blockTag === \"latest\" && txSender != null && result.substring(0, 10) === \"0x556f1830\" && (hexDataLength(result) % 32 === 4)) {\n try {\n const data = hexDataSlice(result, 4);\n\n // Check the sender of the OffchainLookup matches the transaction\n const sender = hexDataSlice(data, 0, 32);\n if (!BigNumber.from(sender).eq(txSender)) {\n logger.throwError(\"CCIP Read sender did not match\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n // Read the URLs from the response\n const urls: Array = [];\n const urlsOffset = BigNumber.from(hexDataSlice(data, 32, 64)).toNumber();\n const urlsLength = BigNumber.from(hexDataSlice(data, urlsOffset, urlsOffset + 32)).toNumber();\n const urlsData = hexDataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n logger.throwError(\"CCIP Read contained corrupt URL string\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n urls.push(url);\n }\n\n // Get the CCIP calldata to forward\n const calldata = _parseBytes(data, 64);\n\n // Get the callbackSelector (bytes4)\n if (!BigNumber.from(hexDataSlice(data, 100, 128)).isZero()) {\n logger.throwError(\"CCIP Read callback selector included junk\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n const callbackSelector = hexDataSlice(data, 96, 100);\n\n // Get the extra data to send back to the contract as context\n const extraData = _parseBytes(data, 128);\n\n const ccipResult = await this.ccipReadFetch(transaction, calldata, urls);\n if (ccipResult == null) {\n logger.throwError(\"CCIP Read disabled or provided no URLs\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n const tx = {\n to: txSender,\n data: hexConcat([ callbackSelector, encodeBytes([ ccipResult, extraData ]) ])\n };\n\n return this._call(tx, blockTag, attempt + 1);\n\n } catch (error) {\n if (error.code === Logger.errors.SERVER_ERROR) { throw error; }\n }\n }\n\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"call\",\n params: { transaction, blockTag }, result, error\n });\n }\n\n }\n\n async call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const resolved = await resolveProperties({\n transaction: this._getTransactionRequest(transaction),\n blockTag: this._getBlockTag(blockTag),\n ccipReadEnabled: Promise.resolve(transaction.ccipReadEnabled)\n });\n return this._call(resolved.transaction, resolved.blockTag, resolved.ccipReadEnabled ? 0: -1);\n }\n\n async estimateGas(transaction: Deferrable): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n transaction: this._getTransactionRequest(transaction)\n });\n\n const result = await this.perform(\"estimateGas\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"estimateGas\",\n params, result, error\n });\n }\n }\n\n async _getAddress(addressOrName: string | Promise): Promise {\n addressOrName = await addressOrName;\n if (typeof(addressOrName) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", addressOrName);\n }\n\n const address = await this.resolveName(addressOrName);\n if (address == null) {\n logger.throwError(\"ENS name not configured\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `resolveName(${ JSON.stringify(addressOrName) })`\n });\n }\n return address;\n }\n\n async _getBlock(blockHashOrBlockTag: BlockTag | string | Promise, includeTransactions?: boolean): Promise {\n await this.getNetwork();\n\n blockHashOrBlockTag = await blockHashOrBlockTag;\n\n // If blockTag is a number (not \"latest\", etc), this is the block number\n let blockNumber = -128;\n\n const params: { [key: string]: any } = {\n includeTransactions: !!includeTransactions\n };\n\n if (isHexString(blockHashOrBlockTag, 32)) {\n params.blockHash = blockHashOrBlockTag;\n } else {\n try {\n params.blockTag = await this._getBlockTag(blockHashOrBlockTag);\n if (isHexString(params.blockTag)) {\n blockNumber = parseInt(params.blockTag.substring(2), 16);\n }\n } catch (error) {\n logger.throwArgumentError(\"invalid block hash or block tag\", \"blockHashOrBlockTag\", blockHashOrBlockTag);\n }\n }\n\n return poll(async () => {\n const block = await this.perform(\"getBlock\", params);\n\n // Block was not found\n if (block == null) {\n\n // For blockhashes, if we didn't say it existed, that blockhash may\n // not exist. If we did see it though, perhaps from a log, we know\n // it exists, and this node is just not caught up yet.\n if (params.blockHash != null) {\n if (this._emitted[\"b:\" + params.blockHash] == null) { return null; }\n }\n\n // For block tags, if we are asking for a future block, we return null\n if (params.blockTag != null) {\n if (blockNumber > this._emitted.block) { return null; }\n }\n\n // Retry on the next block\n return undefined;\n }\n\n // Add transactions\n if (includeTransactions) {\n let blockNumber: number = null;\n for (let i = 0; i < block.transactions.length; i++) {\n const tx = block.transactions[i];\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n if (blockNumber == null) {\n blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n }\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n }\n\n const blockWithTxs: any = this.formatter.blockWithTransactions(block);\n blockWithTxs.transactions = blockWithTxs.transactions.map((tx: TransactionResponse) => this._wrapTransaction(tx));\n return blockWithTxs;\n }\n\n return this.formatter.block(block);\n\n }, { oncePoll: this });\n }\n\n getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, false));\n }\n\n getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, true));\n }\n\n async getTransaction(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransaction\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n const tx = this.formatter.transactionResponse(result);\n\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n\n return this._wrapTransaction(tx);\n }, { oncePoll: this });\n }\n\n async getTransactionReceipt(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransactionReceipt\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n // \"geth-etc\" returns receipts before they are ready\n if (result.blockHash == null) { return undefined; }\n\n const receipt = this.formatter.receipt(result);\n\n if (receipt.blockNumber == null) {\n receipt.confirmations = 0;\n\n } else if (receipt.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - receipt.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n receipt.confirmations = confirmations;\n }\n\n return receipt;\n }, { oncePoll: this });\n }\n\n async getLogs(filter: Filter | FilterByBlockHash | Promise): Promise> {\n await this.getNetwork();\n const params = await resolveProperties({ filter: this._getFilter(filter) });\n const logs: Array = await this.perform(\"getLogs\", params);\n logs.forEach((log) => {\n if (log.removed == null) { log.removed = false; }\n });\n return Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs);\n }\n\n async getEtherPrice(): Promise {\n await this.getNetwork();\n return this.perform(\"getEtherPrice\", { });\n }\n\n async _getBlockTag(blockTag: BlockTag | Promise): Promise {\n blockTag = await blockTag;\n\n if (typeof(blockTag) === \"number\" && blockTag < 0) {\n if (blockTag % 1) {\n logger.throwArgumentError(\"invalid BlockTag\", \"blockTag\", blockTag);\n }\n\n let blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n blockNumber += blockTag;\n if (blockNumber < 0) { blockNumber = 0; }\n return this.formatter.blockTag(blockNumber)\n }\n\n return this.formatter.blockTag(blockTag);\n }\n\n\n async getResolver(name: string): Promise {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") { return null; }\n\n // Optimization since the eth node cannot change and does\n // not have a wildcard resolver\n if (name !== \"eth\" && currentName === \"eth\") { return null; }\n\n // Check the current node for a resolver\n const addr = await this._getResolver(currentName, \"getResolver\");\n\n // Found a resolver!\n if (addr != null) {\n const resolver = new Resolver(this, addr, name);\n\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) { return null; }\n\n return resolver;\n }\n\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n\n }\n\n async _getResolver(name: string, operation?: string): Promise {\n if (operation == null) { operation = \"ENS\"; }\n\n const network = await this.getNetwork();\n\n // No ENS...\n if (!network.ensAddress) {\n logger.throwError(\n \"network does not support ENS\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation, network: network.name }\n );\n }\n\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await this.call({\n to: network.ensAddress,\n data: (\"0x0178b8bf\" + namehash(name).substring(2))\n });\n return this.formatter.callAddress(addrData);\n } catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32)\n }\n\n return null;\n }\n\n async resolveName(name: string | Promise): Promise {\n name = await name;\n\n // If it is already an address, nothing to resolve\n try {\n return Promise.resolve(this.formatter.address(name));\n } catch (error) {\n // If is is a hexstring, the address is bad (See #694)\n if (isHexString(name)) { throw error; }\n }\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name\", \"name\", name);\n }\n\n // Get the addr from the resolver\n const resolver = await this.getResolver(name);\n if (!resolver) { return null; }\n\n return await resolver.getAddress();\n }\n\n async lookupAddress(address: string | Promise): Promise {\n address = await address;\n address = this.formatter.address(address);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddr = await this._getResolver(node, \"lookupAddress\");\n if (resolverAddr == null) { return null; }\n\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddr,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n\n const addr = await this.resolveName(name);\n if (addr != address) { return null; }\n\n return name;\n }\n\n async getAvatar(nameOrAddress: string): Promise {\n let resolver: Resolver = null;\n if (isHexString(nameOrAddress)) {\n // Address; reverse lookup\n const address = this.formatter.address(nameOrAddress);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddress = await this._getResolver(node, \"getAvatar\");\n if (!resolverAddress) { return null; }\n\n // Try resolving the avatar against the addr.reverse resolver\n resolver = new Resolver(this, resolverAddress, node);\n try {\n const avatar = await resolver.getAvatar();\n if (avatar) { return avatar.url; }\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n }\n\n // Try getting the name and performing forward lookup; allowing wildcards\n try {\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddress,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n resolver = await this.getResolver(name);\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n return null;\n }\n\n } else {\n // ENS name; forward lookup with wildcard\n resolver = await this.getResolver(nameOrAddress);\n if (!resolver) { return null; }\n }\n\n const avatar = await resolver.getAvatar();\n if (avatar == null) { return null; }\n\n return avatar.url;\n }\n\n perform(method: string, params: any): Promise {\n return logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n\n _startEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _stopEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _addEventListener(eventName: EventType, listener: Listener, once: boolean): this {\n const event = new Event(getEventTag(eventName), listener, once)\n this._events.push(event);\n this._startEvent(event);\n\n return this;\n }\n\n on(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, false);\n }\n\n once(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, true);\n }\n\n\n emit(eventName: EventType, ...args: Array): boolean {\n let result = false;\n\n let stopped: Array = [ ];\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n\n setTimeout(() => {\n event.listener.apply(this, args);\n }, 0);\n\n result = true;\n\n if (event.once) {\n stopped.push(event);\n return false;\n }\n\n return true;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return result;\n }\n\n listenerCount(eventName?: EventType): number {\n if (!eventName) { return this._events.length; }\n\n let eventTag = getEventTag(eventName);\n return this._events.filter((event) => {\n return (event.tag === eventTag);\n }).length;\n }\n\n listeners(eventName?: EventType): Array {\n if (eventName == null) {\n return this._events.map((event) => event.listener);\n }\n\n let eventTag = getEventTag(eventName);\n return this._events\n .filter((event) => (event.tag === eventTag))\n .map((event) => event.listener);\n }\n\n off(eventName: EventType, listener?: Listener): this {\n if (listener == null) {\n return this.removeAllListeners(eventName);\n }\n\n const stopped: Array = [ ];\n\n let found = false;\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag || event.listener != listener) { return true; }\n if (found) { return true; }\n found = true;\n stopped.push(event);\n return false;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n\n removeAllListeners(eventName?: EventType): this {\n let stopped: Array = [ ];\n if (eventName == null) {\n stopped = this._events;\n\n this._events = [ ];\n } else {\n const eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n stopped.push(event);\n return false;\n });\n }\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n}\n","export const HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/JSON-RPC\n\nimport { Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Bytes, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { checkProperties, deepCopy, Deferrable, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { AccessList, accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson, poll } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider, Event } from \"./base-provider\";\n\n\nconst errorGas = [ \"call\", \"estimateGas\" ];\n\nfunction spelunk(value: any, requireData: boolean): null | { message: string, data: null | string } {\n if (value == null) { return null; }\n\n // These *are* the droids we're looking for.\n if (typeof(value.message) === \"string\" && value.message.match(\"reverted\")) {\n const data = isHexString(value.data) ? value.data: null;\n if (!requireData || data) {\n return { message: value.message, data };\n }\n }\n\n // Spelunk further...\n if (typeof(value) === \"object\") {\n for (const key in value) {\n const result = spelunk(value[key], requireData);\n if (result) { return result; }\n }\n return null;\n }\n\n // Might be a JSON string we can further descend...\n if (typeof(value) === \"string\") {\n try {\n return spelunk(JSON.parse(value), requireData);\n } catch (error) { }\n }\n\n return null;\n}\n\nfunction checkError(method: string, error: any, params: any): any {\n\n const transaction = params.transaction || params.signedTransaction;\n\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\") {\n const result = spelunk(error, true);\n if (result) { return result.data; }\n\n // Nothing descriptive..\n logger.throwError(\"missing revert data in call exception; Transaction reverted without a reason string\", Logger.errors.CALL_EXCEPTION, {\n data: \"0x\", transaction, error\n });\n }\n\n if (method === \"estimateGas\") {\n // Try to find something, with a preference on SERVER_ERROR body\n let result = spelunk(error.body, false);\n if (result == null) { result = spelunk(error, false); }\n\n // Found \"reverted\", this is a CALL_EXCEPTION\n if (result) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n reason: result.message, method, transaction, error\n });\n }\n }\n\n // @TODO: Should we spelunk for message too?\n\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR && error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n message = (message || \"\").toLowerCase();\n\n // \"insufficient funds for gas * price + value + cost(data)\"\n if (message.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"nonce too low\"\n if (message.match(/nonce (is )?too low/i)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction underpriced|transaction gas price.*too low/i)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/only replay-protected/i)) {\n logger.throwError(\"legacy pre-eip-155 transactions not supported\", Logger.errors.UNSUPPORTED_OPERATION, {\n error, method, transaction\n });\n }\n\n if (errorGas.indexOf(method) >= 0 && message.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nfunction timer(timeout: number): Promise {\n return new Promise(function(resolve) {\n setTimeout(resolve, timeout);\n });\n}\n\nfunction getResult(payload: { error?: { code?: number, data?: any, message?: string }, result?: any }): any {\n if (payload.error) {\n // @TODO: not any\n const error: any = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n throw error;\n }\n\n return payload.result;\n}\n\nfunction getLowerCase(value: string): string {\n if (value) { return value.toLowerCase(); }\n return value;\n}\n\nconst _constructorGuard = {};\n\nexport class JsonRpcSigner extends Signer implements TypedDataSigner {\n readonly provider: JsonRpcProvider;\n _index: number;\n _address: string;\n\n constructor(constructorGuard: any, provider: JsonRpcProvider, addressOrIndex?: string | number) {\n super();\n\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"do not call the JsonRpcSigner constructor directly; use provider.getSigner\");\n }\n\n defineReadOnly(this, \"provider\", provider);\n\n if (addressOrIndex == null) { addressOrIndex = 0; }\n\n if (typeof(addressOrIndex) === \"string\") {\n defineReadOnly(this, \"_address\", this.provider.formatter.address(addressOrIndex));\n defineReadOnly(this, \"_index\", null);\n\n } else if (typeof(addressOrIndex) === \"number\") {\n defineReadOnly(this, \"_index\", addressOrIndex);\n defineReadOnly(this, \"_address\", null);\n\n } else {\n logger.throwArgumentError(\"invalid address or index\", \"addressOrIndex\", addressOrIndex);\n }\n }\n\n connect(provider: Provider): JsonRpcSigner {\n return logger.throwError(\"cannot alter JSON-RPC Signer connection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"connect\"\n });\n }\n\n connectUnchecked(): JsonRpcSigner {\n return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);\n }\n\n getAddress(): Promise {\n if (this._address) {\n return Promise.resolve(this._address);\n }\n\n return this.provider.send(\"eth_accounts\", []).then((accounts) => {\n if (accounts.length <= this._index) {\n logger.throwError(\"unknown account #\" + this._index, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress\"\n });\n }\n return this.provider.formatter.address(accounts[this._index])\n });\n }\n\n sendUncheckedTransaction(transaction: Deferrable): Promise {\n transaction = shallowCopy(transaction);\n\n const fromAddress = this.getAddress().then((address) => {\n if (address) { address = address.toLowerCase(); }\n return address;\n });\n\n // The JSON-RPC for eth_sendTransaction uses 90000 gas; if the user\n // wishes to use this, it is easy to specify explicitly, otherwise\n // we look it up for them.\n if (transaction.gasLimit == null) {\n const estimate = shallowCopy(transaction);\n estimate.from = fromAddress;\n transaction.gasLimit = this.provider.estimateGas(estimate);\n }\n\n if (transaction.to != null) {\n transaction.to = Promise.resolve(transaction.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.provider.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n }\n\n return resolveProperties({\n tx: resolveProperties(transaction),\n sender: fromAddress\n }).then(({ tx, sender }) => {\n\n if (tx.from != null) {\n if (tx.from.toLowerCase() !== sender) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n } else {\n tx.from = sender;\n }\n\n const hexTx = (this.provider.constructor).hexlifyTransaction(tx, { from: true });\n\n return this.provider.send(\"eth_sendTransaction\", [ hexTx ]).then((hash) => {\n return hash;\n }, (error) => {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected transaction\", Logger.errors.ACTION_REJECTED, {\n action: \"sendTransaction\",\n transaction: tx\n });\n }\n\n return checkError(\"sendTransaction\", error, hexTx);\n });\n });\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return logger.throwError(\"signing transactions is unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signTransaction\"\n });\n }\n\n async sendTransaction(transaction: Deferrable): Promise {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider._getInternalBlockNumber(100 + 2 * this.provider.pollingInterval);\n\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(transaction);\n\n try {\n // Unfortunately, JSON-RPC only provides and opaque transaction hash\n // for a response, and we need the actual transaction, so we poll\n // for it; it should show up very quickly\n return await poll(async () => {\n const tx = await this.provider.getTransaction(hash);\n if (tx === null) { return undefined; }\n return this.provider._wrapTransaction(tx, hash, blockNumber);\n }, { oncePoll: this.provider });\n } catch (error) {\n (error).transactionHash = hash;\n throw error;\n }\n }\n\n async signMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n try {\n return await this.provider.send(\"personal_sign\", [ hexlify(data), address.toLowerCase() ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"signMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _legacySignMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n\n try {\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n return await this.provider.send(\"eth_sign\", [ address.toLowerCase(), hexlify(data) ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_legacySignMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n // Populate any ENS names (in-place)\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n return this.provider.resolveName(name);\n });\n\n const address = await this.getAddress();\n\n try {\n return await this.provider.send(\"eth_signTypedData_v4\", [\n address.toLowerCase(),\n JSON.stringify(_TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_signTypedData\",\n from: address,\n messageData: { domain: populated.domain, types, value: populated.value }\n });\n }\n throw error;\n }\n }\n\n async unlock(password: string): Promise {\n const provider = this.provider;\n\n const address = await this.getAddress();\n\n return provider.send(\"personal_unlockAccount\", [ address.toLowerCase(), password, null ]);\n }\n}\n\nclass UncheckedJsonRpcSigner extends JsonRpcSigner {\n sendTransaction(transaction: Deferrable): Promise {\n return this.sendUncheckedTransaction(transaction).then((hash) => {\n return {\n hash: hash,\n nonce: null,\n gasLimit: null,\n gasPrice: null,\n data: null,\n value: null,\n chainId: null,\n confirmations: 0,\n from: null,\n wait: (confirmations?: number) => { return this.provider.waitForTransaction(hash, confirmations); }\n };\n });\n }\n}\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true\n}\n\nexport class JsonRpcProvider extends BaseProvider {\n readonly connection: ConnectionInfo;\n\n _pendingFilter: Promise;\n _nextId: number;\n\n // During any given event loop, the results for a given call will\n // all be the same, so we can dedup the calls to save requests and\n // bandwidth. @TODO: Try out generalizing this against send?\n _eventLoopCache: Record>;\n get _cache(): Record> {\n if (this._eventLoopCache == null) {\n this._eventLoopCache = { };\n }\n return this._eventLoopCache;\n }\n\n constructor(url?: ConnectionInfo | string, network?: Networkish) {\n let networkOrReady: Networkish | Promise = network;\n\n // The network is unknown, query the JSON-RPC for it\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then((network) => {\n resolve(network);\n }, (error) => {\n reject(error);\n });\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Default URL\n if (!url) { url = getStatic<() => string>(this.constructor, \"defaultUrl\")(); }\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"connection\",Object.freeze({\n url: url\n }));\n } else {\n defineReadOnly(this, \"connection\", Object.freeze(shallowCopy(url)));\n }\n\n this._nextId = 42;\n }\n\n static defaultUrl(): string {\n return \"http:/\\/localhost:8545\";\n }\n\n detectNetwork(): Promise {\n if (!this._cache[\"detectNetwork\"]) {\n this._cache[\"detectNetwork\"] = this._uncachedDetectNetwork();\n\n // Clear this cache at the beginning of the next event loop\n setTimeout(() => {\n this._cache[\"detectNetwork\"] = null;\n }, 0);\n }\n return this._cache[\"detectNetwork\"];\n }\n\n async _uncachedDetectNetwork(): Promise {\n await timer(0);\n\n let chainId = null;\n try {\n chainId = await this.send(\"eth_chainId\", [ ]);\n } catch (error) {\n try {\n chainId = await this.send(\"net_version\", [ ]);\n } catch (error) { }\n }\n\n if (chainId != null) {\n const getNetwork = getStatic<(network: Networkish) => Network>(this.constructor, \"getNetwork\");\n try {\n return getNetwork(BigNumber.from(chainId).toNumber());\n } catch (error) {\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n chainId: chainId,\n event: \"invalidNetwork\",\n serverError: error\n });\n }\n }\n\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n event: \"noNetwork\"\n });\n }\n\n getSigner(addressOrIndex?: string | number): JsonRpcSigner {\n return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);\n }\n\n getUncheckedSigner(addressOrIndex?: string | number): UncheckedJsonRpcSigner {\n return this.getSigner(addressOrIndex).connectUnchecked();\n }\n\n listAccounts(): Promise> {\n return this.send(\"eth_accounts\", []).then((accounts: Array) => {\n return accounts.map((a) => this.formatter.address(a));\n });\n }\n\n send(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n this.emit(\"debug\", {\n action: \"request\",\n request: deepCopy(request),\n provider: this\n });\n\n // We can expand this in the future to any call, but for now these\n // are the biggest wins and do not require any serializing parameters.\n const cache = ([ \"eth_chainId\", \"eth_blockNumber\" ].indexOf(method) >= 0);\n if (cache && this._cache[method]) {\n return this._cache[method];\n }\n\n const result = fetchJson(this.connection, JSON.stringify(request), getResult).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n return result;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n throw error;\n });\n\n // Cache the fetch, but clear it on the next event loop\n if (cache) {\n this._cache[method] = result;\n setTimeout(() => {\n this._cache[method] = null;\n }, 0);\n }\n\n return result;\n }\n\n prepareRequest(method: string, params: any): [ string, Array ] {\n switch (method) {\n case \"getBlockNumber\":\n return [ \"eth_blockNumber\", [] ];\n\n case \"getGasPrice\":\n return [ \"eth_gasPrice\", [] ];\n\n case \"getBalance\":\n return [ \"eth_getBalance\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getTransactionCount\":\n return [ \"eth_getTransactionCount\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getCode\":\n return [ \"eth_getCode\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getStorageAt\":\n return [ \"eth_getStorageAt\", [ getLowerCase(params.address), hexZeroPad(params.position, 32), params.blockTag ] ];\n\n case \"sendTransaction\":\n return [ \"eth_sendRawTransaction\", [ params.signedTransaction ] ]\n\n case \"getBlock\":\n if (params.blockTag) {\n return [ \"eth_getBlockByNumber\", [ params.blockTag, !!params.includeTransactions ] ];\n } else if (params.blockHash) {\n return [ \"eth_getBlockByHash\", [ params.blockHash, !!params.includeTransactions ] ];\n }\n return null;\n\n case \"getTransaction\":\n return [ \"eth_getTransactionByHash\", [ params.transactionHash ] ];\n\n case \"getTransactionReceipt\":\n return [ \"eth_getTransactionReceipt\", [ params.transactionHash ] ];\n\n case \"call\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_call\", [ hexlifyTransaction(params.transaction, { from: true }), params.blockTag ] ];\n }\n\n case \"estimateGas\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_estimateGas\", [ hexlifyTransaction(params.transaction, { from: true }) ] ];\n }\n\n case \"getLogs\":\n if (params.filter && params.filter.address != null) {\n params.filter.address = getLowerCase(params.filter.address);\n }\n return [ \"eth_getLogs\", [ params.filter ] ];\n\n default:\n break;\n }\n\n return null;\n }\n\n async perform(method: string, params: any): Promise {\n // Legacy networks do not like the type field being passed along (which\n // is fair), so we delete type if it is 0 and a non-EIP-1559 network\n if (method === \"call\" || method === \"estimateGas\") {\n const tx = params.transaction;\n if (tx && tx.type != null && BigNumber.from(tx.type).isZero()) {\n // If there are no EIP-1559 properties, it might be non-EIP-1559\n if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {\n const feeData = await this.getFeeData();\n if (feeData.maxFeePerGas == null && feeData.maxPriorityFeePerGas == null) {\n // Network doesn't know about EIP-1559 (and hence type)\n params = shallowCopy(params);\n params.transaction = shallowCopy(tx);\n delete params.transaction.type;\n }\n }\n }\n }\n\n const args = this.prepareRequest(method, params);\n\n if (args == null) {\n logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n try {\n return await this.send(args[0], args[1])\n } catch (error) {\n return checkError(method, error, params);\n }\n }\n\n _startEvent(event: Event): void {\n if (event.tag === \"pending\") { this._startPending(); }\n super._startEvent(event);\n }\n\n _startPending(): void {\n if (this._pendingFilter != null) { return; }\n const self = this;\n\n const pendingFilter: Promise = this.send(\"eth_newPendingTransactionFilter\", []);\n this._pendingFilter = pendingFilter;\n\n pendingFilter.then(function(filterId) {\n function poll() {\n self.send(\"eth_getFilterChanges\", [ filterId ]).then(function(hashes: Array) {\n if (self._pendingFilter != pendingFilter) { return null; }\n\n let seq = Promise.resolve();\n hashes.forEach(function(hash) {\n // @TODO: This should be garbage collected at some point... How? When?\n self._emitted[\"t:\" + hash.toLowerCase()] = \"pending\";\n seq = seq.then(function() {\n return self.getTransaction(hash).then(function(tx) {\n self.emit(\"pending\", tx);\n return null;\n });\n });\n });\n\n return seq.then(function() {\n return timer(1000);\n });\n }).then(function() {\n if (self._pendingFilter != pendingFilter) {\n self.send(\"eth_uninstallFilter\", [ filterId ]);\n return;\n }\n setTimeout(function() { poll(); }, 0);\n\n return null;\n }).catch((error: Error) => { });\n }\n poll();\n\n return filterId;\n }).catch((error: Error) => { });\n }\n\n _stopEvent(event: Event): void {\n if (event.tag === \"pending\" && this.listenerCount(\"pending\") === 0) {\n this._pendingFilter = null;\n }\n super._stopEvent(event);\n }\n\n // Convert an ethers.js transaction into a JSON-RPC transaction\n // - gasLimit => gas\n // - All values hexlified\n // - All numeric values zero-striped\n // - All addresses are lowercased\n // NOTE: This allows a TransactionRequest, but all values should be resolved\n // before this is called\n // @TODO: This will likely be removed in future versions and prepareRequest\n // will be the preferred method for this.\n static hexlifyTransaction(transaction: TransactionRequest, allowExtra?: { [key: string]: boolean }): { [key: string]: string | AccessList } {\n // Check only allowed properties are given\n const allowed = shallowCopy(allowedTransactionKeys);\n if (allowExtra) {\n for (const key in allowExtra) {\n if (allowExtra[key]) { allowed[key] = true; }\n }\n }\n\n checkProperties(transaction, allowed);\n\n const result: { [key: string]: string | AccessList } = {};\n\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n const value = hexValue(BigNumber.from((transaction)[key]));\n if (key === \"gasLimit\") { key = \"gas\"; }\n result[key] = value;\n });\n\n [\"from\", \"to\", \"data\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n result[key] = hexlify((transaction)[key]);\n });\n\n if ((transaction).accessList) {\n result[\"accessList\"] = accessListify((transaction).accessList);\n }\n\n return result;\n }\n}\n","\"use strict\";\n\nimport { Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Exported Types\nexport type ExternalProvider = {\n isMetaMask?: boolean;\n isStatus?: boolean;\n host?: string;\n path?: string;\n sendAsync?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n send?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n request?: (request: { method: string, params?: Array }) => Promise\n}\n\nlet _nextId = 1;\n\nexport type JsonRpcFetchFunc = (method: string, params?: Array) => Promise;\n\ntype Web3LegacySend = (request: any, callback: (error: Error, response: any) => void) => void;\n\nfunction buildWeb3LegacyFetcher(provider: ExternalProvider, sendFunc: Web3LegacySend) : JsonRpcFetchFunc {\n const fetcher = \"Web3LegacyFetcher\";\n\n return function(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (_nextId++),\n jsonrpc: \"2.0\"\n };\n\n return new Promise((resolve, reject) => {\n this.emit(\"debug\", {\n action: \"request\",\n fetcher,\n request: deepCopy(request),\n provider: this\n });\n\n sendFunc(request, (error, response) => {\n\n if (error) {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n error,\n request,\n provider: this\n });\n\n return reject(error);\n }\n\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n request,\n response,\n provider: this\n });\n\n if (response.error) {\n const error = new Error(response.error.message);\n (error).code = response.error.code;\n (error).data = response.error.data;\n return reject(error);\n }\n\n resolve(response.result);\n });\n });\n }\n}\n\nfunction buildEip1193Fetcher(provider: ExternalProvider): JsonRpcFetchFunc {\n return function(method: string, params: Array): Promise {\n if (params == null) { params = [ ]; }\n\n const request = { method, params };\n\n this.emit(\"debug\", {\n action: \"request\",\n fetcher: \"Eip1193Fetcher\",\n request: deepCopy(request),\n provider: this\n });\n\n return provider.request(request).then((response) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n response,\n provider: this\n });\n\n return response;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n error,\n provider: this\n });\n\n throw error;\n });\n }\n}\n\nexport class Web3Provider extends JsonRpcProvider {\n readonly provider: ExternalProvider;\n readonly jsonRpcFetchFunc: JsonRpcFetchFunc;\n\n constructor(provider: ExternalProvider | JsonRpcFetchFunc, network?: Networkish) {\n if (provider == null) {\n logger.throwArgumentError(\"missing provider\", \"provider\", provider);\n }\n\n let path: string = null;\n let jsonRpcFetchFunc: JsonRpcFetchFunc = null;\n let subprovider: ExternalProvider = null;\n\n if (typeof(provider) === \"function\") {\n path = \"unknown:\";\n jsonRpcFetchFunc = provider;\n\n } else {\n path = provider.host || provider.path || \"\";\n if (!path && provider.isMetaMask) {\n path = \"metamask\";\n }\n\n subprovider = provider;\n\n if (provider.request) {\n if (path === \"\") { path = \"eip-1193:\"; }\n jsonRpcFetchFunc = buildEip1193Fetcher(provider);\n } else if (provider.sendAsync) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));\n } else if (provider.send) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));\n } else {\n logger.throwArgumentError(\"unsupported provider\", \"provider\", provider);\n }\n\n if (!path) { path = \"unknown:\"; }\n }\n\n super(path, network);\n\n defineReadOnly(this, \"jsonRpcFetchFunc\", jsonRpcFetchFunc);\n defineReadOnly(this, \"provider\", subprovider);\n }\n\n send(method: string, params: Array): Promise {\n return this.jsonRpcFetchFunc(method, params);\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n",null,null,null,null,"var img = \"data:image/svg+xml,%3csvg width='22' height='22' viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M22.901 5.15332H26.581L18.541 14.3433L28 26.8463H20.594L14.794 19.2623L8.156 26.8463H4.474L13.074 17.0163L4 5.15432H11.594L16.837 12.0863L22.901 5.15332ZM21.61 24.6443H23.649L10.486 7.24032H8.298L21.61 24.6443Z' fill='%23676B73' /%3e%3c/svg%3e\";\n export default img;",null,"var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='23' height='22' viewBox='0 0 23 22' fill='none'%3e %3cg clip-path='url(%23clip0_845_21346)'%3e %3cpath d='M20.4913 2.29978C20.3854 2.20831 20.2565 2.14749 20.1186 2.12385C19.9807 2.10021 19.8389 2.11465 19.7086 2.16562L2.39095 8.94278C2.14552 9.03822 1.93774 9.2108 1.79888 9.43455C1.66002 9.65829 1.59761 9.92109 1.62103 10.1834C1.64445 10.4457 1.75245 10.6933 1.92876 10.8889C2.10506 11.0845 2.34014 11.2175 2.5986 11.2679L7.08566 12.1489V17.1521C7.08478 17.4246 7.16577 17.6911 7.31813 17.9171C7.47049 18.143 7.6872 18.318 7.94018 18.4194C8.19277 18.5225 8.47055 18.5473 8.73739 18.4904C9.00424 18.4336 9.24781 18.2978 9.43644 18.1006L11.6001 15.8567L15.0327 18.8612C15.2803 19.0808 15.5997 19.2024 15.9308 19.203C16.0758 19.2028 16.22 19.1801 16.358 19.1355C16.5836 19.0639 16.7864 18.9345 16.9464 18.7601C17.1064 18.5857 17.2179 18.3725 17.2698 18.1416L20.7383 3.0526C20.7693 2.91652 20.7627 2.77456 20.7192 2.64194C20.6757 2.50932 20.5969 2.39104 20.4913 2.29978ZM15.9325 17.8357L8.86733 11.6405L19.0361 4.35232L15.9325 17.8357Z' fill='%23676B73'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_845_21346'%3e %3crect width='21.8756' height='21.8756' fill='white' transform='translate(0.250366 0.0622559)'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='23' height='22' viewBox='0 0 23 22' fill='none'%3e %3cg clip-path='url(%23clip0_845_21349)'%3e %3cpath d='M21.3184 8.94728C21.3182 8.42328 21.1676 7.91034 20.8843 7.46953C20.601 7.02871 20.197 6.67858 19.7204 6.4608C19.2437 6.24303 18.7146 6.16678 18.1959 6.24113C17.6772 6.31549 17.1908 6.53731 16.7946 6.88021C15.3632 6.11969 13.6534 5.65996 11.8674 5.55314L12.3109 2.88962L13.8251 3.12204C13.9019 3.59969 14.1451 4.0348 14.5117 4.35048C14.8784 4.66615 15.3447 4.84206 15.8285 4.84711C16.3123 4.85216 16.7822 4.68603 17.1554 4.37809C17.5285 4.07014 17.7807 3.6402 17.8675 3.16426C17.9543 2.68832 17.87 2.19703 17.6296 1.77721C17.3892 1.35739 17.0081 1.03608 16.5537 0.870071C16.0993 0.704059 15.6008 0.704035 15.1464 0.870002C14.6919 1.03597 14.3108 1.35724 14.0704 1.77704L11.8486 1.43523C11.6709 1.40782 11.4895 1.45157 11.3438 1.55697C11.1981 1.66238 11.0997 1.82096 11.0702 1.99836L10.4831 5.54289C8.61684 5.62321 6.82406 6.08807 5.33379 6.88021C4.78955 6.42045 4.08736 6.19125 3.37669 6.2414C2.66602 6.29155 2.00298 6.61709 1.5287 7.14872C1.05442 7.68035 0.806352 8.37609 0.8373 9.08786C0.868249 9.79962 1.17577 10.4712 1.6944 10.9597C1.56149 11.4164 1.49388 11.8897 1.49359 12.3653C1.49359 14.2393 2.51901 15.9842 4.39125 17.278C6.18317 18.5179 8.55275 19.2015 11.0642 19.2015C13.5756 19.2015 15.9452 18.5179 17.7371 17.278C19.6093 15.9842 20.6347 14.2393 20.6347 12.3653C20.6345 11.8897 20.5669 11.4164 20.4339 10.9597C20.7119 10.7032 20.9339 10.392 21.0861 10.0458C21.2383 9.69948 21.3174 9.32552 21.3184 8.94728ZM15.8495 2.11115C15.9847 2.11115 16.1168 2.15125 16.2293 2.22636C16.3417 2.30148 16.4293 2.40824 16.481 2.53316C16.5328 2.65807 16.5463 2.79552 16.5199 2.92813C16.4936 3.06074 16.4285 3.18255 16.3328 3.27815C16.2372 3.37376 16.1154 3.43887 15.9828 3.46524C15.8502 3.49162 15.7128 3.47808 15.5879 3.42634C15.4629 3.3746 15.3562 3.28698 15.2811 3.17456C15.2059 3.06214 15.1658 2.92997 15.1658 2.79476C15.1658 2.61346 15.2379 2.43958 15.3661 2.31138C15.4943 2.18318 15.6682 2.11115 15.8495 2.11115ZM6.27888 10.9981C6.27888 10.7277 6.35907 10.4634 6.5093 10.2385C6.65953 10.0137 6.87306 9.83845 7.12289 9.73497C7.37272 9.63148 7.64762 9.60441 7.91284 9.65716C8.17805 9.70992 8.42167 9.84013 8.61288 10.0313C8.80409 10.2226 8.93431 10.4662 8.98706 10.7314C9.03981 10.9966 9.01274 11.2715 8.90926 11.5213C8.80578 11.7712 8.63053 11.9847 8.4057 12.1349C8.18086 12.2852 7.91652 12.3653 7.64611 12.3653C7.28349 12.3653 6.93574 12.2213 6.67933 11.9649C6.42293 11.7085 6.27888 11.3607 6.27888 10.9981ZM14.1191 15.7039C13.1784 16.2038 12.1294 16.4653 11.0642 16.4653C9.99892 16.4653 8.94994 16.2038 8.00927 15.7039C7.92994 15.6619 7.85967 15.6046 7.80247 15.5353C7.74528 15.4661 7.70228 15.3863 7.67594 15.3004C7.64959 15.2145 7.64042 15.1243 7.64894 15.0349C7.65745 14.9455 7.68349 14.8587 7.72558 14.7794C7.76766 14.7 7.82495 14.6297 7.89419 14.5725C7.96343 14.5154 8.04326 14.4724 8.12911 14.446C8.21497 14.4197 8.30517 14.4105 8.39457 14.419C8.48398 14.4275 8.57083 14.4536 8.65016 14.4957C9.39345 14.8908 10.2224 15.0975 11.0642 15.0975C11.906 15.0975 12.7349 14.8908 13.4782 14.4957C13.5575 14.4536 13.6444 14.4275 13.7338 14.419C13.8232 14.4105 13.9134 14.4197 13.9992 14.446C14.0851 14.4724 14.1649 14.5154 14.2341 14.5725C14.3034 14.6297 14.3607 14.7 14.4028 14.7794C14.4448 14.8587 14.4709 14.9455 14.4794 15.0349C14.4879 15.1243 14.4787 15.2145 14.4524 15.3004C14.4261 15.3863 14.3831 15.4661 14.3259 15.5353C14.2687 15.6046 14.1984 15.6619 14.1191 15.7039ZM14.4822 12.3653C14.2118 12.3653 13.9475 12.2852 13.7226 12.1349C13.4978 11.9847 13.3226 11.7712 13.2191 11.5213C13.1156 11.2715 13.0885 10.9966 13.1413 10.7314C13.194 10.4662 13.3242 10.2226 13.5155 10.0313C13.7067 9.84013 13.9503 9.70992 14.2155 9.65716C14.4807 9.60441 14.7556 9.63148 15.0054 9.73497C15.2553 9.83845 15.4688 10.0137 15.619 10.2385C15.7693 10.4634 15.8495 10.7277 15.8495 10.9981C15.8495 11.3607 15.7054 11.7085 15.449 11.9649C15.1926 12.2213 14.8448 12.3653 14.4822 12.3653Z' fill='%23676B73'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_845_21349'%3e %3crect width='21.8756' height='21.8756' fill='white' transform='translate(0.125977 0.0622559)'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22' fill='none'%3e %3cg clip-path='url(%23clip0_845_21352)'%3e %3cpath d='M11.6227 10.9998C11.6227 12.0814 11.302 13.1388 10.7011 14.0381C10.1001 14.9375 9.24601 15.6385 8.2467 16.0524C7.24739 16.4663 6.14778 16.5746 5.08691 16.3636C4.02605 16.1526 3.05158 15.6317 2.28674 14.8669C1.5219 14.102 1.00104 13.1276 0.790022 12.0667C0.579004 11.0059 0.687306 9.90624 1.10123 8.90693C1.51516 7.90762 2.21613 7.05349 3.11548 6.45256C4.01484 5.85163 5.0722 5.53088 6.15384 5.53088C7.6038 5.53247 8.99392 6.10916 10.0192 7.13444C11.0445 8.15971 11.6212 9.54983 11.6227 10.9998ZM15.7244 5.53088C15.2391 5.53088 14.323 5.76673 13.6462 7.34673C13.2233 8.3337 12.99 9.63256 12.99 10.9998C12.99 12.367 13.2233 13.6659 13.6462 14.6528C14.323 16.2328 15.2391 16.4687 15.7244 16.4687C16.2098 16.4687 17.1258 16.2328 17.8026 14.6528C18.2256 13.6659 18.4589 12.367 18.4589 10.9998C18.4589 9.63256 18.2256 8.3337 17.8026 7.34673C17.1258 5.76673 16.2098 5.53088 15.7244 5.53088ZM20.5097 5.53088C20.3284 5.53088 20.1545 5.60291 20.0263 5.73111C19.8981 5.85931 19.8261 6.03319 19.8261 6.2145V15.7851C19.8261 15.9664 19.8981 16.1403 20.0263 16.2685C20.1545 16.3967 20.3284 16.4687 20.5097 16.4687C20.691 16.4687 20.8649 16.3967 20.9931 16.2685C21.1213 16.1403 21.1933 15.9664 21.1933 15.7851V6.2145C21.1933 6.03319 21.1213 5.85931 20.9931 5.73111C20.8649 5.60291 20.691 5.53088 20.5097 5.53088Z' fill='%23676B73'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_845_21352'%3e %3crect width='21.8756' height='21.8756' fill='white' transform='translate(0.00158691 0.0622559)'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='21' height='16' viewBox='0 0 21 16' fill='none'%3e %3cpath d='M19.5338 3.00288C19.4533 2.68786 19.2991 2.3965 19.0838 2.15284C18.8685 1.90917 18.5984 1.72019 18.2957 1.60147C15.3664 0.470096 10.7041 0.48035 10.4478 0.48035C10.1914 0.48035 5.52918 0.470096 2.5999 1.60147C2.2972 1.72019 2.02706 1.90917 1.81178 2.15284C1.59649 2.3965 1.44223 2.68786 1.36171 3.00288C1.14039 3.85569 0.877197 5.41433 0.877197 8.00009C0.877197 10.5859 1.14039 12.1445 1.36171 12.9973C1.4421 13.3125 1.59632 13.604 1.81161 13.8478C2.0269 14.0916 2.2971 14.2808 2.5999 14.3996C5.40613 15.4822 9.79834 15.5198 10.3914 15.5198H10.5042C11.0972 15.5198 15.492 15.4822 18.2957 14.3996C18.5985 14.2808 18.8687 14.0916 19.0839 13.8478C19.2992 13.604 19.4534 13.3125 19.5338 12.9973C19.7552 12.1428 20.0184 10.5859 20.0184 8.00009C20.0184 5.41433 19.7552 3.85569 19.5338 3.00288ZM13.3719 8.28464L9.27025 11.0191C9.21877 11.0534 9.15892 11.0732 9.09709 11.0762C9.03527 11.0792 8.97379 11.0653 8.91922 11.0361C8.86466 11.0069 8.81904 10.9634 8.78726 10.9103C8.75547 10.8572 8.7387 10.7964 8.73874 10.7345V5.26564C8.7387 5.20374 8.75547 5.143 8.78726 5.08989C8.81904 5.03678 8.86466 4.99329 8.91922 4.96408C8.97379 4.93486 9.03527 4.92102 9.09709 4.92401C9.15892 4.92701 9.21877 4.94673 9.27025 4.98109L13.3719 7.71554C13.4188 7.74674 13.4573 7.78904 13.4839 7.83868C13.5105 7.88833 13.5244 7.94377 13.5244 8.00009C13.5244 8.05641 13.5105 8.11185 13.4839 8.1615C13.4573 8.21114 13.4188 8.25344 13.3719 8.28464Z' fill='%23676B73'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22' fill='none'%3e %3cg clip-path='url(%23clip0_845_21356)'%3e %3cpath d='M21.169 14.9644L18.6473 5.01867C18.5809 4.75975 18.4405 4.52581 18.2432 4.3455C18.0459 4.16518 17.8003 4.04633 17.5364 4.00351L14.455 3.49763C14.1154 3.443 13.7675 3.51666 13.4791 3.70429C13.1907 3.89192 12.9824 4.1801 12.8947 4.5128L12.8768 4.58543C12.8651 4.63158 12.8633 4.67964 12.8713 4.72655C12.8793 4.77345 12.8971 4.81816 12.9234 4.85782C12.9497 4.89747 12.984 4.9312 13.0241 4.95684C13.0642 4.98248 13.1092 4.99946 13.1562 5.00671C13.8633 5.11048 14.5608 5.27108 15.2421 5.48695C15.4124 5.53833 15.5568 5.65258 15.6459 5.8065C15.7351 5.96043 15.7624 6.14252 15.7223 6.31583C15.6992 6.40614 15.6579 6.49079 15.601 6.56456C15.544 6.63833 15.4725 6.69967 15.391 6.74481C15.3094 6.78995 15.2195 6.81793 15.1267 6.82704C15.034 6.83615 14.9403 6.82619 14.8515 6.79777C12.3237 6.02254 9.62205 6.01957 7.09254 6.78923C6.92135 6.84679 6.73458 6.8362 6.571 6.75966C6.40741 6.68312 6.2796 6.54651 6.2141 6.37821C6.18296 6.29184 6.16954 6.20009 6.17464 6.10843C6.17973 6.01677 6.20324 5.92707 6.24375 5.84469C6.28426 5.76231 6.34095 5.68894 6.41044 5.62894C6.47992 5.56894 6.56078 5.52356 6.64819 5.49549C7.33796 5.27579 8.04439 5.11232 8.76055 5.00671C8.80759 4.99946 8.85259 4.98248 8.89268 4.95684C8.93277 4.9312 8.96706 4.89747 8.99336 4.85782C9.01967 4.81816 9.0374 4.77345 9.04543 4.72655C9.05345 4.67964 9.0516 4.63158 9.03998 4.58543L9.02204 4.5128C8.93432 4.17982 8.72572 3.89145 8.43693 3.70392C8.14813 3.51639 7.79984 3.44316 7.45998 3.49849L4.37689 4.00436C4.11316 4.04713 3.86762 4.16585 3.67032 4.346C3.47302 4.52615 3.33252 4.75991 3.26602 5.01867L0.744339 14.9644C0.665273 15.277 0.699684 15.6075 0.841449 15.8972C0.983214 16.1868 1.22314 16.4168 1.51853 16.5461L7.24379 19.0849C7.41594 19.1614 7.60192 19.2019 7.79031 19.2039C7.9787 19.2059 8.1655 19.1694 8.33925 19.0966C8.513 19.0238 8.67003 18.9162 8.80067 18.7804C8.93131 18.6447 9.03282 18.4837 9.09894 18.3072L9.39717 17.4997C9.41494 17.4514 9.42154 17.3996 9.41649 17.3483C9.41143 17.297 9.39485 17.2476 9.36798 17.2036C9.3411 17.1596 9.30463 17.1223 9.2613 17.0944C9.21797 17.0665 9.16889 17.0488 9.11774 17.0426C8.28761 16.942 7.46861 16.7647 6.67126 16.5128C6.50165 16.4612 6.35788 16.3473 6.26893 16.194C6.17997 16.0406 6.15244 15.8593 6.19188 15.6864C6.21474 15.5959 6.25591 15.511 6.31287 15.4369C6.36982 15.3629 6.44134 15.3013 6.52301 15.256C6.60469 15.2107 6.69478 15.1826 6.78774 15.1734C6.8807 15.1643 6.97454 15.1743 7.06349 15.2028C9.60078 15.9798 12.3125 15.9798 14.8498 15.2028C14.9387 15.1744 15.0324 15.1645 15.1252 15.1736C15.218 15.1828 15.308 15.2108 15.3895 15.2561C15.4711 15.3013 15.5425 15.3627 15.5995 15.4366C15.6564 15.5105 15.6976 15.5952 15.7206 15.6856C15.7605 15.8586 15.7332 16.0402 15.6442 16.1938C15.5551 16.3474 15.4111 16.4614 15.2412 16.5128C14.4442 16.7648 13.6254 16.9421 12.7956 17.0426C12.7444 17.0488 12.6954 17.0665 12.652 17.0944C12.6087 17.1223 12.5722 17.1596 12.5453 17.2036C12.5185 17.2476 12.5019 17.297 12.4968 17.3483C12.4918 17.3996 12.4984 17.4514 12.5162 17.4997L12.8144 18.3072C12.8806 18.4836 12.9822 18.6445 13.1128 18.7802C13.2435 18.9159 13.4005 19.0234 13.5742 19.0962C13.7479 19.169 13.9347 19.2056 14.123 19.2036C14.3114 19.2017 14.4974 19.1613 14.6695 19.0849L20.3948 16.5461C20.6902 16.4168 20.9301 16.1868 21.0719 15.8972C21.2136 15.6075 21.248 15.277 21.169 14.9644ZM7.8804 13.0511C7.67759 13.0511 7.47934 12.991 7.31071 12.8783C7.14208 12.7656 7.01065 12.6055 6.93304 12.4181C6.85543 12.2307 6.83512 12.0246 6.87469 11.8257C6.91425 11.6267 7.01191 11.444 7.15532 11.3006C7.29873 11.1572 7.48144 11.0596 7.68035 11.02C7.87926 10.9804 8.08544 11.0007 8.27281 11.0783C8.46018 11.156 8.62033 11.2874 8.73301 11.456C8.84568 11.6246 8.90582 11.8229 8.90582 12.0257C8.90582 12.2977 8.79779 12.5585 8.60548 12.7508C8.41318 12.9431 8.15236 13.0511 7.8804 13.0511ZM14.0329 13.0511C13.8301 13.0511 13.6319 12.991 13.4632 12.8783C13.2946 12.7656 13.1632 12.6055 13.0856 12.4181C13.0079 12.2307 12.9876 12.0246 13.0272 11.8257C13.0668 11.6267 13.1644 11.444 13.3078 11.3006C13.4512 11.1572 13.634 11.0596 13.8329 11.02C14.0318 10.9804 14.238 11.0007 14.4253 11.0783C14.6127 11.156 14.7728 11.2874 14.8855 11.456C14.9982 11.6246 15.0583 11.8229 15.0583 12.0257C15.0583 12.2977 14.9503 12.5585 14.758 12.7508C14.5657 12.9431 14.3049 13.0511 14.0329 13.0511Z' fill='%23676B73'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_845_21356'%3e %3crect width='21.8756' height='21.8756' fill='white' transform='translate(0.0183105 0.0622559)'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='23' height='22' viewBox='0 0 23 22' fill='none'%3e %3cg clip-path='url(%23clip0_845_21359)'%3e %3cpath d='M19.3509 2.11279H4.31144C3.94883 2.11279 3.60107 2.25684 3.34466 2.51324C3.08826 2.76965 2.94421 3.11741 2.94421 3.48002V18.5195C2.94421 18.8821 3.08826 19.2299 3.34466 19.4863C3.60107 19.7427 3.94883 19.8867 4.31144 19.8867H19.3509C19.7135 19.8867 20.0613 19.7427 20.3177 19.4863C20.5741 19.2299 20.7181 18.8821 20.7181 18.5195V3.48002C20.7181 3.11741 20.5741 2.76965 20.3177 2.51324C20.0613 2.25684 19.7135 2.11279 19.3509 2.11279ZM9.09673 15.1014C9.09673 15.2827 9.02471 15.4566 8.8965 15.5848C8.7683 15.713 8.59442 15.785 8.41312 15.785C8.23181 15.785 8.05793 15.713 7.92973 15.5848C7.80153 15.4566 7.7295 15.2827 7.7295 15.1014V9.63253C7.7295 9.45123 7.80153 9.27735 7.92973 9.14915C8.05793 9.02094 8.23181 8.94892 8.41312 8.94892C8.59442 8.94892 8.7683 9.02094 8.8965 9.14915C9.02471 9.27735 9.09673 9.45123 9.09673 9.63253V15.1014ZM8.41312 8.26531C8.21031 8.26531 8.01205 8.20517 7.84342 8.09249C7.6748 7.97982 7.54336 7.81967 7.46575 7.6323C7.38814 7.44493 7.36783 7.23875 7.4074 7.03984C7.44697 6.84093 7.54463 6.65822 7.68804 6.51481C7.83144 6.3714 8.01415 6.27374 8.21307 6.23417C8.41198 6.19461 8.61816 6.21491 8.80553 6.29253C8.9929 6.37014 9.15305 6.50157 9.26572 6.6702C9.3784 6.83883 9.43854 7.03708 9.43854 7.23989C9.43854 7.51185 9.3305 7.77267 9.1382 7.96497C8.94589 8.15727 8.68507 8.26531 8.41312 8.26531ZM16.6165 15.1014C16.6165 15.2827 16.5444 15.4566 16.4162 15.5848C16.288 15.713 16.1142 15.785 15.9329 15.785C15.7516 15.785 15.5777 15.713 15.4495 15.5848C15.3213 15.4566 15.2492 15.2827 15.2492 15.1014V12.0252C15.2492 11.5719 15.0692 11.1372 14.7487 10.8167C14.4282 10.4962 13.9935 10.3161 13.5402 10.3161C13.0869 10.3161 12.6523 10.4962 12.3317 10.8167C12.0112 11.1372 11.8312 11.5719 11.8312 12.0252V15.1014C11.8312 15.2827 11.7592 15.4566 11.631 15.5848C11.5028 15.713 11.3289 15.785 11.1476 15.785C10.9663 15.785 10.7924 15.713 10.6642 15.5848C10.536 15.4566 10.464 15.2827 10.464 15.1014V9.63253C10.4648 9.46509 10.5271 9.30378 10.639 9.1792C10.7509 9.05462 10.9046 8.97544 11.071 8.95669C11.2374 8.93793 11.4049 8.9809 11.5417 9.07744C11.6785 9.17398 11.7751 9.31737 11.8132 9.48043C12.2757 9.16672 12.8149 8.98489 13.3729 8.95449C13.9308 8.92409 14.4866 9.04626 14.9804 9.30787C15.4742 9.56948 15.8874 9.96066 16.1756 10.4394C16.4639 10.9181 16.6163 11.4664 16.6165 12.0252V15.1014Z' fill='%23676B73'/%3e %3c/g%3e %3cdefs%3e %3cclipPath id='clip0_845_21359'%3e %3crect width='21.8756' height='21.8756' fill='white' transform='translate(0.894043 0.0622559)'/%3e %3c/clipPath%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='22' height='22' viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg clip-path='url(%23clip0_6202_12409)'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M15.9562 2.77539C8.5131 2.77539 2.49609 8.83661 2.49609 16.3352C2.49609 22.3292 6.35139 27.403 11.6997 29.1987C12.3684 29.3337 12.6133 28.907 12.6133 28.548C12.6133 28.2336 12.5913 27.1561 12.5913 26.0334C8.84702 26.8418 8.06731 24.417 8.06731 24.417C7.46558 22.8455 6.57401 22.4416 6.57401 22.4416C5.34852 21.6109 6.66328 21.6109 6.66328 21.6109C8.02268 21.7007 8.73599 23.0028 8.73599 23.0028C9.93917 25.068 11.878 24.4845 12.658 24.1252C12.7693 23.2497 13.1261 22.6435 13.5049 22.3069C10.5186 21.9925 7.37659 20.8252 7.37659 15.6166C7.37659 14.135 7.91109 12.9227 8.75803 11.9799C8.62441 11.6432 8.1563 10.2511 8.89193 8.38781C8.89193 8.38781 10.0284 8.02854 12.591 9.77969C13.6881 9.48287 14.8196 9.33188 15.9562 9.3306C17.0927 9.3306 18.2512 9.48792 19.3211 9.77969C21.8839 8.02854 23.0204 8.38781 23.0204 8.38781C23.756 10.2511 23.2877 11.6432 23.154 11.9799C24.0233 12.9227 24.5358 14.135 24.5358 15.6166C24.5358 20.8252 21.3938 21.9699 18.3851 22.3069C18.8755 22.7333 19.2987 23.5414 19.2987 24.8212C19.2987 26.6395 19.2767 28.0989 19.2767 28.5477C19.2767 28.907 19.5219 29.3337 20.1903 29.199C25.5386 27.4027 29.3939 22.3292 29.3939 16.3352C29.416 8.83661 23.3769 2.77539 15.9562 2.77539Z' fill='%23676B73'/%3e%3c/g%3e%3cdefs%3e%3cclipPath id='clip0_6202_12409'%3e%3crect width='27.0006' height='26.449' fill='white' transform='translate(2.5 2.77539)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\";\n export default img;",null,"import { jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nconst PrismicContext = React.createContext({});\nconst PrismicProvider = ({ client, linkResolver, richTextComponents, internalLinkComponent, externalLinkComponent, children }) => {\n const value = React.useMemo(() => ({\n client,\n linkResolver,\n richTextComponents,\n internalLinkComponent,\n externalLinkComponent\n }), [\n client,\n linkResolver,\n richTextComponents,\n internalLinkComponent,\n externalLinkComponent\n ]);\n return /* @__PURE__ */ jsx(PrismicContext.Provider, { value, children });\n};\nexport {\n PrismicContext,\n PrismicProvider\n};\n//# sourceMappingURL=PrismicProvider.js.map\n","import * as React from \"react\";\nimport { usePrismicClient } from \"./usePrismicClient.js\";\nconst reducer = (state, action) => {\n switch (action[0]) {\n case \"start\": {\n return { state: \"loading\" };\n }\n case \"succeed\": {\n return { state: \"loaded\", data: action[1] };\n }\n case \"fail\": {\n return {\n ...state,\n state: \"failed\",\n error: action[1]\n };\n }\n }\n};\nconst initialState = {\n state: \"idle\"\n};\nconst isParams = (value) => {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n};\nconst useStatefulPrismicClientMethod = (methodName, args, explicitClient) => {\n const lastArg = args[args.length - 1];\n const { client: lastArgExplicitClient, skip, ...params } = isParams(lastArg) ? lastArg : {};\n const argsWithoutParams = isParams(lastArg) ? args.slice(0, -1) : args;\n const client = usePrismicClient(explicitClient || lastArgExplicitClient);\n const [state, dispatch] = React.useReducer(reducer, initialState);\n React.useEffect(\n () => {\n if (!skip) {\n {\n dispatch([\"start\"]);\n }\n client[methodName].call(client, ...argsWithoutParams, params).then((result) => {\n {\n dispatch([\"succeed\", result]);\n }\n }).catch((error) => {\n {\n dispatch([\"fail\", error]);\n }\n });\n }\n },\n // We must disable exhaustive-deps since we are using\n // JSON.stringify on params (effectively a deep equality check).\n // We want this effect to run again anytime params change.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n client,\n methodName,\n skip,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(argsWithoutParams),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(params)\n ]\n );\n return React.useMemo(() => [\n state.data,\n {\n state: state.state,\n error: state.error\n }\n ], [state]);\n};\nexport {\n useStatefulPrismicClientMethod\n};\n//# sourceMappingURL=useStatefulPrismicClientMethod.js.map\n","import { useStatefulPrismicClientMethod } from \"./useStatefulPrismicClientMethod.js\";\nconst usePrismicDocuments = (...args) => useStatefulPrismicClientMethod(\"get\", args);\nconst useFirstPrismicDocument = (...args) => useStatefulPrismicClientMethod(\"getFirst\", args);\nconst useAllPrismicDocumentsDangerously = (...args) => useStatefulPrismicClientMethod(\"dangerouslyGetAll\", args);\nconst usePrismicDocumentByID = (...args) => useStatefulPrismicClientMethod(\"getByID\", args);\nconst usePrismicDocumentsByIDs = (...args) => useStatefulPrismicClientMethod(\"getByIDs\", args);\nconst useAllPrismicDocumentsByIDs = (...args) => useStatefulPrismicClientMethod(\"getAllByIDs\", args);\nconst usePrismicDocumentByUID = (...args) => useStatefulPrismicClientMethod(\"getByUID\", args);\nconst usePrismicDocumentsByUIDs = (...args) => useStatefulPrismicClientMethod(\"getByUIDs\", args);\nconst useAllPrismicDocumentsByUIDs = (...args) => useStatefulPrismicClientMethod(\"getAllByUIDs\", args);\nconst useSinglePrismicDocument = (...args) => useStatefulPrismicClientMethod(\"getSingle\", args);\nconst usePrismicDocumentsByType = (...args) => useStatefulPrismicClientMethod(\"getByType\", args);\nconst useAllPrismicDocumentsByType = (...args) => useStatefulPrismicClientMethod(\"getAllByType\", args);\nconst usePrismicDocumentsByTag = (...args) => useStatefulPrismicClientMethod(\"getByTag\", args);\nconst useAllPrismicDocumentsByTag = (...args) => useStatefulPrismicClientMethod(\"getAllByTag\", args);\nconst usePrismicDocumentsBySomeTags = (...args) => useStatefulPrismicClientMethod(\"getBySomeTags\", args);\nconst useAllPrismicDocumentsBySomeTags = (...args) => useStatefulPrismicClientMethod(\"getAllBySomeTags\", args);\nconst usePrismicDocumentsByEveryTag = (...args) => useStatefulPrismicClientMethod(\"getByEveryTag\", args);\nconst useAllPrismicDocumentsByEveryTag = (...args) => useStatefulPrismicClientMethod(\"getAllByEveryTag\", args);\nexport {\n useAllPrismicDocumentsByEveryTag,\n useAllPrismicDocumentsByIDs,\n useAllPrismicDocumentsBySomeTags,\n useAllPrismicDocumentsByTag,\n useAllPrismicDocumentsByType,\n useAllPrismicDocumentsByUIDs,\n useAllPrismicDocumentsDangerously,\n useFirstPrismicDocument,\n usePrismicDocumentByID,\n usePrismicDocumentByUID,\n usePrismicDocuments,\n usePrismicDocumentsByEveryTag,\n usePrismicDocumentsByIDs,\n usePrismicDocumentsBySomeTags,\n usePrismicDocumentsByTag,\n usePrismicDocumentsByType,\n usePrismicDocumentsByUIDs,\n useSinglePrismicDocument\n};\n//# sourceMappingURL=clientHooks.js.map\n","import { usePrismicContext } from \"./usePrismicContext.js\";\nconst usePrismicClient = (explicitClient) => {\n const context = usePrismicContext();\n const client = explicitClient || (context == null ? void 0 : context.client);\n if (!client) {\n throw new Error(\"A @prismicio/client is required to query documents. Provide a client to the hook or to a higher in your component tree.\");\n }\n return client;\n};\nexport {\n usePrismicClient\n};\n//# sourceMappingURL=usePrismicClient.js.map\n","import * as React from \"react\";\nimport { PrismicContext } from \"./PrismicProvider.js\";\nconst usePrismicContext = () => {\n return React.useContext(PrismicContext) || {};\n};\nexport {\n usePrismicContext\n};\n//# sourceMappingURL=usePrismicContext.js.map\n",null,"/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","import { useState, useCallback, useLayoutEffect, useEffect, useRef, useMemo } from 'react';\nimport debounce from 'lodash.debounce';\n\n// src/useBoolean/useBoolean.ts\nfunction useBoolean(defaultValue = false) {\n if (typeof defaultValue !== \"boolean\") {\n throw new Error(\"defaultValue must be `true` or `false`\");\n }\n const [value, setValue] = useState(defaultValue);\n const setTrue = useCallback(() => {\n setValue(true);\n }, []);\n const setFalse = useCallback(() => {\n setValue(false);\n }, []);\n const toggle = useCallback(() => {\n setValue((x) => !x);\n }, []);\n return { value, setValue, setTrue, setFalse, toggle };\n}\nvar useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\n// src/useEventListener/useEventListener.ts\nfunction useEventListener(eventName, handler, element, options) {\n const savedHandler = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n useEffect(() => {\n const targetElement = (element == null ? void 0 : element.current) ?? window;\n if (!(targetElement && targetElement.addEventListener))\n return;\n const listener = (event) => {\n savedHandler.current(event);\n };\n targetElement.addEventListener(eventName, listener, options);\n return () => {\n targetElement.removeEventListener(eventName, listener, options);\n };\n }, [eventName, element, options]);\n}\n\n// src/useClickAnyWhere/useClickAnyWhere.ts\nfunction useClickAnyWhere(handler) {\n useEventListener(\"click\", (event) => {\n handler(event);\n });\n}\nfunction useCopyToClipboard() {\n const [copiedText, setCopiedText] = useState(null);\n const copy = useCallback(async (text) => {\n if (!(navigator == null ? void 0 : navigator.clipboard)) {\n console.warn(\"Clipboard not supported\");\n return false;\n }\n try {\n await navigator.clipboard.writeText(text);\n setCopiedText(text);\n return true;\n } catch (error) {\n console.warn(\"Copy failed\", error);\n setCopiedText(null);\n return false;\n }\n }, []);\n return [copiedText, copy];\n}\nfunction useCounter(initialValue) {\n const [count, setCount] = useState(initialValue ?? 0);\n const increment = useCallback(() => {\n setCount((x) => x + 1);\n }, []);\n const decrement = useCallback(() => {\n setCount((x) => x - 1);\n }, []);\n const reset = useCallback(() => {\n setCount(initialValue ?? 0);\n }, [initialValue]);\n return {\n count,\n increment,\n decrement,\n reset,\n setCount\n };\n}\nfunction useInterval(callback, delay) {\n const savedCallback = useRef(callback);\n useIsomorphicLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n useEffect(() => {\n if (delay === null) {\n return;\n }\n const id = setInterval(() => {\n savedCallback.current();\n }, delay);\n return () => {\n clearInterval(id);\n };\n }, [delay]);\n}\n\n// src/useCountdown/useCountdown.ts\nfunction useCountdown({\n countStart,\n countStop = 0,\n intervalMs = 1e3,\n isIncrement = false\n}) {\n const {\n count,\n increment,\n decrement,\n reset: resetCounter\n } = useCounter(countStart);\n const {\n value: isCountdownRunning,\n setTrue: startCountdown,\n setFalse: stopCountdown\n } = useBoolean(false);\n const resetCountdown = useCallback(() => {\n stopCountdown();\n resetCounter();\n }, [stopCountdown, resetCounter]);\n const countdownCallback = useCallback(() => {\n if (count === countStop) {\n stopCountdown();\n return;\n }\n if (isIncrement) {\n increment();\n } else {\n decrement();\n }\n }, [count, countStop, decrement, increment, isIncrement, stopCountdown]);\n useInterval(countdownCallback, isCountdownRunning ? intervalMs : null);\n return [count, { startCountdown, stopCountdown, resetCountdown }];\n}\nfunction useEventCallback(fn) {\n const ref = useRef(() => {\n throw new Error(\"Cannot call an event handler while rendering.\");\n });\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n }, [fn]);\n return useCallback((...args) => {\n var _a;\n return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args);\n }, [ref]);\n}\n\n// src/useLocalStorage/useLocalStorage.ts\nvar IS_SERVER = typeof window === \"undefined\";\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { initializeWithValue = true } = options;\n const serializer = useCallback(\n (value) => {\n if (options.serializer) {\n return options.serializer(value);\n }\n return JSON.stringify(value);\n },\n [options]\n );\n const deserializer = useCallback(\n (value) => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return defaultValue;\n }\n return parsed;\n },\n [options, initialValue]\n );\n const readValue = useCallback(() => {\n const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;\n if (IS_SERVER) {\n return initialValueToUse;\n }\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? deserializer(raw) : initialValueToUse;\n } catch (error) {\n console.warn(`Error reading localStorage key \\u201C${key}\\u201D:`, error);\n return initialValueToUse;\n }\n }, [initialValue, key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return initialValue instanceof Function ? initialValue() : initialValue;\n });\n const setValue = useEventCallback((value) => {\n if (IS_SERVER) {\n console.warn(\n `Tried setting localStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n try {\n const newValue = value instanceof Function ? value(readValue()) : value;\n window.localStorage.setItem(key, serializer(newValue));\n setStoredValue(newValue);\n window.dispatchEvent(new StorageEvent(\"local-storage\", { key }));\n } catch (error) {\n console.warn(`Error setting localStorage key \\u201C${key}\\u201D:`, error);\n }\n });\n const removeValue = useEventCallback(() => {\n if (IS_SERVER) {\n console.warn(\n `Tried removing localStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n window.localStorage.removeItem(key);\n setStoredValue(defaultValue);\n window.dispatchEvent(new StorageEvent(\"local-storage\", { key }));\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(\n (event) => {\n if (event.key && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"local-storage\", handleStorageChange);\n return [storedValue, setValue, removeValue];\n}\nvar IS_SERVER2 = typeof window === \"undefined\";\nfunction useMediaQuery(query, {\n defaultValue = false,\n initializeWithValue = true\n} = {}) {\n const getMatches = (query2) => {\n if (IS_SERVER2) {\n return defaultValue;\n }\n return window.matchMedia(query2).matches;\n };\n const [matches, setMatches] = useState(() => {\n if (initializeWithValue) {\n return getMatches(query);\n }\n return defaultValue;\n });\n function handleChange() {\n setMatches(getMatches(query));\n }\n useIsomorphicLayoutEffect(() => {\n const matchMedia = window.matchMedia(query);\n handleChange();\n if (matchMedia.addListener) {\n matchMedia.addListener(handleChange);\n } else {\n matchMedia.addEventListener(\"change\", handleChange);\n }\n return () => {\n if (matchMedia.removeListener) {\n matchMedia.removeListener(handleChange);\n } else {\n matchMedia.removeEventListener(\"change\", handleChange);\n }\n };\n }, [query]);\n return matches;\n}\n\n// src/useDarkMode/useDarkMode.ts\nvar COLOR_SCHEME_QUERY = \"(prefers-color-scheme: dark)\";\nvar LOCAL_STORAGE_KEY = \"usehooks-ts-dark-mode\";\nfunction useDarkMode(options = {}) {\n const {\n defaultValue,\n localStorageKey = LOCAL_STORAGE_KEY,\n initializeWithValue = true\n } = options;\n const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY, {\n initializeWithValue,\n defaultValue\n });\n const [isDarkMode, setDarkMode] = useLocalStorage(\n localStorageKey,\n defaultValue ?? isDarkOS ?? false,\n { initializeWithValue }\n );\n useIsomorphicLayoutEffect(() => {\n if (isDarkOS !== isDarkMode) {\n setDarkMode(isDarkOS);\n }\n }, [isDarkOS]);\n return {\n isDarkMode,\n toggle: () => {\n setDarkMode((prev) => !prev);\n },\n enable: () => {\n setDarkMode(true);\n },\n disable: () => {\n setDarkMode(false);\n },\n set: (value) => {\n setDarkMode(value);\n }\n };\n}\nfunction useUnmount(func) {\n const funcRef = useRef(func);\n funcRef.current = func;\n useEffect(\n () => () => {\n funcRef.current();\n },\n []\n );\n}\n\n// src/useDebounceCallback/useDebounceCallback.ts\nfunction useDebounceCallback(func, delay = 500, options) {\n const debouncedFunc = useRef();\n useUnmount(() => {\n if (debouncedFunc.current) {\n debouncedFunc.current.cancel();\n }\n });\n const debounced = useMemo(() => {\n const debouncedFuncInstance = debounce(func, delay, options);\n const wrappedFunc = (...args) => {\n return debouncedFuncInstance(...args);\n };\n wrappedFunc.cancel = () => {\n debouncedFuncInstance.cancel();\n };\n wrappedFunc.isPending = () => {\n return !!debouncedFunc.current;\n };\n wrappedFunc.flush = () => {\n return debouncedFuncInstance.flush();\n };\n return wrappedFunc;\n }, [func, delay, options]);\n useEffect(() => {\n debouncedFunc.current = debounce(func, delay, options);\n }, [func, delay, options]);\n return debounced;\n}\nfunction useDebounceValue(initialValue, delay, options) {\n const eq = (options == null ? void 0 : options.equalityFn) ?? ((left, right) => left === right);\n const unwrappedInitialValue = initialValue instanceof Function ? initialValue() : initialValue;\n const [debouncedValue, setDebouncedValue] = useState(unwrappedInitialValue);\n const previousValueRef = useRef(unwrappedInitialValue);\n const updateDebouncedValue = useDebounceCallback(\n setDebouncedValue,\n delay,\n options\n );\n if (!eq(previousValueRef.current, unwrappedInitialValue)) {\n updateDebouncedValue(unwrappedInitialValue);\n previousValueRef.current = unwrappedInitialValue;\n }\n return [debouncedValue, updateDebouncedValue];\n}\nfunction useDocumentTitle(title, options = {}) {\n const { preserveTitleOnUnmount = true } = options;\n const defaultTitle = useRef(null);\n useIsomorphicLayoutEffect(() => {\n defaultTitle.current = window.document.title;\n }, []);\n useIsomorphicLayoutEffect(() => {\n window.document.title = title;\n }, [title]);\n useUnmount(() => {\n if (!preserveTitleOnUnmount && defaultTitle.current) {\n window.document.title = defaultTitle.current;\n }\n });\n}\nfunction useHover(elementRef) {\n const [value, setValue] = useState(false);\n const handleMouseEnter = () => {\n setValue(true);\n };\n const handleMouseLeave = () => {\n setValue(false);\n };\n useEventListener(\"mouseenter\", handleMouseEnter, elementRef);\n useEventListener(\"mouseleave\", handleMouseLeave, elementRef);\n return value;\n}\nfunction useIntersectionObserver({\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false,\n onChange\n} = {}) {\n var _a;\n const [ref, setRef] = useState(null);\n const [state, setState] = useState(() => ({\n isIntersecting: initialIsIntersecting,\n entry: void 0\n }));\n const callbackRef = useRef();\n callbackRef.current = onChange;\n const frozen = ((_a = state.entry) == null ? void 0 : _a.isIntersecting) && freezeOnceVisible;\n useEffect(() => {\n if (!ref)\n return;\n if (!(\"IntersectionObserver\" in window))\n return;\n if (frozen)\n return;\n let unobserve;\n const observer = new IntersectionObserver(\n (entries) => {\n const thresholds = Array.isArray(observer.thresholds) ? observer.thresholds : [observer.thresholds];\n entries.forEach((entry) => {\n const isIntersecting = entry.isIntersecting && thresholds.some((threshold2) => entry.intersectionRatio >= threshold2);\n setState({ isIntersecting, entry });\n if (callbackRef.current) {\n callbackRef.current(isIntersecting, entry);\n }\n if (isIntersecting && freezeOnceVisible && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n });\n },\n { threshold, root, rootMargin }\n );\n observer.observe(ref);\n return () => {\n observer.disconnect();\n };\n }, [\n ref,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold),\n root,\n rootMargin,\n frozen,\n freezeOnceVisible\n ]);\n const prevRef = useRef(null);\n useEffect(() => {\n var _a2;\n if (!ref && ((_a2 = state.entry) == null ? void 0 : _a2.target) && !freezeOnceVisible && !frozen && prevRef.current !== state.entry.target) {\n prevRef.current = state.entry.target;\n setState({ isIntersecting: initialIsIntersecting, entry: void 0 });\n }\n }, [ref, state.entry, freezeOnceVisible, frozen, initialIsIntersecting]);\n const result = [\n setRef,\n !!state.isIntersecting,\n state.entry\n ];\n result.ref = result[0];\n result.isIntersecting = result[1];\n result.entry = result[2];\n return result;\n}\nfunction useIsClient() {\n const [isClient, setClient] = useState(false);\n useEffect(() => {\n setClient(true);\n }, []);\n return isClient;\n}\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return useCallback(() => isMounted.current, []);\n}\nfunction useMap(initialState = /* @__PURE__ */ new Map()) {\n const [map, setMap] = useState(new Map(initialState));\n const actions = {\n set: useCallback((key, value) => {\n setMap((prev) => {\n const copy = new Map(prev);\n copy.set(key, value);\n return copy;\n });\n }, []),\n setAll: useCallback((entries) => {\n setMap(() => new Map(entries));\n }, []),\n remove: useCallback((key) => {\n setMap((prev) => {\n const copy = new Map(prev);\n copy.delete(key);\n return copy;\n });\n }, []),\n reset: useCallback(() => {\n setMap(() => /* @__PURE__ */ new Map());\n }, [])\n };\n return [map, actions];\n}\n\n// src/useOnClickOutside/useOnClickOutside.ts\nfunction useOnClickOutside(ref, handler, eventType = \"mousedown\", eventListenerOptions = {}) {\n useEventListener(\n eventType,\n (event) => {\n const target = event.target;\n if (!target || !target.isConnected) {\n return;\n }\n const isOutside = Array.isArray(ref) ? ref.filter((r) => Boolean(r.current)).every((r) => r.current && !r.current.contains(target)) : ref.current && !ref.current.contains(target);\n if (isOutside) {\n handler(event);\n }\n },\n void 0,\n eventListenerOptions\n );\n}\nvar IS_SERVER3 = typeof window === \"undefined\";\nfunction useReadLocalStorage(key, options = {}) {\n let { initializeWithValue = true } = options;\n if (IS_SERVER3) {\n initializeWithValue = false;\n }\n const deserializer = useCallback(\n (value) => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return null;\n }\n return parsed;\n },\n [options]\n );\n const readValue = useCallback(() => {\n if (IS_SERVER3) {\n return null;\n }\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? deserializer(raw) : null;\n } catch (error) {\n console.warn(`Error reading localStorage key \\u201C${key}\\u201D:`, error);\n return null;\n }\n }, [key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return void 0;\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(\n (event) => {\n if (event.key && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"local-storage\", handleStorageChange);\n return storedValue;\n}\nvar initialSize = {\n width: void 0,\n height: void 0\n};\nfunction useResizeObserver(options) {\n const { ref, box = \"content-box\" } = options;\n const [{ width, height }, setSize] = useState(initialSize);\n const isMounted = useIsMounted();\n const previousSize = useRef({ ...initialSize });\n const onResize = useRef(void 0);\n onResize.current = options.onResize;\n useEffect(() => {\n if (!ref.current)\n return;\n if (typeof window === \"undefined\" || !(\"ResizeObserver\" in window))\n return;\n const observer = new ResizeObserver(([entry]) => {\n const boxProp = box === \"border-box\" ? \"borderBoxSize\" : box === \"device-pixel-content-box\" ? \"devicePixelContentBoxSize\" : \"contentBoxSize\";\n const newWidth = extractSize(entry, boxProp, \"inlineSize\");\n const newHeight = extractSize(entry, boxProp, \"blockSize\");\n const hasChanged = previousSize.current.width !== newWidth || previousSize.current.height !== newHeight;\n if (hasChanged) {\n const newSize = { width: newWidth, height: newHeight };\n previousSize.current.width = newWidth;\n previousSize.current.height = newHeight;\n if (onResize.current) {\n onResize.current(newSize);\n } else {\n if (isMounted()) {\n setSize(newSize);\n }\n }\n }\n });\n observer.observe(ref.current, { box });\n return () => {\n observer.disconnect();\n };\n }, [box, ref, isMounted]);\n return { width, height };\n}\nfunction extractSize(entry, box, sizeType) {\n if (!entry[box]) {\n if (box === \"contentBoxSize\") {\n return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n }\n return void 0;\n }\n return Array.isArray(entry[box]) ? entry[box][0][sizeType] : (\n // @ts-ignore Support Firefox's non-standard behavior\n entry[box][sizeType]\n );\n}\nvar IS_SERVER4 = typeof window === \"undefined\";\nfunction useScreen(options = {}) {\n let { initializeWithValue = true } = options;\n if (IS_SERVER4) {\n initializeWithValue = false;\n }\n const readScreen = () => {\n if (IS_SERVER4) {\n return void 0;\n }\n return window.screen;\n };\n const [screen, setScreen] = useState(() => {\n if (initializeWithValue) {\n return readScreen();\n }\n return void 0;\n });\n const debouncedSetScreen = useDebounceCallback(\n setScreen,\n options.debounceDelay\n );\n function handleSize() {\n const newScreen = readScreen();\n const setSize = options.debounceDelay ? debouncedSetScreen : setScreen;\n if (newScreen) {\n const {\n width,\n height,\n availHeight,\n availWidth,\n colorDepth,\n orientation,\n pixelDepth\n } = newScreen;\n setSize({\n width,\n height,\n availHeight,\n availWidth,\n colorDepth,\n orientation,\n pixelDepth\n });\n }\n }\n useEventListener(\"resize\", handleSize);\n useIsomorphicLayoutEffect(() => {\n handleSize();\n }, []);\n return screen;\n}\nvar cachedScriptStatuses = /* @__PURE__ */ new Map();\nfunction getScriptNode(src) {\n const node = document.querySelector(\n `script[src=\"${src}\"]`\n );\n const status = node == null ? void 0 : node.getAttribute(\"data-status\");\n return {\n node,\n status\n };\n}\nfunction useScript(src, options) {\n const [status, setStatus] = useState(() => {\n if (!src || (options == null ? void 0 : options.shouldPreventLoad)) {\n return \"idle\";\n }\n if (typeof window === \"undefined\") {\n return \"loading\";\n }\n return cachedScriptStatuses.get(src) ?? \"loading\";\n });\n useEffect(() => {\n if (!src || (options == null ? void 0 : options.shouldPreventLoad)) {\n return;\n }\n const cachedScriptStatus = cachedScriptStatuses.get(src);\n if (cachedScriptStatus === \"ready\" || cachedScriptStatus === \"error\") {\n setStatus(cachedScriptStatus);\n return;\n }\n const script = getScriptNode(src);\n let scriptNode = script.node;\n if (!scriptNode) {\n scriptNode = document.createElement(\"script\");\n scriptNode.src = src;\n scriptNode.async = true;\n if (options == null ? void 0 : options.id) {\n scriptNode.id = options.id;\n }\n scriptNode.setAttribute(\"data-status\", \"loading\");\n document.body.appendChild(scriptNode);\n const setAttributeFromEvent = (event) => {\n const scriptStatus = event.type === \"load\" ? \"ready\" : \"error\";\n scriptNode == null ? void 0 : scriptNode.setAttribute(\"data-status\", scriptStatus);\n };\n scriptNode.addEventListener(\"load\", setAttributeFromEvent);\n scriptNode.addEventListener(\"error\", setAttributeFromEvent);\n } else {\n setStatus(script.status ?? cachedScriptStatus ?? \"loading\");\n }\n const setStateFromEvent = (event) => {\n const newStatus = event.type === \"load\" ? \"ready\" : \"error\";\n setStatus(newStatus);\n cachedScriptStatuses.set(src, newStatus);\n };\n scriptNode.addEventListener(\"load\", setStateFromEvent);\n scriptNode.addEventListener(\"error\", setStateFromEvent);\n return () => {\n if (scriptNode) {\n scriptNode.removeEventListener(\"load\", setStateFromEvent);\n scriptNode.removeEventListener(\"error\", setStateFromEvent);\n }\n if (scriptNode && (options == null ? void 0 : options.removeOnUnmount)) {\n scriptNode.remove();\n cachedScriptStatuses.delete(src);\n }\n };\n }, [src, options == null ? void 0 : options.shouldPreventLoad, options == null ? void 0 : options.removeOnUnmount, options == null ? void 0 : options.id]);\n return status;\n}\nvar IS_SERVER5 = typeof window === \"undefined\";\nfunction useScrollLock(options = {}) {\n const { autoLock = true, lockTarget, widthReflow = true } = options;\n const [isLocked, setIsLocked] = useState(false);\n const target = useRef(null);\n const originalStyle = useRef(null);\n const lock = () => {\n if (target.current) {\n const { overflow, paddingRight } = target.current.style;\n originalStyle.current = { overflow, paddingRight };\n if (widthReflow) {\n const offsetWidth = target.current === document.body ? window.innerWidth : target.current.offsetWidth;\n const currentPaddingRight = parseInt(window.getComputedStyle(target.current).paddingRight, 10) || 0;\n const scrollbarWidth = offsetWidth - target.current.scrollWidth;\n target.current.style.paddingRight = `${scrollbarWidth + currentPaddingRight}px`;\n }\n target.current.style.overflow = \"hidden\";\n setIsLocked(true);\n }\n };\n const unlock = () => {\n if (target.current && originalStyle.current) {\n target.current.style.overflow = originalStyle.current.overflow;\n if (widthReflow) {\n target.current.style.paddingRight = originalStyle.current.paddingRight;\n }\n }\n setIsLocked(false);\n };\n useIsomorphicLayoutEffect(() => {\n if (IS_SERVER5)\n return;\n if (lockTarget) {\n target.current = typeof lockTarget === \"string\" ? document.querySelector(lockTarget) : lockTarget;\n }\n if (!target.current) {\n target.current = document.body;\n }\n if (autoLock) {\n lock();\n }\n return () => {\n unlock();\n };\n }, [autoLock, lockTarget, widthReflow]);\n return { isLocked, lock, unlock };\n}\nvar IS_SERVER6 = typeof window === \"undefined\";\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { initializeWithValue = true } = options;\n const serializer = useCallback(\n (value) => {\n if (options.serializer) {\n return options.serializer(value);\n }\n return JSON.stringify(value);\n },\n [options]\n );\n const deserializer = useCallback(\n (value) => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return defaultValue;\n }\n return parsed;\n },\n [options, initialValue]\n );\n const readValue = useCallback(() => {\n const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;\n if (IS_SERVER6) {\n return initialValueToUse;\n }\n try {\n const raw = window.sessionStorage.getItem(key);\n return raw ? deserializer(raw) : initialValueToUse;\n } catch (error) {\n console.warn(`Error reading sessionStorage key \\u201C${key}\\u201D:`, error);\n return initialValueToUse;\n }\n }, [initialValue, key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return initialValue instanceof Function ? initialValue() : initialValue;\n });\n const setValue = useEventCallback((value) => {\n if (IS_SERVER6) {\n console.warn(\n `Tried setting sessionStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n try {\n const newValue = value instanceof Function ? value(readValue()) : value;\n window.sessionStorage.setItem(key, serializer(newValue));\n setStoredValue(newValue);\n window.dispatchEvent(new StorageEvent(\"session-storage\", { key }));\n } catch (error) {\n console.warn(`Error setting sessionStorage key \\u201C${key}\\u201D:`, error);\n }\n });\n const removeValue = useEventCallback(() => {\n if (IS_SERVER6) {\n console.warn(\n `Tried removing sessionStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n window.sessionStorage.removeItem(key);\n setStoredValue(defaultValue);\n window.dispatchEvent(new StorageEvent(\"session-storage\", { key }));\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(\n (event) => {\n if (event.key && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"session-storage\", handleStorageChange);\n return [storedValue, setValue, removeValue];\n}\nfunction useStep(maxStep) {\n const [currentStep, setCurrentStep] = useState(1);\n const canGoToNextStep = currentStep + 1 <= maxStep;\n const canGoToPrevStep = currentStep - 1 > 0;\n const setStep = useCallback(\n (step) => {\n const newStep = step instanceof Function ? step(currentStep) : step;\n if (newStep >= 1 && newStep <= maxStep) {\n setCurrentStep(newStep);\n return;\n }\n throw new Error(\"Step not valid\");\n },\n [maxStep, currentStep]\n );\n const goToNextStep = useCallback(() => {\n if (canGoToNextStep) {\n setCurrentStep((step) => step + 1);\n }\n }, [canGoToNextStep]);\n const goToPrevStep = useCallback(() => {\n if (canGoToPrevStep) {\n setCurrentStep((step) => step - 1);\n }\n }, [canGoToPrevStep]);\n const reset = useCallback(() => {\n setCurrentStep(1);\n }, []);\n return [\n currentStep,\n {\n goToNextStep,\n goToPrevStep,\n canGoToNextStep,\n canGoToPrevStep,\n setStep,\n reset\n }\n ];\n}\n\n// src/useTernaryDarkMode/useTernaryDarkMode.ts\nvar COLOR_SCHEME_QUERY2 = \"(prefers-color-scheme: dark)\";\nvar LOCAL_STORAGE_KEY2 = \"usehooks-ts-ternary-dark-mode\";\nfunction useTernaryDarkMode({\n defaultValue = \"system\",\n localStorageKey = LOCAL_STORAGE_KEY2,\n initializeWithValue = true\n} = {}) {\n const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY2, { initializeWithValue });\n const [mode, setMode] = useLocalStorage(localStorageKey, defaultValue, {\n initializeWithValue\n });\n const isDarkMode = mode === \"dark\" || mode === \"system\" && isDarkOS;\n const toggleTernaryDarkMode = () => {\n const modes = [\"light\", \"system\", \"dark\"];\n setMode((prevMode) => {\n const nextIndex = (modes.indexOf(prevMode) + 1) % modes.length;\n return modes[nextIndex];\n });\n };\n return {\n isDarkMode,\n ternaryDarkMode: mode,\n setTernaryDarkMode: setMode,\n toggleTernaryDarkMode\n };\n}\nfunction useTimeout(callback, delay) {\n const savedCallback = useRef(callback);\n useIsomorphicLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n useEffect(() => {\n if (!delay && delay !== 0) {\n return;\n }\n const id = setTimeout(() => {\n savedCallback.current();\n }, delay);\n return () => {\n clearTimeout(id);\n };\n }, [delay]);\n}\nfunction useToggle(defaultValue) {\n const [value, setValue] = useState(!!defaultValue);\n const toggle = useCallback(() => {\n setValue((x) => !x);\n }, []);\n return [value, toggle, setValue];\n}\nvar IS_SERVER7 = typeof window === \"undefined\";\nfunction useWindowSize(options = {}) {\n let { initializeWithValue = true } = options;\n if (IS_SERVER7) {\n initializeWithValue = false;\n }\n const [windowSize, setWindowSize] = useState(() => {\n if (initializeWithValue) {\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n }\n return {\n width: void 0,\n height: void 0\n };\n });\n const debouncedSetWindowSize = useDebounceCallback(\n setWindowSize,\n options.debounceDelay\n );\n function handleSize() {\n const setSize = options.debounceDelay ? debouncedSetWindowSize : setWindowSize;\n setSize({\n width: window.innerWidth,\n height: window.innerHeight\n });\n }\n useEventListener(\"resize\", handleSize);\n useIsomorphicLayoutEffect(() => {\n handleSize();\n }, []);\n return windowSize;\n}\n\nexport { useBoolean, useClickAnyWhere, useCopyToClipboard, useCountdown, useCounter, useDarkMode, useDebounceCallback, useDebounceValue, useDocumentTitle, useEventCallback, useEventListener, useHover, useIntersectionObserver, useInterval, useIsClient, useIsMounted, useIsomorphicLayoutEffect, useLocalStorage, useMap, useMediaQuery, useOnClickOutside, useReadLocalStorage, useResizeObserver, useScreen, useScript, useScrollLock, useSessionStorage, useStep, useTernaryDarkMode, useTimeout, useToggle, useUnmount, useWindowSize };\n","const formatValue = (value) => {\n if (Array.isArray(value)) {\n return `[${value.map(formatValue).join(\", \")}]`;\n }\n if (typeof value === \"string\") {\n return `\"${value}\"`;\n }\n if (value instanceof Date) {\n return `${value.getTime()}`;\n }\n return `${value}`;\n};\nconst pathWithArgsFilter = (name) => {\n const fn = (path, ...args) => {\n const formattedArgs = args.map(formatValue).join(\", \");\n const joiner = path && args.length ? \", \" : \"\";\n return `[${name}(${path}${joiner}${formattedArgs})]`;\n };\n return fn;\n};\nconst pathFilter = (name) => {\n const filterFn = pathWithArgsFilter(name);\n const fn = (path) => {\n return filterFn(path);\n };\n return fn;\n};\nconst argsFilter = (name) => {\n const filterFn = pathWithArgsFilter(name);\n const fn = (...args) => {\n return filterFn(\"\", ...args);\n };\n return fn;\n};\nconst filter = {\n /**\n * The `at` filter checks that the path matches the described value exactly.\n * It takes a single value for a field or an array (only for tags).\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#at}\n */\n at: pathWithArgsFilter(\"at\"),\n /**\n * The `not` filter checks that the path doesn't match the provided value\n * exactly. It takes a single value for a field or an array (only for tags).\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#not}\n */\n not: pathWithArgsFilter(\"not\"),\n /**\n * The `any` filter takes an array of values. It works exactly the same way as\n * the `at` operator, but checks whether the fragment matches any of the\n * values in the array.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#any}\n */\n any: pathWithArgsFilter(\"any\"),\n /**\n * The `in` filter is used specifically to retrieve an array of documents by\n * their IDs or UIDs. This filter is much more efficient at this than the any\n * filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#in}\n */\n in: pathWithArgsFilter(\"in\"),\n /**\n * The `fulltext` filter provides two capabilities:\n *\n * 1. Checking if a certain string is anywhere inside a document (this is what\n * you should use to make your project's search engine feature)\n * 2. Checking if the string is contained inside a specific custom type’s Rich\n * Text or Key Text fragment.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#fulltext}\n */\n fulltext: pathWithArgsFilter(\"fulltext\"),\n /**\n * The `has` filter checks whether a fragment has a value. It will return all\n * the documents of the specified type that contain a value for the specified\n * field.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#has}\n */\n has: pathFilter(\"has\"),\n /**\n * The `missing` filter checks if a fragment doesn't have a value. It will\n * return all the documents of the specified type that do not contain a value\n * for the specified field.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#missing}\n */\n missing: pathFilter(\"missing\"),\n /**\n * The `similar` filter takes the ID of a document, and returns a list of\n * documents with similar content. This allows you to build an automated\n * content discovery feature (for example, a \"Related posts\" section).\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#similar}\n */\n similar: argsFilter(\"similar\"),\n /**\n * The `geopoint.near` filter checks that the value in the path is within the\n * radius of the given coordinates.\n *\n * This filter will only work for a geopoint field.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#geopointnear}\n */\n geopointNear: pathWithArgsFilter(\"geopoint.near\"),\n /**\n * The `number.lt` filter checks that the value in the number field is less\n * than the value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#numberlessthan}\n */\n numberLessThan: pathWithArgsFilter(\"number.lt\"),\n /**\n * The `number.gt` filter checks that the value in the number field is greater\n * than the value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#numbergreaterthan}\n */\n numberGreaterThan: pathWithArgsFilter(\"number.gt\"),\n /**\n * The `number.inRange` filter checks that the value in the path is within the\n * two values passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#numberinrange}\n */\n numberInRange: pathWithArgsFilter(\"number.inRange\"),\n /**\n * The `date.after` filter checks that the value in the path is after the date\n * value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateAfter: pathWithArgsFilter(\"date.after\"),\n /**\n * The `date.before` filter checks that the value in the path is before the\n * date value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateBefore: pathWithArgsFilter(\"date.before\"),\n /**\n * The `date.between` filter checks that the value in the path is within the\n * date values passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateBetween: pathWithArgsFilter(\"date.between\"),\n /**\n * The `date.day-of-month` filter checks that the value in the path is equal\n * to the day of the month passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateDayOfMonth: pathWithArgsFilter(\"date.day-of-month\"),\n /**\n * The `date.day-of-month-after` filter checks that the value in the path is\n * after the day of the month passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateDayOfMonthAfter: pathWithArgsFilter(\"date.day-of-month-after\"),\n /**\n * The `date.day-of-month-before` filter checks that the value in the path is\n * before the day of the month passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateDayOfMonthBefore: pathWithArgsFilter(\"date.day-of-month-before\"),\n /**\n * The `date.day-of-week` filter checks that the value in the path is equal to\n * the day of the week passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateDayOfWeek: pathWithArgsFilter(\"date.day-of-week\"),\n /**\n * The `date.day-of-week-after` filter checks that the value in the path is\n * after the day of the week passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateDayOfWeekAfter: pathWithArgsFilter(\"date.day-of-week-after\"),\n /**\n * The date.day-of-week-before filter checks that the value in the path is\n * before the day of the week passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateDayOfWeekBefore: pathWithArgsFilter(\"date.day-of-week-before\"),\n /**\n * The `date.month` filter checks that the value in the path occurs in the\n * month value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateMonth: pathWithArgsFilter(\"date.month\"),\n /**\n * The `date.month-after` filter checks that the value in the path occurs in\n * any month after the value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateMonthAfter: pathWithArgsFilter(\"date.month-after\"),\n /**\n * The `date.month-before` filter checks that the value in the path occurs in\n * any month before the value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateMonthBefore: pathWithArgsFilter(\"date.month-before\"),\n /**\n * The `date.year` filter checks that the value in the path occurs in the year\n * value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateYear: pathWithArgsFilter(\"date.year\"),\n /**\n * The `date.hour` filter checks that the value in the path occurs within the\n * hour value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateHour: pathWithArgsFilter(\"date.hour\"),\n /**\n * The `date.hour-after` filter checks that the value in the path occurs after\n * the hour value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateHourAfter: pathWithArgsFilter(\"date.hour-after\"),\n /**\n * The `date.hour-before` filter checks that the value in the path occurs\n * before the hour value passed into the filter.\n *\n * {@link https://prismic.io/docs/rest-api-technical-reference#date-filters}\n */\n dateHourBefore: pathWithArgsFilter(\"date.hour-before\")\n};\nexport {\n filter\n};\n//# sourceMappingURL=filter.js.map\n","const castArray = (a) => {\n return Array.isArray(a) ? a : [a];\n};\nexport {\n castArray\n};\n//# sourceMappingURL=castArray.js.map\n","import { castArray } from \"./castArray.js\";\nconst appendFilters = (objWithFilters = {}, filters) => {\n return {\n ...objWithFilters,\n filters: [...objWithFilters.filters || [], ...castArray(filters)]\n };\n};\nexport {\n appendFilters\n};\n//# sourceMappingURL=appendFilters.js.map\n","const version = \"7.11.0\";\nexport {\n version\n};\n//# sourceMappingURL=package.json.js.map\n","import { version } from \"../package.json.js\";\nconst devMsg = (slug) => {\n return `https://prismic.dev/msg/client/v${version}/${slug}`;\n};\nexport {\n devMsg\n};\n//# sourceMappingURL=devMsg.js.map\n","import { filter } from \"../filter.js\";\nimport { castArray } from \"./castArray.js\";\nconst everyTagFilter = (tags) => {\n return filter.at(\"document.tags\", castArray(tags));\n};\nexport {\n everyTagFilter\n};\n//# sourceMappingURL=everyTagFilter.js.map\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nclass PrismicError extends Error {\n constructor(message = \"An invalid API response was returned\", url, response) {\n super(message);\n __publicField(this, \"url\");\n __publicField(this, \"response\");\n this.url = url;\n this.response = response;\n }\n}\nexport {\n PrismicError\n};\n//# sourceMappingURL=PrismicError.js.map\n","import { PrismicError } from \"../errors/PrismicError.js\";\nconst findRef = (refs, filter) => {\n const ref = refs.find((ref2) => filter(ref2));\n if (!ref) {\n throw new PrismicError(\"Ref could not be found.\", void 0, void 0);\n }\n return ref;\n};\nexport {\n findRef\n};\n//# sourceMappingURL=findRef.js.map\n","import { findRef } from \"./findRef.js\";\nconst findMasterRef = (refs) => {\n return findRef(refs, (ref) => ref.isMasterRef);\n};\nexport {\n findMasterRef\n};\n//# sourceMappingURL=findMasterRef.js.map\n","import { findRef } from \"./findRef.js\";\nconst findRefByID = (refs, id) => {\n return findRef(refs, (ref) => ref.id === id);\n};\nexport {\n findRefByID\n};\n//# sourceMappingURL=findRefByID.js.map\n","import { findRef } from \"./findRef.js\";\nconst findRefByLabel = (refs, label) => {\n return findRef(refs, (ref) => ref.label === label);\n};\nexport {\n findRefByLabel\n};\n//# sourceMappingURL=findRefByLabel.js.map\n","import { preview } from \"../cookie.js\";\nconst readValue = (value) => {\n return value.replace(/%3B/g, \";\");\n};\nconst getPreviewCookie = (cookieJar) => {\n const cookies = cookieJar.split(\"; \");\n let value;\n for (const cookie of cookies) {\n const parts = cookie.split(\"=\");\n const name = readValue(parts[0]).replace(/%3D/g, \"=\");\n if (name === preview) {\n value = readValue(parts.slice(1).join(\"=\"));\n break;\n }\n }\n return value;\n};\nexport {\n getPreviewCookie\n};\n//# sourceMappingURL=getPreviewCookie.js.map\n","import { filter } from \"../filter.js\";\nimport { castArray } from \"./castArray.js\";\nconst someTagsFilter = (tags) => {\n return filter.any(\"document.tags\", castArray(tags));\n};\nexport {\n someTagsFilter\n};\n//# sourceMappingURL=someTagsFilter.js.map\n","import { filter } from \"../filter.js\";\nconst typeFilter = (documentType) => {\n return filter.at(\"document.type\", documentType);\n};\nexport {\n typeFilter\n};\n//# sourceMappingURL=typeFilter.js.map\n","import { PrismicError } from \"./PrismicError.js\";\nclass ForbiddenError extends PrismicError {\n}\nexport {\n ForbiddenError\n};\n//# sourceMappingURL=ForbiddenError.js.map\n","import { PrismicError } from \"./PrismicError.js\";\nclass NotFoundError extends PrismicError {\n}\nexport {\n NotFoundError\n};\n//# sourceMappingURL=NotFoundError.js.map\n","import { PrismicError } from \"./PrismicError.js\";\nclass ParsingError extends PrismicError {\n}\nexport {\n ParsingError\n};\n//# sourceMappingURL=ParsingError.js.map\n","import { ForbiddenError } from \"./ForbiddenError.js\";\nclass PreviewTokenExpiredError extends ForbiddenError {\n}\nexport {\n PreviewTokenExpiredError\n};\n//# sourceMappingURL=PreviewTokenExpired.js.map\n","import { ForbiddenError } from \"./ForbiddenError.js\";\nclass RefExpiredError extends ForbiddenError {\n}\nexport {\n RefExpiredError\n};\n//# sourceMappingURL=RefExpiredError.js.map\n","import { ForbiddenError } from \"./ForbiddenError.js\";\nclass RefNotFoundError extends ForbiddenError {\n}\nexport {\n RefNotFoundError\n};\n//# sourceMappingURL=RefNotFoundError.js.map\n","import { NotFoundError } from \"./NotFoundError.js\";\nclass RepositoryNotFoundError extends NotFoundError {\n}\nexport {\n RepositoryNotFoundError\n};\n//# sourceMappingURL=RepositoryNotFoundError.js.map\n","const LinkType = {\n Any: \"Any\",\n Document: \"Document\",\n Media: \"Media\",\n Web: \"Web\"\n};\nexport {\n LinkType\n};\n//# sourceMappingURL=link.js.map\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport { pLimit } from \"./lib/pLimit.js\";\nimport { PrismicError } from \"./errors/PrismicError.js\";\nconst UNKNOWN_RATE_LIMIT_DELAY = 1500;\nclass BaseClient {\n constructor(options) {\n /**\n * The function used to make network requests to the Prismic REST API. In\n * environments where a global `fetch` function does not exist, such as\n * Node.js, this function must be provided.\n */\n __publicField(this, \"fetchFn\");\n __publicField(this, \"fetchOptions\");\n /**\n * Active queued `fetch()` jobs keyed by URL and AbortSignal (if it exists).\n */\n __publicField(this, \"queuedFetchJobs\", {});\n /**\n * Active deduped `fetch()` jobs keyed by URL and AbortSignal (if it exists).\n */\n __publicField(this, \"dedupedFetchJobs\", {});\n this.fetchOptions = options.fetchOptions;\n if (typeof options.fetch === \"function\") {\n this.fetchFn = options.fetch;\n } else if (typeof globalThis.fetch === \"function\") {\n this.fetchFn = globalThis.fetch;\n } else {\n throw new PrismicError(\"A valid fetch implementation was not provided. In environments where fetch is not available (including Node.js), a fetch implementation must be provided via a polyfill or the `fetch` option.\", void 0, void 0);\n }\n if (this.fetchFn === globalThis.fetch) {\n this.fetchFn = this.fetchFn.bind(globalThis);\n }\n }\n async fetch(url, params = {}) {\n var _a, _b, _c, _d, _e;\n const requestInit = {\n ...this.fetchOptions,\n ...params.fetchOptions,\n headers: {\n ...(_a = this.fetchOptions) == null ? void 0 : _a.headers,\n ...(_b = params.fetchOptions) == null ? void 0 : _b.headers\n },\n signal: ((_c = params.fetchOptions) == null ? void 0 : _c.signal) || params.signal || ((_d = this.fetchOptions) == null ? void 0 : _d.signal)\n };\n if ((_e = params.fetchOptions) == null ? void 0 : _e.body) {\n return this.queueFetch(url, requestInit);\n } else {\n return this.dedupeFetch(url, requestInit);\n }\n }\n queueFetch(url, requestInit = {}) {\n const hostname = new URL(url).hostname;\n if (!this.queuedFetchJobs[hostname]) {\n this.queuedFetchJobs[hostname] = pLimit({\n interval: UNKNOWN_RATE_LIMIT_DELAY\n });\n }\n return this.queuedFetchJobs[hostname](() => this.createFetchJob(url, requestInit));\n }\n dedupeFetch(url, requestInit = {}) {\n let job;\n if (this.dedupedFetchJobs[url] && this.dedupedFetchJobs[url].has(requestInit.signal)) {\n job = this.dedupedFetchJobs[url].get(requestInit.signal);\n } else {\n this.dedupedFetchJobs[url] = this.dedupedFetchJobs[url] || /* @__PURE__ */ new Map();\n job = this.createFetchJob(url, requestInit).finally(() => {\n var _a, _b;\n (_a = this.dedupedFetchJobs[url]) == null ? void 0 : _a.delete(requestInit.signal);\n if (((_b = this.dedupedFetchJobs[url]) == null ? void 0 : _b.size) === 0) {\n delete this.dedupedFetchJobs[url];\n }\n });\n this.dedupedFetchJobs[url].set(requestInit.signal, job);\n }\n return job;\n }\n createFetchJob(url, requestInit = {}) {\n return this.fetchFn(url, requestInit).then(async (res) => {\n let json = void 0;\n let text = void 0;\n if (res.ok) {\n try {\n json = await res.json();\n } catch {\n }\n } else {\n try {\n text = await res.text();\n json = JSON.parse(text);\n } catch {\n }\n }\n return {\n status: res.status,\n headers: res.headers,\n json,\n text\n };\n });\n }\n}\nexport {\n BaseClient,\n UNKNOWN_RATE_LIMIT_DELAY\n};\n//# sourceMappingURL=BaseClient.js.map\n","const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nconst pLimit = ({ interval } = {}) => {\n const queue = [];\n let busy = false;\n let lastCompletion = 0;\n const resumeNext = () => {\n var _a;\n if (!busy && queue.length > 0) {\n (_a = queue.shift()) == null ? void 0 : _a();\n busy = true;\n }\n };\n const next = () => {\n busy = false;\n resumeNext();\n };\n const run = async (function_, resolve, arguments_) => {\n const timeSinceLastCompletion = Date.now() - lastCompletion;\n if (interval && timeSinceLastCompletion < interval) {\n await sleep(interval - timeSinceLastCompletion);\n }\n const result = (async () => function_(...arguments_))();\n resolve(result);\n try {\n await result;\n } catch {\n }\n lastCompletion = Date.now();\n next();\n };\n const enqueue = (function_, resolve, arguments_) => {\n new Promise((internalResolve) => {\n queue.push(internalResolve);\n }).then(run.bind(void 0, function_, resolve, arguments_));\n (async () => {\n await Promise.resolve();\n if (!busy) {\n resumeNext();\n }\n })();\n };\n return (function_, ...arguments_) => new Promise((resolve) => {\n enqueue(function_, resolve, arguments_);\n });\n};\nexport {\n pLimit\n};\n//# sourceMappingURL=pLimit.js.map\n","import { castArray } from \"./lib/castArray.js\";\nimport { devMsg } from \"./lib/devMsg.js\";\nimport { version } from \"./package.json.js\";\nconst PRISMIC_DEV_PARAM = \"x-d\";\nconst PRISMIC_CLIENT_VERSION_PARAM = \"x-c\";\nconst RENAMED_PARAMS = {\n accessToken: \"access_token\"\n};\nconst castOrderingToString = (ordering) => {\n if (typeof ordering === \"string\") {\n if (process.env.NODE_ENV === \"development\") {\n const [field, direction] = ordering.split(\" \");\n const objectForm = direction === \"desc\" ? `{ field: \"${field}\", direction: \"desc\" }` : `{ field: \"${field}\" }`;\n console.warn(`[@prismicio/client] A string value was provided to the \\`orderings\\` query parameter. Strings are deprecated. Please convert it to the object form: ${objectForm}. For more details, see ${devMsg(\"orderings-must-be-an-array-of-objects\")}`);\n }\n return ordering;\n }\n return ordering.direction === \"desc\" ? `${ordering.field} desc` : ordering.field;\n};\nconst buildQueryURL = (endpoint, args) => {\n const { filters, predicates, ...params } = args;\n const url = new URL(`documents/search`, `${endpoint}/`);\n if (filters) {\n if (process.env.NODE_ENV === \"development\" && !Array.isArray(filters)) {\n console.warn(`[@prismicio/client] A non-array value was provided to the \\`filters\\` query parameter (\\`${filters}\\`). Non-array values are deprecated. Please convert it to an array. For more details, see ${devMsg(\"filters-must-be-an-array\")}`);\n }\n for (const filter of castArray(filters)) {\n url.searchParams.append(\"q\", `[${filter}]`);\n }\n }\n if (predicates) {\n for (const predicate of castArray(predicates)) {\n url.searchParams.append(\"q\", `[${predicate}]`);\n }\n }\n for (const k in params) {\n const name = RENAMED_PARAMS[k] || k;\n let value = params[k];\n if (name === \"orderings\") {\n const scopedValue = params[name];\n if (scopedValue != null) {\n if (process.env.NODE_ENV === \"development\" && typeof scopedValue === \"string\") {\n console.warn(`[@prismicio/client] A string value was provided to the \\`orderings\\` query parameter. Strings are deprecated. Please convert it to an array of objects. For more details, see ${devMsg(\"orderings-must-be-an-array-of-objects\")}`);\n }\n const v = castArray(scopedValue).map((ordering) => castOrderingToString(ordering)).join(\",\");\n value = `[${v}]`;\n }\n } else if (name === \"routes\") {\n if (typeof params[name] === \"object\") {\n value = JSON.stringify(castArray(params[name]));\n }\n }\n if (value != null) {\n url.searchParams.set(name, castArray(value).join(\",\"));\n }\n }\n url.searchParams.set(PRISMIC_CLIENT_VERSION_PARAM, `js-${version}`);\n if (process.env.NODE_ENV === \"development\") {\n url.searchParams.set(PRISMIC_DEV_PARAM, \"1\");\n }\n return url.toString();\n};\nexport {\n buildQueryURL\n};\n//# sourceMappingURL=buildQueryURL.js.map\n","const isRepositoryEndpoint = (input) => {\n try {\n new URL(input);\n return true;\n } catch {\n return false;\n }\n};\nexport {\n isRepositoryEndpoint\n};\n//# sourceMappingURL=isRepositoryEndpoint.js.map\n","var __defProp = Object.defineProperty;\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar _repositoryName;\nimport { appendFilters } from \"./lib/appendFilters.js\";\nimport { castThunk } from \"./lib/castThunk.js\";\nimport { devMsg } from \"./lib/devMsg.js\";\nimport { everyTagFilter } from \"./lib/everyTagFilter.js\";\nimport { findMasterRef } from \"./lib/findMasterRef.js\";\nimport { findRefByID } from \"./lib/findRefByID.js\";\nimport { findRefByLabel } from \"./lib/findRefByLabel.js\";\nimport { getPreviewCookie } from \"./lib/getPreviewCookie.js\";\nimport { minifyGraphQLQuery } from \"./lib/minifyGraphQLQuery.js\";\nimport { someTagsFilter } from \"./lib/someTagsFilter.js\";\nimport { typeFilter } from \"./lib/typeFilter.js\";\nimport { ForbiddenError } from \"./errors/ForbiddenError.js\";\nimport { NotFoundError } from \"./errors/NotFoundError.js\";\nimport { ParsingError } from \"./errors/ParsingError.js\";\nimport { PreviewTokenExpiredError } from \"./errors/PreviewTokenExpired.js\";\nimport { PrismicError } from \"./errors/PrismicError.js\";\nimport { RefExpiredError } from \"./errors/RefExpiredError.js\";\nimport { RefNotFoundError } from \"./errors/RefNotFoundError.js\";\nimport { RepositoryNotFoundError } from \"./errors/RepositoryNotFoundError.js\";\nimport { asLink } from \"./helpers/asLink.js\";\nimport { BaseClient } from \"./BaseClient.js\";\nimport { buildQueryURL } from \"./buildQueryURL.js\";\nimport { filter } from \"./filter.js\";\nimport { getRepositoryEndpoint } from \"./getRepositoryEndpoint.js\";\nimport { getRepositoryName } from \"./getRepositoryName.js\";\nimport { isRepositoryEndpoint } from \"./isRepositoryEndpoint.js\";\nconst MAX_PAGE_SIZE = 100;\nconst REPOSITORY_CACHE_TTL = 5e3;\nconst GET_ALL_QUERY_DELAY = 500;\nconst DEFUALT_RETRY_AFTER_MS = 1e3;\nvar RefStateMode;\n(function(RefStateMode2) {\n RefStateMode2[\"Master\"] = \"Master\";\n RefStateMode2[\"ReleaseID\"] = \"ReleaseID\";\n RefStateMode2[\"ReleaseLabel\"] = \"ReleaseLabel\";\n RefStateMode2[\"Manual\"] = \"Manual\";\n})(RefStateMode || (RefStateMode = {}));\nclass Client extends BaseClient {\n /**\n * Creates a Prismic client that can be used to query a repository.\n *\n * If used in an environment where a global `fetch` function is unavailable,\n * such as in some Node.js versions, the `fetch` option must be provided as\n * part of the `options` parameter.\n *\n * @param repositoryNameOrEndpoint - The Prismic repository name or full Rest\n * API V2 endpoint for the repository.\n * @param options - Configuration that determines how content will be queried\n * from the Prismic repository.\n *\n * @returns A client that can query content from the repository.\n */\n constructor(repositoryNameOrEndpoint, options = {}) {\n super(options);\n __privateAdd(this, _repositoryName);\n /**\n * The Prismic REST API V2 endpoint for the repository (use\n * `prismic.getRepositoryEndpoint` for the default endpoint).\n */\n __publicField(this, \"documentAPIEndpoint\");\n /**\n * The secure token for accessing the API (only needed if your repository is\n * set to private).\n *\n * {@link https://user-guides.prismic.io/en/articles/1036153-generating-an-access-token}\n */\n __publicField(this, \"accessToken\");\n /**\n * A list of route resolver objects that define how a document's `url` field\n * is resolved.\n *\n * {@link https://prismic.io/docs/route-resolver}\n */\n __publicField(this, \"routes\");\n /**\n * The `brokenRoute` option allows you to define the route populated in the\n * `url` property for broken link or content relationship fields. A broken\n * link is a link or content relationship field whose linked document has been\n * unpublished or deleted.\n *\n * {@link https://prismic.io/docs/route-resolver}\n */\n __publicField(this, \"brokenRoute\");\n /**\n * Default parameters that will be sent with each query. These parameters can\n * be overridden on each query if needed.\n */\n __publicField(this, \"defaultParams\");\n /**\n * The client's ref mode state. This determines which ref is used during\n * queries.\n */\n __publicField(this, \"refState\", {\n mode: RefStateMode.Master,\n autoPreviewsEnabled: true\n });\n /**\n * Cached repository value.\n */\n __publicField(this, \"cachedRepository\");\n /**\n * Timestamp at which the cached repository data is considered stale.\n */\n __publicField(this, \"cachedRepositoryExpiration\", 0);\n if ((options.documentAPIEndpoint || isRepositoryEndpoint(repositoryNameOrEndpoint)) && process.env.NODE_ENV === \"development\") {\n const documentAPIEndpoint = options.documentAPIEndpoint || repositoryNameOrEndpoint;\n if (/\\.prismic\\.io\\/(?!api\\/v2\\/?)/i.test(documentAPIEndpoint)) {\n throw new PrismicError(\"@prismicio/client only supports Prismic Rest API V2. Please provide only the repository name to the first createClient() parameter or use the getRepositoryEndpoint() helper to generate a valid Rest API V2 endpoint URL.\", void 0, void 0);\n }\n const hostname = new URL(documentAPIEndpoint).hostname.toLowerCase();\n if (hostname.endsWith(\".prismic.io\") && !hostname.endsWith(\".cdn.prismic.io\")) {\n console.warn(`[@prismicio/client] The client was created with a non-CDN endpoint. Convert it to the CDN endpoint for better performance. For more details, see ${devMsg(\"endpoint-must-use-cdn\")}`);\n }\n if (options.documentAPIEndpoint && isRepositoryEndpoint(repositoryNameOrEndpoint) && repositoryNameOrEndpoint !== options.documentAPIEndpoint) {\n console.warn(`[@prismicio/client] Multiple incompatible endpoints were provided. Create the client using a repository name to prevent this error. For more details, see ${devMsg(\"prefer-repository-name\")}`);\n }\n }\n if (isRepositoryEndpoint(repositoryNameOrEndpoint)) {\n this.documentAPIEndpoint = repositoryNameOrEndpoint;\n try {\n this.repositoryName = getRepositoryName(repositoryNameOrEndpoint);\n } catch (error) {\n console.warn(`[@prismicio/client] A repository name could not be inferred from the provided endpoint (\\`${repositoryNameOrEndpoint}\\`). Some methods will be disabled. Create the client using a repository name to prevent this warning. For more details, see ${devMsg(\"prefer-repository-name\")}`);\n }\n } else {\n this.documentAPIEndpoint = options.documentAPIEndpoint || getRepositoryEndpoint(repositoryNameOrEndpoint);\n this.repositoryName = repositoryNameOrEndpoint;\n }\n this.accessToken = options.accessToken;\n this.routes = options.routes;\n this.brokenRoute = options.brokenRoute;\n this.defaultParams = options.defaultParams;\n if (options.ref) {\n this.queryContentFromRef(options.ref);\n }\n this.graphQLFetch = this.graphQLFetch.bind(this);\n }\n /**\n * The Prismic repository's name.\n */\n set repositoryName(value) {\n __privateSet(this, _repositoryName, value);\n }\n /**\n * The Prismic repository's name.\n */\n get repositoryName() {\n if (!__privateGet(this, _repositoryName)) {\n throw new PrismicError(`A repository name is required for this method but one could not be inferred from the provided API endpoint (\\`${this.documentAPIEndpoint}\\`). To fix this error, provide a repository name when creating the client. For more details, see ${devMsg(\"prefer-repository-name\")}`, void 0, void 0);\n }\n return __privateGet(this, _repositoryName);\n }\n /**\n * The Prismic REST API V2 endpoint for the repository (use\n * `prismic.getRepositoryEndpoint` for the default endpoint).\n *\n * @deprecated Use `documentAPIEndpoint` instead.\n */\n // TODO: Remove in v8.\n set endpoint(value) {\n this.documentAPIEndpoint = value;\n }\n /**\n * The Prismic REST API V2 endpoint for the repository (use\n * `prismic.getRepositoryEndpoint` for the default endpoint).\n *\n * @deprecated Use `documentAPIEndpoint` instead.\n */\n // TODO: Remove in v8.\n get endpoint() {\n return this.documentAPIEndpoint;\n }\n /**\n * Enables the client to automatically query content from a preview session if\n * one is active in browser environments. This is enabled by default in the\n * browser.\n *\n * For server environments, use `enableAutoPreviewsFromReq`.\n *\n * @example\n *\n * ```ts\n * client.enableAutoPreviews()\n * ```\n *\n * @see enableAutoPreviewsFromReq\n */\n enableAutoPreviews() {\n this.refState.autoPreviewsEnabled = true;\n }\n /**\n * Enables the client to automatically query content from a preview session if\n * one is active in server environments. This is disabled by default on the\n * server.\n *\n * For browser environments, use `enableAutoPreviews`.\n *\n * @example\n *\n * ```ts\n * // In an express app\n * app.get(\"/\", function (req, res) {\n * \tclient.enableAutoPreviewsFromReq(req)\n * })\n * ```\n *\n * @param req - An HTTP server request object containing the request's\n * cookies.\n */\n enableAutoPreviewsFromReq(req) {\n this.refState.httpRequest = req;\n this.refState.autoPreviewsEnabled = true;\n }\n /**\n * Disables the client from automatically querying content from a preview\n * session if one is active.\n *\n * Automatic preview content querying is enabled by default unless this method\n * is called.\n *\n * @example\n *\n * ```ts\n * client.disableAutoPreviews()\n * ```\n */\n disableAutoPreviews() {\n this.refState.autoPreviewsEnabled = false;\n }\n /**\n * Queries content from the Prismic repository.\n *\n * @example\n *\n * ```ts\n * const response = await client.get()\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param params - Parameters to filter, sort, and paginate results.\n *\n * @returns A paginated response containing the result of the query.\n */\n async get(params) {\n const url = await this.buildQueryURL(params);\n return await this.fetch(url, params);\n }\n /**\n * Queries content from the Prismic repository and returns only the first\n * result, if any.\n *\n * @example\n *\n * ```ts\n * const document = await client.getFirst()\n * ```\n *\n * @typeParam TDocument - Type of the Prismic document returned.\n *\n * @param params - Parameters to filter, sort, and paginate results. @returns\n * The first result of the query, if any.\n */\n async getFirst(params) {\n var _a;\n const actualParams = { ...params };\n if (!(params && params.page) && !(params == null ? void 0 : params.pageSize)) {\n actualParams.pageSize = ((_a = this.defaultParams) == null ? void 0 : _a.pageSize) ?? 1;\n }\n const url = await this.buildQueryURL(actualParams);\n const result = await this.fetch(url, params);\n const firstResult = result.results[0];\n if (firstResult) {\n return firstResult;\n }\n throw new NotFoundError(\"No documents were returned\", url, void 0);\n }\n /**\n * **IMPORTANT**: Avoid using `dangerouslyGetAll` as it may be slower and\n * require more resources than other methods. Prefer using other methods that\n * filter by filters such as `getAllByType`.\n *\n * Queries content from the Prismic repository and returns all matching\n * content. If no filters are provided, all documents will be fetched.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @example\n *\n * ```ts\n * const response = await client.dangerouslyGetAll()\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param params - Parameters to filter, sort, and paginate results.\n *\n * @returns A list of documents matching the query.\n */\n async dangerouslyGetAll(params = {}) {\n var _a;\n const { limit = Infinity, ...actualParams } = params;\n const resolvedParams = {\n ...actualParams,\n pageSize: Math.min(limit, actualParams.pageSize || ((_a = this.defaultParams) == null ? void 0 : _a.pageSize) || MAX_PAGE_SIZE)\n };\n const documents = [];\n let latestResult;\n while ((!latestResult || latestResult.next_page) && documents.length < limit) {\n const page = latestResult ? latestResult.page + 1 : void 0;\n latestResult = await this.get({ ...resolvedParams, page });\n documents.push(...latestResult.results);\n if (latestResult.next_page) {\n await new Promise((res) => setTimeout(res, GET_ALL_QUERY_DELAY));\n }\n }\n return documents.slice(0, limit);\n }\n /**\n * Queries a document from the Prismic repository with a specific ID.\n *\n * @remarks\n * A document's UID is different from its ID. An ID is automatically generated\n * for all documents and is made available on its `id` property. A UID is\n * provided in the Prismic editor and is unique among all documents of its\n * custom type.\n *\n * @example\n *\n * ```ts\n * const document = await client.getByID(\"WW4bKScAAMAqmluX\")\n * ```\n *\n * @typeParam TDocument- Type of the Prismic document returned.\n *\n * @param id - ID of the document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns The document with an ID matching the `id` parameter, if a matching\n * document exists.\n */\n async getByID(id, params) {\n return await this.getFirst(appendFilters(params, filter.at(\"document.id\", id)));\n }\n /**\n * Queries documents from the Prismic repository with specific IDs.\n *\n * @remarks\n * A document's UID is different from its ID. An ID is automatically generated\n * for all documents and is made available on its `id` property. A UID is\n * provided in the Prismic editor and is unique among all documents of its\n * custom type.\n *\n * @example\n *\n * ```ts\n * const response = await client.getByIDs([\n * \t\"WW4bKScAAMAqmluX\",\n * \t\"U1kTRgEAAC8A5ldS\",\n * ])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param ids - A list of document IDs.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A paginated response containing documents with IDs matching the\n * `ids` parameter.\n */\n async getByIDs(ids, params) {\n return await this.get(appendFilters(params, filter.in(\"document.id\", ids)));\n }\n /**\n * Queries all documents from the Prismic repository with specific IDs.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @remarks\n * A document's UID is different from its ID. An ID is automatically generated\n * for all documents and is made available on its `id` property. A UID is\n * provided in the Prismic editor and is unique among all documents of its\n * custom type.\n *\n * @example\n *\n * ```ts\n * const response = await client.getAllByIDs([\n * \t\"WW4bKScAAMAqmluX\",\n * \t\"U1kTRgEAAC8A5ldS\",\n * ])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param ids - A list of document IDs.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A list of documents with IDs matching the `ids` parameter.\n */\n async getAllByIDs(ids, params) {\n return await this.dangerouslyGetAll(appendFilters(params, filter.in(\"document.id\", ids)));\n }\n /**\n * Queries a document from the Prismic repository with a specific UID and\n * custom type.\n *\n * @remarks\n * A document's UID is different from its ID. An ID is automatically generated\n * for all documents and is made available on its `id` property. A UID is\n * provided in the Prismic editor and is unique among all documents of its\n * custom type.\n *\n * @example\n *\n * ```ts\n * const document = await client.getByUID(\"blog_post\", \"my-first-post\")\n * ```\n *\n * @typeParam TDocument - Type of the Prismic document returned.\n *\n * @param documentType - The API ID of the document's custom type.\n * @param uid - UID of the document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns The document with a UID matching the `uid` parameter, if a\n * matching document exists.\n */\n async getByUID(documentType, uid, params) {\n return await this.getFirst(appendFilters(params, [\n typeFilter(documentType),\n filter.at(`my.${documentType}.uid`, uid)\n ]));\n }\n /**\n * Queries document from the Prismic repository with specific UIDs and Custom\n * Type.\n *\n * @remarks\n * A document's UID is different from its ID. An ID is automatically generated\n * for all documents and is made available on its `id` property. A UID is\n * provided in the Prismic editor and is unique among all documents of its\n * custom type.\n *\n * @example\n *\n * ```ts\n * const document = await client.getByUIDs(\"blog_post\", [\n * \t\"my-first-post\",\n * \t\"my-second-post\",\n * ])\n * ```\n *\n * @typeParam TDocument - Type of the Prismic document returned.\n *\n * @param documentType - The API ID of the document's custom type.\n * @param uids - A list of document UIDs.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A paginated response containing documents with UIDs matching the\n * `uids` parameter.\n */\n async getByUIDs(documentType, uids, params) {\n return await this.get(appendFilters(params, [\n typeFilter(documentType),\n filter.in(`my.${documentType}.uid`, uids)\n ]));\n }\n /**\n * Queries all documents from the Prismic repository with specific UIDs and\n * custom type.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @remarks\n * A document's UID is different from its ID. An ID is automatically generated\n * for all documents and is made available on its `id` property. A UID is\n * provided in the Prismic editor and is unique among all documents of its\n * custom type.\n *\n * @example\n *\n * ```ts\n * const response = await client.getAllByUIDs([\n * \t\"my-first-post\",\n * \t\"my-second-post\",\n * ])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param documentType - The API ID of the document's custom type.\n * @param uids - A list of document UIDs.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A list of documents with UIDs matching the `uids` parameter.\n */\n async getAllByUIDs(documentType, uids, params) {\n return await this.dangerouslyGetAll(appendFilters(params, [\n typeFilter(documentType),\n filter.in(`my.${documentType}.uid`, uids)\n ]));\n }\n /**\n * Queries a singleton document from the Prismic repository for a specific\n * custom type.\n *\n * @remarks\n * A singleton document is one that is configured in Prismic to only allow one\n * instance. For example, a repository may be configured to contain just one\n * Settings document. This is in contrast to a repeatable custom type which\n * allows multiple instances of itself.\n *\n * @example\n *\n * ```ts\n * const document = await client.getSingle(\"settings\")\n * ```\n *\n * @typeParam TDocument - Type of the Prismic document returned.\n *\n * @param documentType - The API ID of the singleton custom type.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns The singleton document for the custom type, if a matching document\n * exists.\n */\n async getSingle(documentType, params) {\n return await this.getFirst(appendFilters(params, typeFilter(documentType)));\n }\n /**\n * Queries documents from the Prismic repository for a specific custom type.\n *\n * Use `getAllByType` instead if you need to query all documents for a\n * specific custom type.\n *\n * @example\n *\n * ```ts\n * const response = await client.getByType(\"blog_post\")\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param documentType - The API ID of the custom type.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A paginated response containing documents of the custom type.\n */\n async getByType(documentType, params) {\n return await this.get(appendFilters(params, typeFilter(documentType)));\n }\n /**\n * Queries all documents from the Prismic repository for a specific Custom\n * Type.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @example\n *\n * ```ts\n * const response = await client.getByType(\"blog_post\")\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param documentType - The API ID of the custom type.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A list of all documents of the custom type.\n */\n async getAllByType(documentType, params) {\n return await this.dangerouslyGetAll(appendFilters(params, typeFilter(documentType)));\n }\n /**\n * Queries documents from the Prismic repository with a specific tag.\n *\n * Use `getAllByTag` instead if you need to query all documents with a\n * specific tag.\n *\n * @example\n *\n * ```ts\n * const response = await client.getByTag(\"food\")\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param tag - The tag that must be included on a document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A paginated response containing documents with the tag.\n */\n async getByTag(tag, params) {\n return await this.get(appendFilters(params, someTagsFilter(tag)));\n }\n /**\n * Queries all documents from the Prismic repository with a specific tag.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @example\n *\n * ```ts\n * const response = await client.getAllByTag(\"food\")\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param tag - The tag that must be included on a document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A list of all documents with the tag.\n */\n async getAllByTag(tag, params) {\n return await this.dangerouslyGetAll(appendFilters(params, someTagsFilter(tag)));\n }\n /**\n * Queries documents from the Prismic repository with specific tags. A\n * document must be tagged with all of the queried tags to be included.\n *\n * @example\n *\n * ```ts\n * const response = await client.getByEveryTag([\"food\", \"fruit\"])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param tags - A list of tags that must be included on a document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A paginated response containing documents with the tags.\n */\n async getByEveryTag(tags, params) {\n return await this.get(appendFilters(params, everyTagFilter(tags)));\n }\n /**\n * Queries documents from the Prismic repository with specific tags. A\n * document must be tagged with all of the queried tags to be included.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @example\n *\n * ```ts\n * const response = await client.getAllByEveryTag([\"food\", \"fruit\"])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param tags - A list of tags that must be included on a document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A list of all documents with the tags.\n */\n async getAllByEveryTag(tags, params) {\n return await this.dangerouslyGetAll(appendFilters(params, everyTagFilter(tags)));\n }\n /**\n * Queries documents from the Prismic repository with specific tags. A\n * document must be tagged with at least one of the queried tags to be\n * included.\n *\n * @example\n *\n * ```ts\n * const response = await client.getByEveryTag([\"food\", \"fruit\"])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param tags - A list of tags that must be included on a document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A paginated response containing documents with at least one of the\n * tags.\n */\n async getBySomeTags(tags, params) {\n return await this.get(appendFilters(params, someTagsFilter(tags)));\n }\n /**\n * Queries documents from the Prismic repository with specific tags. A\n * document must be tagged with at least one of the queried tags to be\n * included.\n *\n * This method may make multiple network requests to query all matching\n * content.\n *\n * @example\n *\n * ```ts\n * const response = await client.getAllBySomeTags([\"food\", \"fruit\"])\n * ```\n *\n * @typeParam TDocument - Type of Prismic documents returned.\n *\n * @param tags - A list of tags that must be included on a document.\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A list of all documents with at least one of the tags.\n */\n async getAllBySomeTags(tags, params) {\n return await this.dangerouslyGetAll(appendFilters(params, someTagsFilter(tags)));\n }\n /**\n * Returns metadata about the Prismic repository, such as its refs, releases,\n * and custom types.\n *\n * @returns Repository metadata.\n */\n async getRepository(params) {\n const url = new URL(this.documentAPIEndpoint);\n if (this.accessToken) {\n url.searchParams.set(\"access_token\", this.accessToken);\n }\n return await this.fetch(url.toString(), params);\n }\n /**\n * Returns a list of all refs for the Prismic repository.\n *\n * Refs are used to identify which version of the repository's content should\n * be queried. All repositories will have at least one ref pointing to the\n * latest published content called the \"master ref\".\n *\n * @returns A list of all refs for the Prismic repository.\n */\n async getRefs(params) {\n const repository = await this.getRepository(params);\n return repository.refs;\n }\n /**\n * Returns a ref for the Prismic repository with a matching ID.\n *\n * @param id - ID of the ref.\n *\n * @returns The ref with a matching ID, if it exists.\n */\n async getRefByID(id, params) {\n const refs = await this.getRefs(params);\n return findRefByID(refs, id);\n }\n /**\n * Returns a ref for the Prismic repository with a matching label.\n *\n * @param label - Label of the ref.\n *\n * @returns The ref with a matching label, if it exists.\n */\n async getRefByLabel(label, params) {\n const refs = await this.getRefs(params);\n return findRefByLabel(refs, label);\n }\n /**\n * Returns the master ref for the Prismic repository. The master ref points to\n * the repository's latest published content.\n *\n * @returns The repository's master ref.\n */\n async getMasterRef(params) {\n const refs = await this.getRefs(params);\n return findMasterRef(refs);\n }\n /**\n * Returns a list of all Releases for the Prismic repository. Releases are\n * used to group content changes before publishing.\n *\n * @returns A list of all Releases for the Prismic repository.\n */\n async getReleases(params) {\n const refs = await this.getRefs(params);\n return refs.filter((ref) => !ref.isMasterRef);\n }\n /**\n * Returns a Release for the Prismic repository with a matching ID.\n *\n * @param id - ID of the Release.\n *\n * @returns The Release with a matching ID, if it exists.\n */\n async getReleaseByID(id, params) {\n const releases = await this.getReleases(params);\n return findRefByID(releases, id);\n }\n /**\n * Returns a Release for the Prismic repository with a matching label.\n *\n * @param label - Label of the ref.\n *\n * @returns The ref with a matching label, if it exists.\n */\n async getReleaseByLabel(label, params) {\n const releases = await this.getReleases(params);\n return findRefByLabel(releases, label);\n }\n /**\n * Returns a list of all tags used in the Prismic repository.\n *\n * @returns A list of all tags used in the repository.\n */\n async getTags(params) {\n try {\n const tagsForm = await this.getCachedRepositoryForm(\"tags\", params);\n const url = new URL(tagsForm.action);\n if (this.accessToken) {\n url.searchParams.set(\"access_token\", this.accessToken);\n }\n return await this.fetch(url.toString(), params);\n } catch {\n const repository = await this.getRepository(params);\n return repository.tags;\n }\n }\n /**\n * Builds a URL used to query content from the Prismic repository.\n *\n * @param params - Parameters to filter, sort, and paginate the results.\n *\n * @returns A URL string that can be requested to query content.\n */\n async buildQueryURL({ signal, fetchOptions, ...params } = {}) {\n const ref = params.ref || await this.getResolvedRefString({ signal, fetchOptions });\n const integrationFieldsRef = params.integrationFieldsRef || (await this.getCachedRepository({ signal, fetchOptions })).integrationFieldsRef || void 0;\n return buildQueryURL(this.documentAPIEndpoint, {\n ...this.defaultParams,\n ...params,\n ref,\n integrationFieldsRef,\n routes: params.routes || this.routes,\n brokenRoute: params.brokenRoute || this.brokenRoute,\n accessToken: params.accessToken || this.accessToken\n });\n }\n /**\n * Determines the URL for a previewed document during an active preview\n * session. The result of this method should be used to redirect the user to\n * the document's URL.\n *\n * @example\n *\n * ```ts\n * \tconst url = client.resolvePreviewURL({\n * \tlinkResolver: (document) => `/${document.uid}`\n * \tdefaultURL: '/'\n * \t})\n * ```\n *\n * @param args - Arguments to configure the URL resolving.\n *\n * @returns The URL for the previewed document during an active preview\n * session. The user should be redirected to this URL.\n */\n async resolvePreviewURL(args) {\n var _a, _b;\n let documentID = args.documentID;\n let previewToken = args.previewToken;\n if (typeof globalThis.location !== \"undefined\") {\n const searchParams = new URLSearchParams(globalThis.location.search);\n documentID = documentID || searchParams.get(\"documentId\");\n previewToken = previewToken || searchParams.get(\"token\");\n } else if (this.refState.httpRequest) {\n if (\"query\" in this.refState.httpRequest) {\n documentID = documentID || ((_a = this.refState.httpRequest.query) == null ? void 0 : _a.documentId);\n previewToken = previewToken || ((_b = this.refState.httpRequest.query) == null ? void 0 : _b.token);\n } else if (\"url\" in this.refState.httpRequest && this.refState.httpRequest.url) {\n const searchParams = new URL(this.refState.httpRequest.url, \"missing-host://\").searchParams;\n documentID = documentID || searchParams.get(\"documentId\");\n previewToken = previewToken || searchParams.get(\"token\");\n }\n }\n if (documentID != null && previewToken != null) {\n const document = await this.getByID(documentID, {\n ref: previewToken,\n lang: \"*\",\n signal: args.signal,\n fetchOptions: args.fetchOptions\n });\n const url = asLink(document, { linkResolver: args.linkResolver });\n if (typeof url === \"string\") {\n return url;\n }\n }\n return args.defaultURL;\n }\n /**\n * Configures the client to query the latest published content for all future\n * queries.\n *\n * If the `ref` parameter is provided during a query, it takes priority for\n * that query.\n *\n * @example\n *\n * ```ts\n * await client.queryLatestContent()\n * const document = await client.getByID(\"WW4bKScAAMAqmluX\")\n * ```\n */\n queryLatestContent() {\n this.refState.mode = RefStateMode.Master;\n }\n /**\n * Configures the client to query content from a specific Release identified\n * by its ID for all future queries.\n *\n * If the `ref` parameter is provided during a query, it takes priority for\n * that query.\n *\n * @example\n *\n * ```ts\n * await client.queryContentFromReleaseByID(\"YLB7OBAAACMA7Cpa\")\n * const document = await client.getByID(\"WW4bKScAAMAqmluX\")\n * ```\n *\n * @param releaseID - The ID of the Release.\n */\n queryContentFromReleaseByID(releaseID) {\n this.refState = {\n ...this.refState,\n mode: RefStateMode.ReleaseID,\n releaseID\n };\n }\n /**\n * Configures the client to query content from a specific Release identified\n * by its label for all future queries.\n *\n * If the `ref` parameter is provided during a query, it takes priority for\n * that query.\n *\n * @example\n *\n * ```ts\n * await client.queryContentFromReleaseByLabel(\"My Release\")\n * const document = await client.getByID(\"WW4bKScAAMAqmluX\")\n * ```\n *\n * @param releaseLabel - The label of the Release.\n */\n queryContentFromReleaseByLabel(releaseLabel) {\n this.refState = {\n ...this.refState,\n mode: RefStateMode.ReleaseLabel,\n releaseLabel\n };\n }\n /**\n * Configures the client to query content from a specific ref. The ref can be\n * provided as a string or a function.\n *\n * If a function is provided, the ref is fetched lazily before each query. The\n * function may also be asynchronous.\n *\n * @example\n *\n * ```ts\n * await client.queryContentFromRef(\"my-ref\")\n * const document = await client.getByID(\"WW4bKScAAMAqmluX\")\n * ```\n *\n * @param ref - The ref or a function that returns the ref from which to query\n * content.\n */\n queryContentFromRef(ref) {\n this.refState = {\n ...this.refState,\n mode: RefStateMode.Manual,\n ref\n };\n }\n /**\n * A `fetch()` function to be used with GraphQL clients configured for\n * Prismic's GraphQL API. It automatically applies the necessary `prismic-ref`\n * and Authorization headers. Queries will automatically be minified by\n * removing whitespace where possible.\n *\n * @example\n *\n * ```ts\n * const graphQLClient = new ApolloClient({\n * \tlink: new HttpLink({\n * \t\turi: prismic.getGraphQLEndpoint(repositoryName),\n * \t\t// Provide `client.graphQLFetch` as the fetch implementation.\n * \t\tfetch: client.graphQLFetch,\n * \t\t// Using GET is required.\n * \t\tuseGETForQueries: true,\n * \t}),\n * \tcache: new InMemoryCache(),\n * })\n * ```\n *\n * @param input - The `fetch()` `input` parameter. Only strings are supported.\n * @param init - The `fetch()` `init` parameter. Only plain objects are\n * supported.\n *\n * @returns The `fetch()` Response for the request.\n *\n * @experimental\n */\n async graphQLFetch(input, init) {\n const cachedRepository = await this.getCachedRepository();\n const ref = await this.getResolvedRefString();\n const unsanitizedHeaders = {\n \"Prismic-ref\": ref,\n Authorization: this.accessToken ? `Token ${this.accessToken}` : \"\",\n // Asserting `init.headers` is a Record since popular GraphQL\n // libraries pass this as a Record. Header objects as input\n // are unsupported.\n ...init ? init.headers : {}\n };\n if (cachedRepository.integrationFieldsRef) {\n unsanitizedHeaders[\"Prismic-integration-field-ref\"] = cachedRepository.integrationFieldsRef;\n }\n const headers = {};\n for (const key in unsanitizedHeaders) {\n if (unsanitizedHeaders[key]) {\n headers[key.toLowerCase()] = unsanitizedHeaders[key];\n }\n }\n const url = new URL(\n // Asserting `input` is a string since popular GraphQL\n // libraries pass this as a string. Request objects as\n // input are unsupported.\n input\n );\n url.searchParams.set(\"ref\", ref);\n const query = url.searchParams.get(\"query\");\n if (query) {\n url.searchParams.set(\n \"query\",\n // Compress the GraphQL query (if it exists) by\n // removing whitespace. This is done to\n // optimize the query size and avoid\n // hitting the upper limit of GET requests\n // (2048 characters).\n minifyGraphQLQuery(query)\n );\n }\n return await this.fetchFn(url.toString(), {\n ...init,\n headers\n });\n }\n /**\n * Returns a cached version of `getRepository` with a TTL.\n *\n * @returns Cached repository metadata.\n */\n async getCachedRepository(params) {\n if (!this.cachedRepository || Date.now() >= this.cachedRepositoryExpiration) {\n this.cachedRepositoryExpiration = Date.now() + REPOSITORY_CACHE_TTL;\n this.cachedRepository = await this.getRepository(params);\n }\n return this.cachedRepository;\n }\n /**\n * Returns a cached Prismic repository form. Forms are used to determine API\n * endpoints for types of repository data.\n *\n * @param name - Name of the form.\n *\n * @returns The repository form.\n *\n * @throws If a matching form cannot be found.\n */\n async getCachedRepositoryForm(name, params) {\n const cachedRepository = await this.getCachedRepository(params);\n const form = cachedRepository.forms[name];\n if (!form) {\n throw new PrismicError(`Form with name \"${name}\" could not be found`, void 0, void 0);\n }\n return form;\n }\n /**\n * Returns the ref needed to query based on the client's current state. This\n * method may make a network request to fetch a ref or resolve the user's ref\n * thunk.\n *\n * If auto previews are enabled, the preview ref takes priority if available.\n *\n * The following strategies are used depending on the client's state:\n *\n * - If the user called `queryLatestContent`: Use the repository's master ref.\n * The ref is cached for 5 seconds. After 5 seconds, a new master ref is\n * fetched.\n * - If the user called `queryContentFromReleaseByID`: Use the release's ref.\n * The ref is cached for 5 seconds. After 5 seconds, a new ref for the\n * release is fetched.\n * - If the user called `queryContentFromReleaseByLabel`: Use the release's ref.\n * The ref is cached for 5 seconds. After 5 seconds, a new ref for the\n * release is fetched.\n * - If the user called `queryContentFromRef`: Use the provided ref. Fall back\n * to the master ref if the ref is not a string.\n *\n * @returns The ref to use during a query.\n */\n async getResolvedRefString(params) {\n var _a, _b;\n if (this.refState.autoPreviewsEnabled) {\n let previewRef;\n let cookieJar;\n if ((_a = this.refState.httpRequest) == null ? void 0 : _a.headers) {\n if (\"get\" in this.refState.httpRequest.headers && typeof this.refState.httpRequest.headers.get === \"function\") {\n cookieJar = this.refState.httpRequest.headers.get(\"cookie\");\n } else if (\"cookie\" in this.refState.httpRequest.headers) {\n cookieJar = this.refState.httpRequest.headers.cookie;\n }\n } else if ((_b = globalThis.document) == null ? void 0 : _b.cookie) {\n cookieJar = globalThis.document.cookie;\n }\n if (cookieJar) {\n previewRef = getPreviewCookie(cookieJar);\n }\n if (previewRef) {\n return previewRef;\n }\n }\n const cachedRepository = await this.getCachedRepository(params);\n const refModeType = this.refState.mode;\n if (refModeType === RefStateMode.ReleaseID) {\n return findRefByID(cachedRepository.refs, this.refState.releaseID).ref;\n } else if (refModeType === RefStateMode.ReleaseLabel) {\n return findRefByLabel(cachedRepository.refs, this.refState.releaseLabel).ref;\n } else if (refModeType === RefStateMode.Manual) {\n const res = await castThunk(this.refState.ref)();\n if (typeof res === \"string\") {\n return res;\n }\n }\n return findMasterRef(cachedRepository.refs).ref;\n }\n /**\n * Performs a network request using the configured `fetch` function. It\n * assumes all successful responses will have a JSON content type. It also\n * normalizes unsuccessful network requests.\n *\n * @typeParam T - The JSON response.\n *\n * @param url - URL to the resource to fetch.\n * @param params - Prismic REST API parameters for the network request.\n *\n * @returns The JSON response from the network request.\n */\n async fetch(url, params = {}) {\n const res = await super.fetch(url, params);\n if (res.status !== 404 && res.status !== 429 && res.json == null) {\n throw new PrismicError(void 0, url, res.json || res.text);\n }\n switch (res.status) {\n case 200:\n case 201: {\n return res.json;\n }\n case 400: {\n throw new ParsingError(res.json.message, url, res.json);\n }\n case 401:\n case 403: {\n throw new ForbiddenError(res.json.error || res.json.message, url, res.json);\n }\n case 404: {\n if (res.json === void 0) {\n throw new RepositoryNotFoundError(`Prismic repository not found. Check that \"${this.documentAPIEndpoint}\" is pointing to the correct repository.`, url, url.startsWith(this.documentAPIEndpoint) ? void 0 : res.text);\n }\n if (res.json.type === \"api_notfound_error\") {\n throw new RefNotFoundError(res.json.message, url, res.json);\n }\n if (res.json.type === \"api_security_error\" && /preview token.*expired/i.test(res.json.message)) {\n throw new PreviewTokenExpiredError(res.json.message, url, res.json);\n }\n throw new NotFoundError(res.json.message, url, res.json);\n }\n case 410: {\n throw new RefExpiredError(res.json.message, url, res.json);\n }\n case 429: {\n const parsedRetryAfter = Number(res.headers.get(\"retry-after\"));\n const delay = Number.isNaN(parsedRetryAfter) ? DEFUALT_RETRY_AFTER_MS : parsedRetryAfter;\n return await new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n resolve(await this.fetch(url, params));\n } catch (error) {\n reject(error);\n }\n }, delay);\n });\n }\n }\n throw new PrismicError(void 0, url, res.json);\n }\n}\n_repositoryName = new WeakMap();\nexport {\n Client,\n GET_ALL_QUERY_DELAY,\n REPOSITORY_CACHE_TTL\n};\n//# sourceMappingURL=Client.js.map\n","import { Client } from \"./Client.js\";\nconst createClient = (repositoryNameOrEndpoint, options) => new Client(repositoryNameOrEndpoint, options);\nexport {\n createClient\n};\n//# sourceMappingURL=createClient.js.map\n","import { asText as asText$1 } from \"../richtext/asText.js\";\nconst asText = (richTextField, ...configObjectOrTuple) => {\n if (richTextField) {\n const [configObjectOrSeparator] = configObjectOrTuple;\n let config;\n if (typeof configObjectOrSeparator === \"string\") {\n config = {\n separator: configObjectOrSeparator\n };\n } else {\n config = { ...configObjectOrSeparator };\n }\n return asText$1(richTextField, config.separator);\n } else {\n return null;\n }\n};\nexport {\n asText\n};\n//# sourceMappingURL=asText.js.map\n","const asText = (richTextField, separator = \" \") => {\n let result = \"\";\n for (let i = 0; i < richTextField.length; i++) {\n if (\"text\" in richTextField[i]) {\n result += (result ? separator : \"\") + richTextField[i].text;\n }\n }\n return result;\n};\nexport {\n asText\n};\n//# sourceMappingURL=asText.js.map\n",null,null,null,null,null,null,"var img = \"data:image/svg+xml,%3csvg width='21' height='21' viewBox='0 0 21 21' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M6.82422 4.26953C6.82422 3.16496 7.71965 2.26953 8.82422 2.26953H14.8242C15.9288 2.26953 16.8242 3.16496 16.8242 4.26953V14.2695C16.8242 15.3741 15.9288 16.2695 14.8242 16.2695H8.82422C7.71965 16.2695 6.82422 15.3741 6.82422 14.2695V4.26953ZM4.82422 6.26955C4.82422 5.52926 5.22642 4.88292 5.82422 4.53711V14.7695C5.82422 16.1503 6.94351 17.2695 8.32422 17.2695H14.5567C14.2108 17.8673 13.5645 18.2695 12.8242 18.2695H8.32422C6.39122 18.2695 4.82422 16.7025 4.82422 14.7695V6.26955Z' fill='%23A1A6B2'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='40' height='41' viewBox='0 0 40 41' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg clip-path='url(%23clip0_1829_8153)'%3e%3crect y='0.5' width='40' height='40' rx='20' fill='url(%23paint0_linear_1829_8153)'/%3e%3cg filter='url(%23filter0_d_1829_8153)'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M13.0528 33.4436C12.873 33.5507 12.6389 33.501 12.5207 33.3307L12.0681 32.6785C11.9499 32.5082 11.9896 32.2776 12.1554 32.1508C13.6462 31.0107 14.8716 29.7257 15.8353 28.3493C19.4237 23.2245 19.4237 16.7755 15.8353 11.6507C14.8716 10.2744 13.6462 8.98932 12.1554 7.84924C11.9896 7.72244 11.9499 7.49181 12.0681 7.32152L12.5207 6.66926C12.6389 6.49897 12.873 6.44931 13.0528 6.55641L33.1584 18.5353C34.2805 19.2038 34.2805 20.7962 33.1584 21.4647L13.0528 33.4436Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cfilter id='filter0_d_1829_8153' x='1.26226' y='0.23632' width='43.4755' height='48.4755' filterUnits='userSpaceOnUse' color-interpolation-filters='sRGB'%3e%3cfeFlood flood-opacity='0' result='BackgroundImageFix'/%3e%3cfeColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha'/%3e%3cfeOffset dy='4.47406'/%3e%3cfeGaussianBlur stdDeviation='5.36887'/%3e%3cfeComposite in2='hardAlpha' operator='out'/%3e%3cfeColorMatrix type='matrix' values='0 0 0 0 0.207843 0 0 0 0 0.407843 0 0 0 0 0.866667 0 0 0 0.5 0'/%3e%3cfeBlend mode='normal' in2='BackgroundImageFix' result='effect1_dropShadow_1829_8153'/%3e%3cfeBlend mode='normal' in='SourceGraphic' in2='effect1_dropShadow_1829_8153' result='shape'/%3e%3c/filter%3e%3clinearGradient id='paint0_linear_1829_8153' x1='40' y1='13.6947' x2='6.19608e-07' y2='13.6948' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='%233568DD'/%3e%3cstop offset='1' stop-color='%237DA3F9'/%3e%3c/linearGradient%3e%3cclipPath id='clip0_1829_8153'%3e%3crect y='0.5' width='40' height='40' rx='20' fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='20' height='21' viewBox='0 0 20 21' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.75 17.9956C13.1642 17.9956 13.5 17.6598 13.5 17.2456C13.5 16.8314 13.1642 16.4956 12.75 16.4956H6.5C5.39543 16.4956 4.5 15.6002 4.5 14.4956V6.49561C4.5 5.39104 5.39543 4.49561 6.5 4.49561H12.75C13.1642 4.49561 13.5 4.15982 13.5 3.74561C13.5 3.33139 13.1642 2.99561 12.75 2.99561H6.5C4.567 2.99561 3 4.56261 3 6.49561V14.4956C3 16.4286 4.567 17.9956 6.5 17.9956H12.75ZM13.7413 6.69451C14.0457 6.41355 14.5201 6.43253 14.8011 6.7369L17.8011 9.9869C18.0663 10.2742 18.0663 10.717 17.8011 11.0043L14.8011 14.2543C14.5201 14.5587 14.0457 14.5777 13.7413 14.2967C13.4369 14.0158 13.4179 13.5413 13.6989 13.2369L15.537 11.2456H7.75C7.33579 11.2456 7 10.9098 7 10.4956C7 10.0814 7.33579 9.74561 7.75 9.74561H15.537L13.6989 7.75432C13.4179 7.44995 13.4369 6.97546 13.7413 6.69451Z' fill='%23ff6767'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cpath d='M4.2097 4.3871L4.29289 4.29289C4.65338 3.93241 5.22061 3.90468 5.6129 4.2097L5.70711 4.29289L12 10.585L18.2929 4.29289C18.6834 3.90237 19.3166 3.90237 19.7071 4.29289C20.0976 4.68342 20.0976 5.31658 19.7071 5.70711L13.415 12L19.7071 18.2929C20.0676 18.6534 20.0953 19.2206 19.7903 19.6129L19.7071 19.7071C19.3466 20.0676 18.7794 20.0953 18.3871 19.7903L18.2929 19.7071L12 13.415L5.70711 19.7071C5.31658 20.0976 4.68342 20.0976 4.29289 19.7071C3.90237 19.3166 3.90237 18.6834 4.29289 18.2929L10.585 12L4.29289 5.70711C3.93241 5.34662 3.90468 4.77939 4.2097 4.3871L4.29289 4.29289L4.2097 4.3871Z' fill='%23A1A6B2'/%3e%3c/svg%3e\";\n export default img;",null,null,"var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='82' height='81' fill='none'%3e%3cg filter='url(%23a)'%3e%3crect width='64.636' height='64.636' x='8.682' y='4' fill='white' rx='32.318'/%3e%3cpath fill='url(%23b)' fill-rule='evenodd' d='M28.12 58.956a.648.648 0 0 1-.872-.19l-.743-1.095a.658.658 0 0 1 .143-.886c2.447-1.915 4.458-4.072 6.04-6.383 5.888-8.605 5.888-19.434 0-28.04-1.582-2.31-3.593-4.468-6.04-6.382a.658.658 0 0 1-.143-.886l.743-1.095a.647.647 0 0 1 .873-.19l32.995 20.114c1.842 1.122 1.842 3.796 0 4.919L28.121 58.956Z' clip-rule='evenodd'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='b' x1='62.497' x2='26.393' y1='28.669' y2='28.669' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='%233568DD'/%3e%3cstop offset='1' stop-color='%237DA3F9'/%3e%3c/linearGradient%3e%3cfilter id='a' width='80.636' height='80.636' x='.682' y='0' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'%3e%3cfeFlood flood-opacity='0' result='BackgroundImageFix'/%3e%3cfeColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/%3e%3cfeOffset dy='4'/%3e%3cfeGaussianBlur stdDeviation='4'/%3e%3cfeColorMatrix values='0 0 0 0 0.184314 0 0 0 0 0.168627 0 0 0 0 0.262745 0 0 0 0.1 0'/%3e%3cfeBlend in2='BackgroundImageFix' result='effect1_dropShadow_98_149'/%3e%3cfeColorMatrix in='SourceAlpha' result='hardAlpha' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0'/%3e%3cfeOffset/%3e%3cfeGaussianBlur stdDeviation='.5'/%3e%3cfeComposite in2='hardAlpha' operator='out'/%3e%3cfeColorMatrix values='0 0 0 0 0.760784 0 0 0 0 0.772549 0 0 0 0 0.8 0 0 0 1 0'/%3e%3cfeBlend in2='effect1_dropShadow_98_149' result='effect2_dropShadow_98_149'/%3e%3cfeBlend in='SourceGraphic' in2='effect2_dropShadow_98_149' result='shape'/%3e%3c/filter%3e%3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='17' fill='none'%3e%3cpath stroke='%239B9CA5' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 12.636 4-4-4-4'/%3e%3c/svg%3e\";\n export default img;",null,null,null,"var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 24 24'%3e %3cpath fill='%233b82f6' d='M4.913 7.519c3.915-3.831 10.26-3.831 14.174 0l.471.461a.483.483 0 0 1 0 .694l-1.611 1.577a.252.252 0 0 1-.354 0l-.649-.634c-2.73-2.673-7.157-2.673-9.887 0l-.694.68a.255.255 0 0 1-.355 0L4.397 8.719a.482.482 0 0 1 0-.693l.516-.507Zm17.506 3.263l1.434 1.404a.483.483 0 0 1 0 .694l-6.466 6.331a.508.508 0 0 1-.709 0l-4.588-4.493a.126.126 0 0 0-.178 0l-4.589 4.493a.508.508 0 0 1-.709 0L.147 12.88a.483.483 0 0 1 0-.694l1.434-1.404a.508.508 0 0 1 .709 0l4.589 4.493c.05.048.129.048.178 0l4.589-4.493a.508.508 0 0 1 .709 0l4.589 4.493c.05.048.128.048.178 0l4.589-4.493a.507.507 0 0 1 .708 0Z'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 256 240'%3e %3cpath fill='%23E17726' d='M250.066 0L140.219 81.279l20.427-47.9z'/%3e %3cpath fill='%23E27625' d='m6.191.096l89.181 33.289l19.396 48.528zM205.86 172.858l48.551.924l-16.968 57.642l-59.243-16.311zm-155.721 0l27.557 42.255l-59.143 16.312l-16.865-57.643z'/%3e%3cpath fill='%23E27625' d='m112.131 69.552l1.984 64.083l-59.371-2.701l16.888-25.478l.214-.245zm31.123-.715l40.9 36.376l.212.244l16.888 25.478l-59.358 2.7zM79.435 173.044l32.418 25.259l-37.658 18.181zm97.136-.004l5.131 43.445l-37.553-18.184z'/%3e%3cpath fill='%23D5BFB2' d='m144.978 195.922l38.107 18.452l-35.447 16.846l.368-11.134zm-33.967.008l-2.909 23.974l.239 11.303l-35.53-16.833z'/%3e%3cpath fill='%23233447' d='m100.007 141.999l9.958 20.928l-33.903-9.932zm55.985.002l24.058 10.994l-34.014 9.929z'/%3e%3cpath fill='%23CC6228' d='m82.026 172.83l-5.48 45.04l-29.373-44.055zm91.95.001l34.854.984l-29.483 44.057zm28.136-44.444l-25.365 25.851l-19.557-8.937l-9.363 19.684l-6.138-33.849zm-148.237 0l60.435 2.749l-6.139 33.849l-9.365-19.681l-19.453 8.935z'/%3e%3cpath fill='%23E27525' d='m52.166 123.082l28.698 29.121l.994 28.749zm151.697-.052l-29.746 57.973l1.12-28.8zm-90.956 1.826l1.155 7.27l2.854 18.111l-1.835 55.625l-8.675-44.685l-.003-.462zm30.171-.101l6.521 35.96l-.003.462l-8.697 44.797l-.344-11.205l-1.357-44.862z'/%3e%3cpath fill='%23F5841F' d='m177.788 151.046l-.971 24.978l-30.274 23.587l-6.12-4.324l6.86-35.335zm-99.471 0l30.399 8.906l6.86 35.335l-6.12 4.324l-30.275-23.589z'/%3e%3cpath fill='%23C0AC9D' d='m67.018 208.858l38.732 18.352l-.164-7.837l3.241-2.845h38.334l3.358 2.835l-.248 7.831l38.487-18.29l-18.728 15.476l-22.645 15.553h-38.869l-22.63-15.617z'/%3e%3cpath fill='%23161616' d='m142.204 193.479l5.476 3.869l3.209 25.604l-4.644-3.921h-36.476l-4.556 4l3.104-25.681l5.478-3.871z'/%3e%3cpath fill='%23763E1A' d='M242.814 2.25L256 41.807l-8.235 39.997l5.864 4.523l-7.935 6.054l5.964 4.606l-7.897 7.191l4.848 3.511l-12.866 15.026l-52.77-15.365l-.457-.245l-38.027-32.078zm-229.628 0l98.326 72.777l-38.028 32.078l-.457.245l-52.77 15.365l-12.866-15.026l4.844-3.508l-7.892-7.194l5.952-4.601l-8.054-6.071l6.085-4.526L0 41.809z'/%3e%3cpath fill='%23F5841F' d='m180.392 103.99l55.913 16.279l18.165 55.986h-47.924l-33.02.416l24.014-46.808zm-104.784 0l-17.151 25.873l24.017 46.808l-33.005-.416H1.631l18.063-55.985zm87.776-70.878l-15.639 42.239l-3.319 57.06l-1.27 17.885l-.101 45.688h-30.111l-.098-45.602l-1.274-17.986l-3.32-57.045l-15.637-42.239z'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='48' height='49' viewBox='0 0 48 49' fill='none' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3crect width='48' height='48' rx='24' transform='matrix(-1 0 0 1 48 0.636719)' fill='url(%23pattern0_3364_10509)'/%3e%3cdefs%3e%3cpattern id='pattern0_3364_10509' patternContentUnits='objectBoundingBox' width='1' height='1'%3e%3cuse xlink:href='%23image0_3364_10509' transform='scale(0.0025)'/%3e%3c/pattern%3e%3cimage id='image0_3364_10509' width='400' height='400' xlink:href='data:image/png%3bbase64%2ciVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAIAAAAP3aGbAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAABkKADAAQAAAABAAABkAAAAAAbMW/MAAAWPElEQVR4Ae3dO6wdx3nAcVKiSOoRlmFhFpFSWQhr0XWoxk0EMJVUsVCQKoRTCCmsyikCB4ghV4ELqzIrE4hqMbWp1gSkKkzDFGJjgBBlkuIje3Up3nsPz2N3dma%2bmXN%2bgRGfx%2b7OnN%2b3%2buPcS0Y5/tM3/3TM/xAgQKAHgZd62KQ9EiBAYE9AsNwHBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCgtXNqGyUAAHBcg8QINCNgGB1MyobJUBAsNwDBAh0IyBY3YzKRgkQECz3AAEC3QgIVjejslECBATLPUCAQDcCJ7rZqY1GCLx%2b5vjZcy%2b99eOX3zhz/LUzxyO2YM09gevXHt65/YSFYLkHFgWGSP3k3VfOXzhx/p0TQ60W3/a8usDvPrmvVvvqglX97mt4wSFSQ6ouXjo5NKvhbe7W1oZaXf3k/m595tWfVrBW2%2bzSO0OqPvin08P/3qUP3cFnVauFIblBF0B27unwZeqDK6f/7vKpnfvkzX9gtXpxRIL1oskOvTJ8pfrZL1/zi6oGR65WS4ciWEtZduLF9y6f%2bvDjV3fio/b2IdVq1cQEa5XMlr8%2b/Bj4/pXTW/4h%2b/x4arVmbv7Qeg3O1r6lVs2OVq3Wj0aw1vts4btq1exQ1WrjaARrI9FWHaBWzY5TrcaMRrDGKG3JMWrV7CDVauRoBGskVPeHqVWzI1Sr8aMRrPFWHR%2bpVs0OT60mjUawJnF1ebBaNTs2tZo6GsGaKtbZ8WrV7MDUKmE0gpWA1s0patXsqNQqbTSClebWwVlq1eyQ1Cp5NIKVTNf0iWrV7HjUas5oBGuOXqPnqlWjgzl2TK1mjkawZgI2d7paNTeSHzakVj9IpP%2b3YKXbNXimWjU4lP0tqVWW0QhWFsYmLqJWTYxh2SbUaplKymuClaLW4Dlq1eBQ9rekVhlHI1gZMcMupVZh9JsWVqtNQtPeF6xpXg0erVYNDmV/S2qVfTSClZ206gXVqir3lMXUaorW2GMFa6xUg8epVYND2d%2bSWhUajWAVgi1%2bWbUqTpy6gFqlym0%2bT7A2GzV4hFo1OJT9LalV0dEIVlHeIhdXqyKsOS6qVjkU111DsNbpNPieWjU4lP0tqVWF0QhWBeRsS6hVNsrcF1Kr3KLLrydYy10afFWtGhzK/pbUqtpoBKsa9ayF1GoWX8mT1aqk7uK1BWtRpMHnatXgUPa3pFaVRyNYlcEnL6dWk8lqnaBWtaQP1hGsA4sGH6lVg0PZ35JahYxGsELYRy2qVqOYIg5Sqwj1vTUFK0p%2bw7pqtQEo7m21irMXrED71Uur1Wqb4HfUKnYAvmHF%2bi9ZXa2WoLTxklqFz0GwwkdwZANqdYSjpSdq1cI0BKuFKTzbg1o1NIyjW1Grox5hzwQrjH5hYbVaAGnnqVq1MwvBamIWatXEGJZtQq2WqYS9Jlhh9M8XVqvnFK09UKvWJiJYwRNRq%2bABrF5erVbbhL0jWGH0w8JqFam/dm21WssT9qZghdGrVRj9poXVapNQ2PuCFUOvVjHuI1ZVqxFIYYcIVgC9WgWgj1tSrcY5hR0lWLXp1aq2%2bOj11Go0VdiBglWVXq2qck9ZTK2maIUdeyJs5d1buFytvr795NZXj%2b/dfbp7qHk%2b8a0vH3/26YM813KVkgKCVVL30LVL1OqPNx598fl3n197KFWHpD3cZgHBqjHd7LUavlL96qNvb954VGP31iDQjIBgFR9F9loNP7/84h/v3bn9pPjWLUCgMQHBKjuQErX6l/e/8TNg2bG5eqsC/pSw4GSy12r4SXD4bqVWBWfm0m0LCFap%2bWSv1bDRq7%2b%2b7yfBUgNz3R4EBKvIlErUavh6df33D4ts10UJdCIgWPkHVaJWwy6Hr1f59%2bqKBLoSEKzM4ypUq2GXw9%2b6yrxXlyPQm4Bg5ZxYuVoNf5XBb69yjsq1%2bhQQrGxzK1erYYvf%2bD%2b7yTYoF%2bpYQLDyDK9orYYt3vk/f000z6RcpWsBwcowvtK1yrBFlyCwFQKCNXeMajVX0PkERgsI1miqZQeq1TIVrxEoJSBY6bJqlW7nTAJJAoKVxOb/Q1ciW6Onnb/g3wLQ6GgWtiVYCyCjnvpuNYqpn4MuXjr5s1%2b%2b1s9%2bd3engjV59mo1mayHEy7%2bvWZ1MCfBmjYktZrm1dXRmtX%2buARrwozUagJWn4dqVuNzE6yxA1KrsVKdH6dZLQ9QsEZNR61GMW3LQZrV7CQFa/No1Gqz0dYdoVltjlSwNsxFrTYAbe/bmtXgbAVr3VDUap3ODrynWa0NWbBWTkStVtLs0hua1dS0BWv5ONRquctOvqpZ7YxdsJbMQq2WoOz2S5rVyPwFa3EQarUo4vn3AprVwo0gWEem8N7lU%2b9fOX3kJU8I/CCgWT9IhP23YB3Qnz330ocfv3rw3CMCLwho1gskVV8QrAPu4YfBgyceEVghoFkrYGq8LFjPlIevV3976WQNcmv0L6BZUTMUrGfyvl5F3YKdrqtZIYMTrGfsf/OOf0luyB3Y8aKaVX94grVn/tbbLw8/EtbXt2LvAppVeYL%2bKd0D/8sfcah8423PcppVc5b%2bQd3THr5h1US31pYJaFa1gQpWNWoLbbOAZtWZrmDVcbbK9gtoVoUZC9Ye8p3bTypYW2LrBTSr9IgFa0/41lePS0O7/o4IaFbRQQvWHu%2btLx/fu/u0KLSL746AZpWbtWA9s/3D59%2bVU3blXRPQrEITF6xnsNevPSxE7LK7KaBZJeYuWM9Ub954NPynBLFr7qyAZmUfvWAdkP7mX/988MQjAjkENCuH4sE1BOvAYvjVu2YdcHiUSUCzMkHuXUawjmB%2b9tsH//17v8w6YuLJfAHNmm%2b4fwXBWpT8j4%2b%2b1axFFM9nC2jWbMK9CwjWEkbNWoLipdkCmjWbULBWEGrWChgvzxLQrFl8vmGt4dOsNTjeShbQrGS64UQ/Eq7T06x1Ot5LFdCsVDnB2iSnWZuEvJ8ioFkpar5hjVHTrDFKjpkqoFlTxYbj/Ug4Ck2zRjE5aKKAZk0EE6zRYJo1msqBEwQ0awKWb1iTsDRrEpeDRwpo1kio4TA/Eo632jtSs6Z5OXqcgGaNcxKskU6HDtOsQxgeZhPQrDGUvmGNUVo8RrMWRTzPIaBZGxUFayPR8gM0a7mLV%2bcJaNZ6P8Fa77PuXc1ap%2bO9VAHNWiMnWGtwNr%2blWZuNHDFdQLNWmQnWKpmxr2vWWCnHTRHQrKVagrWUZdqLmjXNy9HjBIZmvXf51Lhjd%2bUowcozac3K4%2bgqRwU%2b/PjVt95%2b%2behrO/1MsLKNX7OyUbrQIYF/%2bPmrh57t%2bkPBynkHaFZOTdf6XuD8hRPDf2DsCwhW5jtBszKDutyxYxcvncSwLyBY%2be8EzcpvuttX/Mm7r%2bw2wMGnF6wDi4yPNCsjpku9fub4X/vV%2b/f3gWCV%2bsdBs0rJ7uR1/%2brH/qxwb/CCVfD216yCuDt26bPn/KO6N3IKZW98zSrr6%2bo7JiBYxQeuWcWJLbAzAoJVY9SaVUN5q9f4368eb/XnG/vhBGus1MzjNGsm4I6ffuf2kx0X2P/4glXvNtCsetbbtdLXt5/8z5e%2bYe0NVbCq3tqaVZV7Wxa7%2bcWjbfkocz%2bHYM0VnHq%2bZk0Vc/zvPrkPYV9AsALuBM0KQO92yevXHvoF1vPpCdZziqoPNKsqd7eL3bv71Nerw9MTrMMaVR9rVlXuPhcbauXr1eHRCdZhjdqPNau2eFfrDbX67NMHXW25%2bGYFqzjx%2bgU0a73Pzr471Oqq37W/MH7BeoGk%2bguaVZ289QXVatWEBGuVTNXXNasqd9uLqdWa%2bQjWGpyqb2lWVe5WF1Or9ZMRrPU%2bVd/VrKrc7S2mVhtnIlgbiaoeoFlVuVtaTK3GTEOwxihVPUazqnK3sZhajZyDYI2EqnqYZlXljl5MrcZPQLDGW1U9UrOqcsctplaT7AVrElfVgzWrKnfEYmo1VV2wpopVPV6zqnLXXUytErxPJJzjlJoCQ7P2ljtec01rFRdQqzRiwUpzq3rW0KzzF0yqqnnRxdQqmdePhMl0VU%2b8ecO/JLcqeLnF1GqOrWDN0XMugWkCajXN64WjBesFEi8QKCOgVvNdBWu%2boSsQ2CygVpuNRhwhWCOQHEJgnoBazfM7OFuwDiw82lmBsz8q%2bA%2bCWmW8rwrOKeMuXYpAUYHXz5T6e25qlXdwgpXX09X6Ezh77qW33n65xL7VKruqYGUndcHOBM6/U%2bQv5apViftAsEqoumZPAu9fOZ19u2qVnXT/goJVCNZl%2bxC4eOnk8CNh3r2qVV7Pw1fLPKrDl/aYQOMCQ6qyf71Sq6JDF6yivC7ersDwJ4M//8/X8369UqvS8xas0sKu36LA0Kl/u/pG3j8cVKsKky7y5yMV9m0JAskCF9595Z///bW8f/dKrZLHMelEwZrE5eCOBYZCvXvp5FCr7P9yMbWqdlsIVjXqWQu9d/nUm2X%2bcuOsbXVy8ht/cXzQy/vrqucfXa2eU1R4IFgVkOcu8cGV09n/MGvunpz/vYBaVb4R/NK9Mvjk5dRqMlmtE9SqlvTBOoJ1YNHgI7VqcCj7W1KrkNEIVgj7qEXVahRTxEFqFaG%2bt6ZgRclvWFetNgDFva1WcfaCFWi/emm1Wm0T/I5axQ7AN6xY/yWrq9USlDZeUqvwOQhW%2bAiObECtjnC09EStWpiGYLUwhWd7UKuGhnF0K2p11CPsmWCF0S8srFYLIO08Vat2ZiFYTcxCrZoYw7JNqNUylbDXBCuM/vnCavWcorUHatXaRAQreCJqFTyA1cur1WqbsHcEK4x%2bWFitIvXXrq1Wa3nC3hSsMHq1CqPftLBabRIKe1%2bwYujVKsZ9xKpqNQIp7BDBCqBXqwD0cUuq1TinsKMEqza9WtUWH72eWo2mCjtQsKrSq1VV7imLqdUUrbBjBasevVrVs564klpNBAs7XLAq0atVJejpy6jVdLOwMwSrBr1a1VBOWkOtktjCThKs4vRqVZw4dQG1SpULO0%2bwytKrVVnfGVdXqxl4YacKVkF6tSqIO%2b/SajXPL%2bxswSpFr1alZGdfV61mE4ZdQLCK0KtVEdYcF1WrHIph1xCs/PRqld800xXVKhNk2GUEKzO9WmUGzXc5tcpnGXYlwcpJr1Y5NbNeS62ycoZdTLCy0atVNsrcF1Kr3KJh1xOsPPRqlcexwFXUqgBq2CUFKwO9WmVALHMJtSrjGnZVwZpLr1ZzBYudr1bFaMMuLFiz6NVqFl/Jk9WqpG7YtQUrnV6t0u0Kn6lWhYHDLi9YifRqlQhX/jS1Km8ctoJgpdCrVYpalXPUqgpz2CKCNZlerSaT1TpBrWpJh60jWNPo1WqaV8Wj1aoidthSgjWBXq0mYNU9VK3qeoetJlhj6dVqrFT149SqOnnYgoI1il6tRjFFHKRWEephawrWZnq12mwUdIRaBcGHLStYG%2bjVagNQ3NtqFWcftrJgraNXq3U6oe%2bpVSh/2OKCtZJerVbSRL%2bhVtETCFv/RNjKbS%2bsVs3O5ze/%2bPNnnz5odns2VlRAsJbwqtUSlAZe%2bvr2k1999O3NG48a2IstxAgI1qK7Wi2KtPH8vz59cPWT%2b/fuPm1jO3YRIyBYR9zV6ghHG0/%2beOPR1V/f98WqjWkE70KwDgagVgcWDTwavkxdv/bwD59/J1UNTKOVLQjWs0moVSO35PCLqptfPBoiNaTKD4CNDKWdbQjW3izOnntp%2bNXI8Ifl7Qxmp3by7d2n39x9euurx0OtRGqnRj/1wx7/6Zt/mnqO4wkQIBAi4C%2bOhrBblACBFAHBSlFzDgECIQKCFcJuUQIEUgQEK0XNOQQIhAgIVgi7RQkQSBEQrBQ15xAgECIgWCHsFiVAIEVAsFLUnEOAQIiAYIWwW5QAgRQBwUpRcw4BAiECghXCblECBFIEBCtFzTkECIQICFYIu0UJEEgREKwUNecQIBAiIFgh7BYlQCBFQLBS1JxDgECIgGCFsFuUAIEUAcFKUXMOAQIhAoIVwm5RAgRSBAQrRc05BAiECAhWCLtFCRBIERCsFDXnECAQIiBYIewWJUAgRUCwUtScQ4BAiIBghbBblACBFAHBSlFzDgECIQKCFcJuUQIEUgQEK0XNOQQIhAgIVgi7RQkQSBEQrBQ15xAgECIgWCHsFiVAIEVAsFLUnEOAQIiAYIWwW5QAgRQBwUpRcw4BAiECghXCblECBFIEBCtFzTkECIQICFYIu0UJEEgREKwUNecQIBAiIFgh7BYlQCBFQLBS1JxDgECIgGCFsFuUAIEUAcFKUXMOAQIhAoIVwm5RAgRSBAQrRc05BAiECAhWCLtFCRBIERCsFDXnECAQIiBYIewWJUAgRUCwUtScQ4BAiIBghbBblACBFAHBSlFzDgECIQKCFcJuUQIEUgQEK0XNOQQIhAgIVgi7RQkQSBEQrBQ15xAgECIgWCHsFiVAIEVAsFLUnEOAQIiAYIWwW5QAgRQBwUpRcw4BAiECghXCblECBFIEBCtFzTkECIQICFYIu0UJEEgREKwUNecQIBAiIFgh7BYlQCBFQLBS1JxDgECIgGCFsFuUAIEUAcFKUXMOAQIhAoIVwm5RAgRSBAQrRc05BAiECAhWCLtFCRBIERCsFDXnECAQIiBYIewWJUAgRUCwUtScQ4BAiIBghbBblACBFAHBSlFzDgECIQKCFcJuUQIEUgQEK0XNOQQIhAgIVgi7RQkQSBEQrBQ15xAgECIgWCHsFiVAIEVAsFLUnEOAQIiAYIWwW5QAgRQBwUpRcw4BAiECghXCblECBFIEBCtFzTkECIQICFYIu0UJEEgREKwUNecQIBAi8P/kFz8%2b6Zmj5gAAAABJRU5ErkJggg=='/%3e%3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40' fill='none' version='1.1' id='svg2' width='50' height='50'%3e %3crect x='0' width='40' height='40' rx='8.7109404' fill='%2300f0ff' y='0' /%3e %3cpath d='m 18.459617%2c15.7671 h 7.4686 l 7.6404%2c7.5916 c 0.497%2c0.4938 0.4996%2c1.2971 0.0051%2c1.7934 L 23.775317%2c35 h -7.6937 l 2.326%2c-2.2613 8.54%2c-8.4861 -8.4316%2c-8.4862' fill='%231b1b1b' /%3e %3cpath d='m 21.529217%2c24.2336 h -7.4686 l -7.64042%2c-7.5917 c -0.49702%2c-0.4938 -0.49956%2c-1.297 -0.00508%2c-1.7934 L 16.213517%2c5 h 7.6937 l -2.326%2c2.26132 -8.54%2c8.48608 8.4316%2c8.4862' fill='%231b1b1b' /%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' version='1.1' width='160px' height='160px' style='shape-rendering:geometricPrecision%3b text-rendering:geometricPrecision%3b image-rendering:optimizeQuality%3b fill-rule:evenodd%3b clip-rule:evenodd' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3cpath style='opacity:0.976' fill='%232353e6' d='M 66.5%2c-0.5 C 70.8333%2c-0.5 75.1667%2c-0.5 79.5%2c-0.5C 79.5%2c11.5 79.5%2c23.5 79.5%2c35.5C 79.5%2c35.8333 79.5%2c36.1667 79.5%2c36.5C 57.5087%2c37.986 43.3421%2c49.3193 37%2c70.5C 34.2292%2c96.8028 45.3958%2c113.97 70.5%2c122C 96.7617%2c124.787 113.928%2c113.621 122%2c88.5C 122.498%2c85.5184 122.665%2c82.5184 122.5%2c79.5C 122.833%2c79.5 123.167%2c79.5 123.5%2c79.5C 135.5%2c79.5 147.5%2c79.5 159.5%2c79.5C 159.5%2c83.8333 159.5%2c88.1667 159.5%2c92.5C 150.833%2c128.5 128.5%2c150.833 92.5%2c159.5C 83.8333%2c159.5 75.1667%2c159.5 66.5%2c159.5C 30.5%2c150.833 8.16667%2c128.5 -0.5%2c92.5C -0.5%2c83.8333 -0.5%2c75.1667 -0.5%2c66.5C 8.16667%2c30.5 30.5%2c8.16667 66.5%2c-0.5 Z'/%3e %3cpath style='opacity:1' fill='%2317e6a0' d='M 79.5%2c35.5 C 94.1667%2c35.5 108.833%2c35.5 123.5%2c35.5C 123.5%2c50.1667 123.5%2c64.8333 123.5%2c79.5C 123.167%2c79.5 122.833%2c79.5 122.5%2c79.5C 108.167%2c79.5 93.8333%2c79.5 79.5%2c79.5C 79.5%2c65.1667 79.5%2c50.8333 79.5%2c36.5C 79.5%2c36.1667 79.5%2c35.8333 79.5%2c35.5 Z'/%3e%3c/svg%3e\";\n export default img;",null,null,null,null,null,"var img = \"data:image/svg+xml,%3csvg width='255' height='56' viewBox='0 0 255 56' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cpath d='M94.1882 42.6203C94.2202 42.6845 94.2368 42.7552 94.2368 42.8269C94.2368 43.0831 94.0291 43.2908 93.773 43.2908H91.7279C90.9738 43.2908 90.2855 42.861 89.9545 42.1834L86.8154 35.7571C86.4844 35.0794 85.7961 34.6497 85.042 34.6497H68.8001C68.046 34.6497 67.3577 35.0794 67.0267 35.7571L63.8876 42.1834C63.5566 42.861 62.8683 43.2908 62.1142 43.2908H60.0691C59.813 43.2908 59.6053 43.0831 59.6053 42.8269C59.6053 42.7552 59.6219 42.6845 59.6539 42.6203L74.3619 13.067C74.6955 12.3965 75.3799 11.9727 76.1288 11.9727H77.7133C78.4622 11.9727 79.1466 12.3965 79.4802 13.067L94.1882 42.6203ZM81.4665 31.2732C82.9297 31.2732 83.8842 29.7367 83.2358 28.425L78.6904 19.2285C77.966 17.763 75.876 17.763 75.1517 19.2285L70.6063 28.425C69.9579 29.7367 70.9124 31.2732 72.3756 31.2732H81.4665Z' fill='%233568DD'/%3e %3cpath d='M101.577 11.9727C102.597 11.9727 103.424 12.7995 103.424 13.8194V41.4441C103.424 42.464 102.597 43.2908 101.577 43.2908C100.557 43.2908 99.7304 42.464 99.7304 41.4441V13.8194C99.7304 12.7995 100.557 11.9727 101.577 11.9727Z' fill='%233568DD'/%3e %3cpath d='M142.748 21.6164C142.748 24.258 141.756 26.3745 139.774 27.9659C137.791 29.5254 135.974 30.3052 129.211 30.3052C129.118 30.3052 129.07 30.4146 129.132 30.4831L140.088 42.5997C140.157 42.6758 140.195 42.7746 140.195 42.8772C140.195 43.1056 140.01 43.2908 139.781 43.2908H136.847C136.291 43.2908 135.761 43.0561 135.386 42.6444L124.761 30.9516C124.387 30.5399 123.857 30.3052 123.301 30.3052H118.148C117.058 30.3052 116.175 31.1889 116.175 32.2789V41.4681C116.175 42.4747 115.358 43.2908 114.352 43.2908C113.345 43.2908 112.529 42.4747 112.529 41.4681V13.9463C112.529 12.8563 113.413 11.9727 114.503 11.9727L131.668 11.9727C135.121 11.9727 137.823 12.7843 139.774 14.4075C141.756 15.9988 142.748 18.1949 142.748 20.9957V21.6164ZM131.572 27.0588C133.906 27.0588 135.729 26.5655 137.04 25.5789C138.383 24.5922 139.054 23.2236 139.054 21.4731V20.8525C139.054 19.102 138.399 17.7334 137.088 16.7468C135.777 15.7601 133.938 15.2668 131.572 15.2668L118.148 15.2668C117.058 15.2668 116.175 16.1504 116.175 17.2405V25.0851C116.175 26.1752 117.058 27.0588 118.148 27.0588L131.572 27.0588Z' fill='%233568DD'/%3e %3cpath d='M164.508 11.9727C170.072 11.9727 174.325 13.2776 177.267 15.8874C180.209 18.4973 181.68 22.2847 181.68 27.2498V28.0614C181.68 33.0265 180.209 36.8139 177.267 39.4238C174.357 42.0018 170.104 43.2908 164.508 43.2908H152.188C151.098 43.2908 150.214 42.4071 150.214 41.3171V13.9463C150.214 12.8563 151.098 11.9727 152.188 11.9727L164.508 11.9727ZM164.508 39.9966C168.953 39.9966 172.295 39.01 174.533 37.0367C176.804 35.0316 177.939 32.0557 177.939 28.1091V27.2021C177.939 23.2873 176.804 20.3273 174.533 18.3222C172.263 16.2853 168.905 15.2668 164.46 15.2668L155.833 15.2668C154.743 15.2668 153.86 16.1504 153.86 17.2405V38.023C153.86 39.113 154.743 39.9966 155.833 39.9966H164.508Z' fill='%233568DD'/%3e %3cpath d='M217.995 42.6203C218.027 42.6845 218.044 42.7552 218.044 42.8269C218.044 43.0831 217.836 43.2908 217.58 43.2908H215.535C214.781 43.2908 214.092 42.861 213.761 42.1834L210.622 35.7571C210.291 35.0794 209.603 34.6497 208.849 34.6497H192.607C191.853 34.6497 191.165 35.0794 190.834 35.7571L187.694 42.1834C187.363 42.861 186.675 43.2908 185.921 43.2908H183.876C183.62 43.2908 183.412 43.0831 183.412 42.8269C183.412 42.7552 183.429 42.6845 183.461 42.6203L198.169 13.067C198.502 12.3965 199.187 11.9727 199.936 11.9727H201.52C202.269 11.9727 202.953 12.3965 203.287 13.067L217.995 42.6203ZM205.273 31.2732C206.737 31.2732 207.691 29.7367 207.043 28.425L202.497 19.2285C201.773 17.763 199.683 17.763 198.959 19.2285L194.413 28.425C193.765 29.7367 194.719 31.2732 196.182 31.2732H205.273Z' fill='%233568DD'/%3e %3cpath d='M237.396 43.8159C233.815 43.8159 230.697 43.1794 228.043 41.9063C225.389 40.6014 223.342 38.7554 221.903 36.3683C220.464 33.9813 219.745 31.1964 219.745 28.0136V27.2975C219.745 24.083 220.464 21.2822 221.903 18.8951C223.342 16.5081 225.389 14.678 228.043 13.4049C230.697 12.1 233.815 11.4475 237.396 11.4475C240.946 11.4475 244.048 12.1 246.702 13.4049C249.356 14.7098 251.403 16.5558 252.842 18.9429C254.281 21.3299 255 24.1148 255 27.2975V28.0136C255 31.1964 254.281 33.9813 252.842 36.3683C251.403 38.7554 249.356 40.6014 246.702 41.9063C244.048 43.1794 240.946 43.8159 237.396 43.8159ZM237.396 40.4263C241.745 40.4263 245.135 39.3283 247.565 37.1322C250.028 34.9361 251.259 31.9125 251.259 28.0614V27.2498C251.259 23.3987 250.028 20.3751 247.565 18.179C245.103 15.9511 241.713 14.8371 237.396 14.8371C233.048 14.8371 229.626 15.9511 227.132 18.179C224.669 20.3751 223.438 23.3987 223.438 27.2498V28.0614C223.438 31.9125 224.669 34.9361 227.132 37.1322C229.626 39.3283 233.048 40.4263 237.396 40.4263Z' fill='%233568DD'/%3e %3cpath fill-rule='evenodd' clip-rule='evenodd' d='M2.10597 55.1451C1.74639 55.3643 1.27805 55.2627 1.04167 54.9141L0.136253 53.5792C-0.10013 53.2306 -0.0207549 52.7586 0.310909 52.4991C3.29302 50.1657 5.74427 47.5356 7.67204 44.7187C14.8501 34.2299 14.8501 21.0307 7.67204 10.5418C5.74427 7.72492 3.29302 5.09486 0.310911 2.76146C-0.0207531 2.50195 -0.100129 2.02992 0.136254 1.68139L1.04167 0.346419C1.27805 -0.00211083 1.74639 -0.103741 2.10597 0.11546L42.3244 24.6324C44.569 26.0007 44.569 29.2598 42.3244 30.6281L2.10597 55.1451Z' fill='url(%23paint0_linear_551_2884)'/%3e %3cdefs%3e %3clinearGradient id='paint0_linear_551_2884' x1='49.1443' y1='28.1198' x2='-16.1846' y2='28.1198' gradientUnits='userSpaceOnUse'%3e %3cstop stop-color='%233568DD'/%3e %3cstop offset='1' stop-color='%233568DD' stop-opacity='0.6'/%3e %3c/linearGradient%3e %3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='21' height='20' viewBox='0 0 21 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M4.59961 3C3.77118 3 3.09961 3.67157 3.09961 4.5V14.5C3.09961 15.8807 4.2189 17 5.59961 17H15.0996C16.2042 17 17.0996 16.1046 17.0996 15V7C17.0996 6.25972 16.6974 5.61337 16.0996 5.26756V5C16.0996 3.89543 15.2042 3 14.0996 3H4.59961ZM15.0996 5H4.59961C4.32347 5 4.09961 4.77614 4.09961 4.5C4.09961 4.22386 4.32347 4 4.59961 4H14.0996C14.6519 4 15.0996 4.44772 15.0996 5ZM13.5996 11H14.5996C14.8758 11 15.0996 11.2239 15.0996 11.5C15.0996 11.7761 14.8758 12 14.5996 12H13.5996C13.3235 12 13.0996 11.7761 13.0996 11.5C13.0996 11.2239 13.3235 11 13.5996 11Z' fill='white'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M4.2097 4.3871L4.29289 4.29289C4.65338 3.93241 5.22061 3.90468 5.6129 4.2097L5.70711 4.29289L12 10.585L18.2929 4.29289C18.6834 3.90237 19.3166 3.90237 19.7071 4.29289C20.0976 4.68342 20.0976 5.31658 19.7071 5.70711L13.415 12L19.7071 18.2929C20.0676 18.6534 20.0953 19.2206 19.7903 19.6129L19.7071 19.7071C19.3466 20.0676 18.7794 20.0953 18.3871 19.7903L18.2929 19.7071L12 13.415L5.70711 19.7071C5.31658 20.0976 4.68342 20.0976 4.29289 19.7071C3.90237 19.3166 3.90237 18.6834 4.29289 18.2929L10.585 12L4.29289 5.70711C3.93241 5.34662 3.90468 4.77939 4.2097 4.3871L4.29289 4.29289L4.2097 4.3871Z' fill='%23212121'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M3.32422 17.2375H21.3242C21.8765 17.2375 22.3242 17.6853 22.3242 18.2375C22.3242 18.7504 21.9382 19.1731 21.4408 19.2308L21.3242 19.2375H3.32422C2.77193 19.2375 2.32422 18.7898 2.32422 18.2375C2.32422 17.7247 2.71026 17.302 3.2076 17.2443L3.32422 17.2375H21.3242H3.32422ZM3.3241 11.2375L21.3241 11.2354C21.8764 11.2353 22.3242 11.683 22.3242 12.2353C22.3242 12.7481 21.9383 13.1708 21.441 13.2286L21.3243 13.2354L3.32434 13.2375C2.77205 13.2376 2.32422 12.79 2.32422 12.2377C2.32422 11.7248 2.71016 11.3021 3.20748 11.2443L3.3241 11.2375L21.3241 11.2354L3.3241 11.2375ZM3.32422 5.23755H21.3242C21.8765 5.23755 22.3242 5.68526 22.3242 6.23755C22.3242 6.75038 21.9382 7.17306 21.4408 7.23082L21.3242 7.23755H3.32422C2.77193 7.23755 2.32422 6.78983 2.32422 6.23755C2.32422 5.72471 2.71026 5.30204 3.2076 5.24428L3.32422 5.23755H21.3242H3.32422Z' fill='%23212121'/%3e%3c/svg%3e\";\n export default img;",null,null,null,null,null,"import { PrismicError } from \"./errors/PrismicError.js\";\nconst getRepositoryName = (repositoryEndpoint) => {\n try {\n const hostname = new URL(repositoryEndpoint).hostname;\n if (hostname.endsWith(\"prismic.io\") || // Production\n hostname.endsWith(\"wroom.io\") || // Staging\n hostname.endsWith(\"wroom.test\")) {\n return hostname.split(\".\")[0];\n }\n } catch {\n }\n throw new PrismicError(`An invalid Prismic Document API endpoint was provided: ${repositoryEndpoint}`, void 0, void 0);\n};\nexport {\n getRepositoryName\n};\n//# sourceMappingURL=getRepositoryName.js.map\n","import { PrismicError } from \"./errors/PrismicError.js\";\nimport { isRepositoryName } from \"./isRepositoryName.js\";\nconst getRepositoryEndpoint = (repositoryName) => {\n if (isRepositoryName(repositoryName)) {\n return `https://${repositoryName}.cdn.prismic.io/api/v2`;\n } else {\n throw new PrismicError(`An invalid Prismic repository name was given: ${repositoryName}`, void 0, void 0);\n }\n};\nexport {\n getRepositoryEndpoint\n};\n//# sourceMappingURL=getRepositoryEndpoint.js.map\n","const isRepositoryName = (input) => {\n return /^[a-zA-Z0-9][-a-zA-Z0-9]{2,}[a-zA-Z0-9]$/.test(input);\n};\nexport {\n isRepositoryName\n};\n//# sourceMappingURL=isRepositoryName.js.map\n","import { LinkType } from \"../types/value/link.js\";\nimport { documentToLinkField } from \"./documentToLinkField.js\";\nconst asLink = (linkFieldOrDocument, ...configObjectOrTuple) => {\n if (!linkFieldOrDocument) {\n return null;\n }\n const linkField = (\n // prettier-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - Bug in TypeScript 4.9: https://github.com/microsoft/TypeScript/issues/51501\n // TODO: Remove the `prettier-ignore` comment when this bug is fixed.\n \"link_type\" in linkFieldOrDocument ? linkFieldOrDocument : documentToLinkField(linkFieldOrDocument)\n );\n const [configObjectOrLinkResolver] = configObjectOrTuple;\n let config;\n if (typeof configObjectOrLinkResolver === \"function\" || configObjectOrLinkResolver == null) {\n config = {\n linkResolver: configObjectOrLinkResolver\n };\n } else {\n config = { ...configObjectOrLinkResolver };\n }\n switch (linkField.link_type) {\n case LinkType.Media:\n case LinkType.Web:\n return \"url\" in linkField ? linkField.url : null;\n case LinkType.Document: {\n if (\"id\" in linkField && config.linkResolver) {\n const resolvedURL = config.linkResolver(linkField);\n if (resolvedURL != null) {\n return resolvedURL;\n }\n }\n if (\"url\" in linkField && linkField.url) {\n return linkField.url;\n }\n return null;\n }\n case LinkType.Any:\n default:\n return null;\n }\n};\nexport {\n asLink\n};\n//# sourceMappingURL=asLink.js.map\n","import { LinkType } from \"../types/value/link.js\";\nconst documentToLinkField = (prismicDocument) => {\n var _a;\n return {\n link_type: LinkType.Document,\n id: prismicDocument.id,\n uid: prismicDocument.uid || void 0,\n type: prismicDocument.type,\n tags: prismicDocument.tags,\n lang: prismicDocument.lang,\n url: prismicDocument.url == null ? void 0 : prismicDocument.url,\n slug: (_a = prismicDocument.slugs) == null ? void 0 : _a[0],\n // Slug field is not available with GraphQL\n // The REST API does not include a `data` property if the data\n // object is empty.\n //\n // A presence check for `prismicDocument.data` is done to\n // support partial documents. While `documentToLinkField` is\n // not typed to accept partial documents, passing a partial\n // document can happen in untyped projects.\n ...prismicDocument.data && Object.keys(prismicDocument.data).length > 0 ? { data: prismicDocument.data } : {}\n };\n};\nexport {\n documentToLinkField\n};\n//# sourceMappingURL=documentToLinkField.js.map\n","const minifyGraphQLQuery = (query) => {\n return query.replace(/(\\n| )*( |{|})(\\n| )*/gm, (_chars, _spaces, brackets) => brackets);\n};\nexport {\n minifyGraphQLQuery\n};\n//# sourceMappingURL=minifyGraphQLQuery.js.map\n","const preview = \"io.prismic.preview\";\nexport {\n preview\n};\n//# sourceMappingURL=cookie.js.map\n","const castThunk = (a) => {\n return typeof a === \"function\" ? a : () => a;\n};\nexport {\n castThunk\n};\n//# sourceMappingURL=castThunk.js.map\n",null,"'use client'\n\nimport { useMutation } from '@tanstack/react-query'\nimport type { Connector, DisconnectErrorType } from '@wagmi/core'\nimport type { Compute } from '@wagmi/core/internal'\nimport {\n type DisconnectData,\n type DisconnectMutate,\n type DisconnectMutateAsync,\n type DisconnectVariables,\n disconnectMutationOptions,\n} from '@wagmi/core/query'\n\nimport type { ConfigParameter } from '../types/properties.js'\nimport type {\n UseMutationParameters,\n UseMutationReturnType,\n} from '../utils/query.js'\nimport { useConfig } from './useConfig.js'\nimport { useConnections } from './useConnections.js'\n\nexport type UseDisconnectParameters = Compute<\n ConfigParameter & {\n mutation?:\n | UseMutationParameters<\n DisconnectData,\n DisconnectErrorType,\n DisconnectVariables,\n context\n >\n | undefined\n }\n>\n\nexport type UseDisconnectReturnType = Compute<\n UseMutationReturnType<\n DisconnectData,\n DisconnectErrorType,\n DisconnectVariables,\n context\n > & {\n connectors: readonly Connector[]\n disconnect: DisconnectMutate\n disconnectAsync: DisconnectMutateAsync\n }\n>\n\n/** https://wagmi.sh/react/api/hooks/useDisconnect */\nexport function useDisconnect(\n parameters: UseDisconnectParameters = {},\n): UseDisconnectReturnType {\n const { mutation } = parameters\n\n const config = useConfig(parameters)\n\n const mutationOptions = disconnectMutationOptions(config)\n const { mutate, mutateAsync, ...result } = useMutation({\n ...mutation,\n ...mutationOptions,\n })\n\n return {\n ...result,\n connectors: useConnections({ config }).map(\n (connection) => connection.connector,\n ),\n disconnect: mutate,\n disconnectAsync: mutateAsync,\n }\n}\n","'use client'\n\nimport type { Config, GetBalanceErrorType, ResolvedRegister } from '@wagmi/core'\nimport type { Compute } from '@wagmi/core/internal'\nimport {\n type GetBalanceData,\n type GetBalanceOptions,\n type GetBalanceQueryKey,\n getBalanceQueryOptions,\n} from '@wagmi/core/query'\nimport type { GetBalanceQueryFnData } from '@wagmi/core/query'\n\nimport type { ConfigParameter, QueryParameter } from '../types/properties.js'\nimport { type UseQueryReturnType, useQuery } from '../utils/query.js'\nimport { useChainId } from './useChainId.js'\nimport { useConfig } from './useConfig.js'\n\nexport type UseBalanceParameters<\n config extends Config = Config,\n selectData = GetBalanceData,\n> = Compute<\n GetBalanceOptions &\n ConfigParameter &\n QueryParameter<\n GetBalanceQueryFnData,\n GetBalanceErrorType,\n selectData,\n GetBalanceQueryKey\n >\n>\n\nexport type UseBalanceReturnType =\n UseQueryReturnType\n\n/** https://wagmi.sh/react/api/hooks/useBalance */\nexport function useBalance<\n config extends Config = ResolvedRegister['config'],\n selectData = GetBalanceData,\n>(\n parameters: UseBalanceParameters = {},\n): UseBalanceReturnType {\n const { address, query = {} } = parameters\n\n const config = useConfig(parameters)\n const chainId = useChainId({ config })\n\n const options = getBalanceQueryOptions(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n })\n const enabled = Boolean(address && (query.enabled ?? true))\n\n return useQuery({ ...query, ...options, enabled })\n}\n",null,"var img = \"data:image/svg+xml,%3csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M4.2097 4.3871L4.29289 4.29289C4.65338 3.93241 5.22061 3.90468 5.6129 4.2097L5.70711 4.29289L12 10.585L18.2929 4.29289C18.6834 3.90237 19.3166 3.90237 19.7071 4.29289C20.0976 4.68342 20.0976 5.31658 19.7071 5.70711L13.415 12L19.7071 18.2929C20.0676 18.6534 20.0953 19.2206 19.7903 19.6129L19.7071 19.7071C19.3466 20.0676 18.7794 20.0953 18.3871 19.7903L18.2929 19.7071L12 13.415L5.70711 19.7071C5.31658 20.0976 4.68342 20.0976 4.29289 19.7071C3.90237 19.3166 3.90237 18.6834 4.29289 18.2929L10.585 12L4.29289 5.70711C3.93241 5.34662 3.90468 4.77939 4.2097 4.3871L4.29289 4.29289L4.2097 4.3871Z' fill='%23A1A6B2'/%3e%3c/svg%3e\";\n export default img;",null,"function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t\"number\"==typeof t&&!isNaN(t),d=t=>\"string\"==typeof t,p=t=>\"function\"==typeof t,m=t=>d(t)||p(t)?t:null,f=t=>e(t)||d(t)||p(t)||u(t);function g(t,e,n){void 0===n&&(n=300);const{scrollHeight:o,style:s}=t;requestAnimationFrame(()=>{s.minHeight=\"initial\",s.height=o+\"px\",s.transition=`all ${n}ms`,requestAnimationFrame(()=>{s.height=\"0\",s.padding=\"0\",s.margin=\"0\",setTimeout(e,n)})})}function h(e){let{enter:a,exit:r,appendPosition:i=!1,collapse:l=!0,collapseDuration:c=300}=e;return function(e){let{children:u,position:d,preventExitTransition:p,done:m,nodeRef:f,isIn:h}=e;const y=i?`${a}--${d}`:a,v=i?`${r}--${d}`:r,T=n(0);return o(()=>{const t=f.current,e=y.split(\" \"),n=o=>{o.target===f.current&&(t.dispatchEvent(new Event(\"d\")),t.removeEventListener(\"animationend\",n),t.removeEventListener(\"animationcancel\",n),0===T.current&&\"animationcancel\"!==o.type&&t.classList.remove(...e))};t.classList.add(...e),t.addEventListener(\"animationend\",n),t.addEventListener(\"animationcancel\",n)},[]),s(()=>{const t=f.current,e=()=>{t.removeEventListener(\"animationend\",e),l?g(t,m,c):m()};h||(p?e():(T.current=1,t.className+=` ${v}`,t.addEventListener(\"animationend\",e)))},[h]),t.createElement(t.Fragment,null,u)}}function y(t,e){return null!=t?{content:t.content,containerId:t.props.containerId,id:t.props.toastId,theme:t.props.theme,type:t.props.type,data:t.props.data||{},isLoading:t.props.isLoading,icon:t.props.icon,status:e}:{}}const v={list:new Map,emitQueue:new Map,on(t,e){return this.list.has(t)||this.list.set(t,[]),this.list.get(t).push(e),this},off(t,e){if(e){const n=this.list.get(t).filter(t=>t!==e);return this.list.set(t,n),this}return this.list.delete(t),this},cancelEmit(t){const e=this.emitQueue.get(t);return e&&(e.forEach(clearTimeout),this.emitQueue.delete(t)),this},emit(t){this.list.has(t)&&this.list.get(t).forEach(e=>{const n=setTimeout(()=>{e(...[].slice.call(arguments,1))},0);this.emitQueue.has(t)||this.emitQueue.set(t,[]),this.emitQueue.get(t).push(n)})}},T=e=>{let{theme:n,type:o,...s}=e;return t.createElement(\"svg\",{viewBox:\"0 0 24 24\",width:\"100%\",height:\"100%\",fill:\"colored\"===n?\"currentColor\":`var(--toastify-icon-color-${o})`,...s})},E={info:function(e){return t.createElement(T,{...e},t.createElement(\"path\",{d:\"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z\"}))},warning:function(e){return t.createElement(T,{...e},t.createElement(\"path\",{d:\"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z\"}))},success:function(e){return t.createElement(T,{...e},t.createElement(\"path\",{d:\"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z\"}))},error:function(e){return t.createElement(T,{...e},t.createElement(\"path\",{d:\"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z\"}))},spinner:function(){return t.createElement(\"div\",{className:\"Toastify__spinner\"})}};function C(t){const[,o]=r(t=>t+1,0),[l,c]=i([]),g=n(null),h=n(new Map).current,T=t=>-1!==l.indexOf(t),C=n({toastKey:1,displayedToast:0,count:0,queue:[],props:t,containerId:null,isToastActive:T,getToast:t=>h.get(t)}).current;function b(t){let{containerId:e}=t;const{limit:n}=C.props;!n||e&&C.containerId!==e||(C.count-=C.queue.length,C.queue=[])}function I(t){c(e=>null==t?[]:e.filter(e=>e!==t))}function _(){const{toastContent:t,toastProps:e,staleId:n}=C.queue.shift();O(t,e,n)}function L(t,n){let{delay:s,staleId:r,...i}=n;if(!f(t)||function(t){return!g.current||C.props.enableMultiContainer&&t.containerId!==C.props.containerId||h.has(t.toastId)&&null==t.updateId}(i))return;const{toastId:l,updateId:c,data:T}=i,{props:b}=C,L=()=>I(l),N=null==c;N&&C.count++;const M={...b,style:b.toastStyle,key:C.toastKey++,...Object.fromEntries(Object.entries(i).filter(t=>{let[e,n]=t;return null!=n})),toastId:l,updateId:c,data:T,closeToast:L,isIn:!1,className:m(i.className||b.toastClassName),bodyClassName:m(i.bodyClassName||b.bodyClassName),progressClassName:m(i.progressClassName||b.progressClassName),autoClose:!i.isLoading&&(R=i.autoClose,w=b.autoClose,!1===R||u(R)&&R>0?R:w),deleteToast(){const t=y(h.get(l),\"removed\");h.delete(l),v.emit(4,t);const e=C.queue.length;if(C.count=null==l?C.count-C.displayedToast:C.count-1,C.count<0&&(C.count=0),e>0){const t=null==l?C.props.limit:1;if(1===e||1===t)C.displayedToast++,_();else{const n=t>e?e:t;C.displayedToast=n;for(let t=0;tt in E)(o)&&(i=E[o](l))),i}(M),p(i.onOpen)&&(M.onOpen=i.onOpen),p(i.onClose)&&(M.onClose=i.onClose),M.closeButton=b.closeButton,!1===i.closeButton||f(i.closeButton)?M.closeButton=i.closeButton:!0===i.closeButton&&(M.closeButton=!f(b.closeButton)||b.closeButton);let x=t;e(t)&&!d(t.type)?x=a(t,{closeToast:L,toastProps:M,data:T}):p(t)&&(x=t({closeToast:L,toastProps:M,data:T})),b.limit&&b.limit>0&&C.count>b.limit&&N?C.queue.push({toastContent:x,toastProps:M,staleId:r}):u(s)?setTimeout(()=>{O(x,M,r)},s):O(x,M,r)}function O(t,e,n){const{toastId:o}=e;n&&h.delete(n);const s={content:t,props:e};h.set(o,s),c(t=>[...t,o].filter(t=>t!==n)),v.emit(4,y(s,null==s.props.updateId?\"added\":\"updated\"))}return s(()=>(C.containerId=t.containerId,v.cancelEmit(3).on(0,L).on(1,t=>g.current&&I(t)).on(5,b).emit(2,C),()=>{h.clear(),v.emit(3,C)}),[]),s(()=>{C.props=t,C.isToastActive=T,C.displayedToast=l.length}),{getToastToRender:function(e){const n=new Map,o=Array.from(h.values());return t.newestOnTop&&o.reverse(),o.forEach(t=>{const{position:e}=t.props;n.has(e)||n.set(e,[]),n.get(e).push(t)}),Array.from(n,t=>e(t[0],t[1]))},containerRef:g,isToastActive:T}}function b(t){return t.targetTouches&&t.targetTouches.length>=1?t.targetTouches[0].clientX:t.clientX}function I(t){return t.targetTouches&&t.targetTouches.length>=1?t.targetTouches[0].clientY:t.clientY}function _(t){const[o,a]=i(!1),[r,l]=i(!1),c=n(null),u=n({start:0,x:0,y:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,boundingRect:null,didMove:!1}).current,d=n(t),{autoClose:m,pauseOnHover:f,closeToast:g,onClick:h,closeOnClick:y}=t;function v(e){if(t.draggable){\"touchstart\"===e.nativeEvent.type&&e.nativeEvent.preventDefault(),u.didMove=!1,document.addEventListener(\"mousemove\",_),document.addEventListener(\"mouseup\",L),document.addEventListener(\"touchmove\",_),document.addEventListener(\"touchend\",L);const n=c.current;u.canCloseOnClick=!0,u.canDrag=!0,u.boundingRect=n.getBoundingClientRect(),n.style.transition=\"\",u.x=b(e.nativeEvent),u.y=I(e.nativeEvent),\"x\"===t.draggableDirection?(u.start=u.x,u.removalDistance=n.offsetWidth*(t.draggablePercent/100)):(u.start=u.y,u.removalDistance=n.offsetHeight*(80===t.draggablePercent?1.5*t.draggablePercent:t.draggablePercent/100))}}function T(e){if(u.boundingRect){const{top:n,bottom:o,left:s,right:a}=u.boundingRect;\"touchend\"!==e.nativeEvent.type&&t.pauseOnHover&&u.x>=s&&u.x<=a&&u.y>=n&&u.y<=o?C():E()}}function E(){a(!0)}function C(){a(!1)}function _(e){const n=c.current;u.canDrag&&n&&(u.didMove=!0,o&&C(),u.x=b(e),u.y=I(e),u.delta=\"x\"===t.draggableDirection?u.x-u.start:u.y-u.start,u.start!==u.x&&(u.canCloseOnClick=!1),n.style.transform=`translate${t.draggableDirection}(${u.delta}px)`,n.style.opacity=\"\"+(1-Math.abs(u.delta/u.removalDistance)))}function L(){document.removeEventListener(\"mousemove\",_),document.removeEventListener(\"mouseup\",L),document.removeEventListener(\"touchmove\",_),document.removeEventListener(\"touchend\",L);const e=c.current;if(u.canDrag&&u.didMove&&e){if(u.canDrag=!1,Math.abs(u.delta)>u.removalDistance)return l(!0),void t.closeToast();e.style.transition=\"transform 0.2s, opacity 0.2s\",e.style.transform=`translate${t.draggableDirection}(0)`,e.style.opacity=\"1\"}}s(()=>{d.current=t}),s(()=>(c.current&&c.current.addEventListener(\"d\",E,{once:!0}),p(t.onOpen)&&t.onOpen(e(t.children)&&t.children.props),()=>{const t=d.current;p(t.onClose)&&t.onClose(e(t.children)&&t.children.props)}),[]),s(()=>(t.pauseOnFocusLoss&&(document.hasFocus()||C(),window.addEventListener(\"focus\",E),window.addEventListener(\"blur\",C)),()=>{t.pauseOnFocusLoss&&(window.removeEventListener(\"focus\",E),window.removeEventListener(\"blur\",C))}),[t.pauseOnFocusLoss]);const O={onMouseDown:v,onTouchStart:v,onMouseUp:T,onTouchEnd:T};return m&&f&&(O.onMouseEnter=C,O.onMouseLeave=E),y&&(O.onClick=t=>{h&&h(t),u.canCloseOnClick&&g()}),{playToast:E,pauseToast:C,isRunning:o,preventExitTransition:r,toastRef:c,eventHandlers:O}}function L(e){let{closeToast:n,theme:o,ariaLabel:s=\"close\"}=e;return t.createElement(\"button\",{className:`Toastify__close-button Toastify__close-button--${o}`,type:\"button\",onClick:t=>{t.stopPropagation(),n(t)},\"aria-label\":s},t.createElement(\"svg\",{\"aria-hidden\":\"true\",viewBox:\"0 0 14 16\"},t.createElement(\"path\",{fillRule:\"evenodd\",d:\"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z\"})))}function O(e){let{delay:n,isRunning:o,closeToast:s,type:a=\"default\",hide:r,className:i,style:l,controlledProgress:u,progress:d,rtl:m,isIn:f,theme:g}=e;const h=r||u&&0===d,y={...l,animationDuration:`${n}ms`,animationPlayState:o?\"running\":\"paused\",opacity:h?0:1};u&&(y.transform=`scaleX(${d})`);const v=c(\"Toastify__progress-bar\",u?\"Toastify__progress-bar--controlled\":\"Toastify__progress-bar--animated\",`Toastify__progress-bar-theme--${g}`,`Toastify__progress-bar--${a}`,{\"Toastify__progress-bar--rtl\":m}),T=p(i)?i({rtl:m,type:a,defaultClassName:v}):c(v,i);return t.createElement(\"div\",{role:\"progressbar\",\"aria-hidden\":h?\"true\":\"false\",\"aria-label\":\"notification timer\",className:T,style:y,[u&&d>=1?\"onTransitionEnd\":\"onAnimationEnd\"]:u&&d<1?null:()=>{f&&s()}})}const N=n=>{const{isRunning:o,preventExitTransition:s,toastRef:r,eventHandlers:i}=_(n),{closeButton:l,children:u,autoClose:d,onClick:m,type:f,hideProgressBar:g,closeToast:h,transition:y,position:v,className:T,style:E,bodyClassName:C,bodyStyle:b,progressClassName:I,progressStyle:N,updateId:M,role:R,progress:w,rtl:x,toastId:$,deleteToast:k,isIn:P,isLoading:B,iconOut:D,closeOnClick:A,theme:z}=n,F=c(\"Toastify__toast\",`Toastify__toast-theme--${z}`,`Toastify__toast--${f}`,{\"Toastify__toast--rtl\":x},{\"Toastify__toast--close-on-click\":A}),H=p(T)?T({rtl:x,position:v,type:f,defaultClassName:F}):c(F,T),S=!!w||!d,q={closeToast:h,type:f,theme:z};let Q=null;return!1===l||(Q=p(l)?l(q):e(l)?a(l,q):L(q)),t.createElement(y,{isIn:P,done:k,position:v,preventExitTransition:s,nodeRef:r},t.createElement(\"div\",{id:$,onClick:m,className:H,...i,style:E,ref:r},t.createElement(\"div\",{...P&&{role:R},className:p(C)?C({type:f}):c(\"Toastify__toast-body\",C),style:b},null!=D&&t.createElement(\"div\",{className:c(\"Toastify__toast-icon\",{\"Toastify--animate-icon Toastify__zoom-enter\":!B})},D),t.createElement(\"div\",null,u)),Q,t.createElement(O,{...M&&!S?{key:`pb-${M}`}:{},rtl:x,theme:z,delay:d,isRunning:o,isIn:P,closeToast:h,hide:g,type:f,style:N,className:I,controlledProgress:S,progress:w||0})))},M=function(t,e){return void 0===e&&(e=!1),{enter:`Toastify--animate Toastify__${t}-enter`,exit:`Toastify--animate Toastify__${t}-exit`,appendPosition:e}},R=h(M(\"bounce\",!0)),w=h(M(\"slide\",!0)),x=h(M(\"zoom\")),$=h(M(\"flip\")),k=l((e,n)=>{const{getToastToRender:o,containerRef:a,isToastActive:r}=C(e),{className:i,style:l,rtl:u,containerId:d}=e;function f(t){const e=c(\"Toastify__toast-container\",`Toastify__toast-container--${t}`,{\"Toastify__toast-container--rtl\":u});return p(i)?i({position:t,rtl:u,defaultClassName:e}):c(e,m(i))}return s(()=>{n&&(n.current=a.current)},[]),t.createElement(\"div\",{ref:a,className:\"Toastify\",id:d},o((e,n)=>{const o=n.length?{...l}:{...l,pointerEvents:\"none\"};return t.createElement(\"div\",{className:f(e),style:o,key:`container-${e}`},n.map((e,o)=>{let{content:s,props:a}=e;return t.createElement(N,{...a,isIn:r(a.toastId),style:{...a.style,\"--nth\":o+1,\"--len\":n.length},key:`toast-${a.key}`},s)}))}))});k.displayName=\"ToastContainer\",k.defaultProps={position:\"top-right\",transition:R,autoClose:5e3,closeButton:L,pauseOnHover:!0,pauseOnFocusLoss:!0,closeOnClick:!0,draggable:!0,draggablePercent:80,draggableDirection:\"x\",role:\"alert\",theme:\"light\"};let P,B=new Map,D=[],A=1;function z(){return\"\"+A++}function F(t){return t&&(d(t.toastId)||u(t.toastId))?t.toastId:z()}function H(t,e){return B.size>0?v.emit(0,t,e):D.push({content:t,options:e}),e.toastId}function S(t,e){return{...e,type:e&&e.type||t,toastId:F(e)}}function q(t){return(e,n)=>H(e,S(t,n))}function Q(t,e){return H(t,S(\"default\",e))}Q.loading=(t,e)=>H(t,S(\"default\",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...e})),Q.promise=function(t,e,n){let o,{pending:s,error:a,success:r}=e;s&&(o=d(s)?Q.loading(s,n):Q.loading(s.render,{...n,...s}));const i={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},l=(t,e,s)=>{if(null==e)return void Q.dismiss(o);const a={type:t,...i,...n,data:s},r=d(e)?{render:e}:e;return o?Q.update(o,{...a,...r}):Q(r.render,{...a,...r}),s},c=p(t)?t():t;return c.then(t=>l(\"success\",r,t)).catch(t=>l(\"error\",a,t)),c},Q.success=q(\"success\"),Q.info=q(\"info\"),Q.error=q(\"error\"),Q.warning=q(\"warning\"),Q.warn=Q.warning,Q.dark=(t,e)=>H(t,S(\"default\",{theme:\"dark\",...e})),Q.dismiss=t=>{B.size>0?v.emit(1,t):D=D.filter(e=>null!=t&&e.options.toastId!==t)},Q.clearWaitingQueue=function(t){return void 0===t&&(t={}),v.emit(5,t)},Q.isActive=t=>{let e=!1;return B.forEach(n=>{n.isToastActive&&n.isToastActive(t)&&(e=!0)}),e},Q.update=function(t,e){void 0===e&&(e={}),setTimeout(()=>{const n=function(t,e){let{containerId:n}=e;const o=B.get(n||P);return o&&o.getToast(t)}(t,e);if(n){const{props:o,content:s}=n,a={delay:100,...o,...e,toastId:e.toastId||t,updateId:z()};a.toastId!==t&&(a.staleId=t);const r=a.render||s;delete a.render,H(r,a)}},0)},Q.done=t=>{Q.update(t,{progress:1})},Q.onChange=t=>(v.on(4,t),()=>{v.off(4,t)}),Q.POSITION={TOP_LEFT:\"top-left\",TOP_RIGHT:\"top-right\",TOP_CENTER:\"top-center\",BOTTOM_LEFT:\"bottom-left\",BOTTOM_RIGHT:\"bottom-right\",BOTTOM_CENTER:\"bottom-center\"},Q.TYPE={INFO:\"info\",SUCCESS:\"success\",WARNING:\"warning\",ERROR:\"error\",DEFAULT:\"default\"},v.on(2,t=>{P=t.containerId||t,B.set(P,t),D.forEach(t=>{v.emit(0,t.content,t.options)}),D=[]}).on(3,t=>{B.delete(t.containerId||t),0===B.size&&v.off(0).off(1).off(5)});export{R as Bounce,$ as Flip,E as Icons,w as Slide,k as ToastContainer,x as Zoom,g as collapseToast,h as cssTransition,Q as toast,_ as useToast,C as useToastContainer};\n//# sourceMappingURL=react-toastify.esm.mjs.map\n",null,null,null,null,null,null,null,"var img = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='none'%3e %3cpath d='M3.89705 4.05379L3.96967 3.96967C4.23594 3.7034 4.6526 3.6792 4.94621 3.89705L5.03033 3.96967L10 8.939L14.9697 3.96967C15.2359 3.7034 15.6526 3.6792 15.9462 3.89705L16.0303 3.96967C16.2966 4.23594 16.3208 4.6526 16.1029 4.94621L16.0303 5.03033L11.061 10L16.0303 14.9697C16.2966 15.2359 16.3208 15.6526 16.1029 15.9462L16.0303 16.0303C15.7641 16.2966 15.3474 16.3208 15.0538 16.1029L14.9697 16.0303L10 11.061L5.03033 16.0303C4.76406 16.2966 4.3474 16.3208 4.05379 16.1029L3.96967 16.0303C3.7034 15.7641 3.6792 15.3474 3.89705 15.0538L3.96967 14.9697L8.939 10L3.96967 5.03033C3.7034 4.76406 3.6792 4.3474 3.89705 4.05379L3.96967 3.96967L3.89705 4.05379Z' fill='%23222426'/%3e%3c/svg%3e\";\n export default img;",null,null,null,null,null,"var img = \"data:image/svg+xml,%3csvg width='82' height='81' viewBox='0 0 82 81' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg filter='url(%23filter0_di_1876_10638)'%3e%3crect x='8.68164' y='4' width='64.6362' height='64.6362' rx='32.3181' fill='white'/%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M28.1203 58.9565C27.8253 59.1364 27.4411 59.053 27.2472 58.767L26.5044 57.6718C26.3104 57.3859 26.3756 56.9986 26.6476 56.7857C29.0942 54.8714 31.1052 52.7137 32.6867 50.4027C38.5756 41.7976 38.5756 30.969 32.6867 22.3639C31.1052 20.0529 29.0942 17.8952 26.6477 15.9808C26.3756 15.7679 26.3104 15.3807 26.5044 15.0947L27.2472 13.9995C27.4411 13.7136 27.8253 13.6302 28.1203 13.8101L61.1156 33.9238C62.9572 35.0464 62.9572 37.7202 61.1156 38.8427L28.1203 58.9565Z' fill='url(%23paint0_linear_1876_10638)'/%3e%3c/g%3e%3cdefs%3e%3cfilter id='filter0_di_1876_10638' x='0.681641' y='0' width='80.6367' height='80.6362' filterUnits='userSpaceOnUse' color-interpolation-filters='sRGB'%3e%3cfeFlood flood-opacity='0' result='BackgroundImageFix'/%3e%3cfeColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha'/%3e%3cfeOffset dy='4'/%3e%3cfeGaussianBlur stdDeviation='4'/%3e%3cfeComposite in2='hardAlpha' operator='out'/%3e%3cfeColorMatrix type='matrix' values='0 0 0 0 0.184314 0 0 0 0 0.168627 0 0 0 0 0.262745 0 0 0 0.1 0'/%3e%3cfeBlend mode='normal' in2='BackgroundImageFix' result='effect1_dropShadow_1876_10638'/%3e%3cfeBlend mode='normal' in='SourceGraphic' in2='effect1_dropShadow_1876_10638' result='shape'/%3e%3cfeColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha'/%3e%3cfeOffset dy='-1'/%3e%3cfeComposite in2='hardAlpha' operator='arithmetic' k2='-1' k3='1'/%3e%3cfeColorMatrix type='matrix' values='0 0 0 0 0.184314 0 0 0 0 0.168627 0 0 0 0 0.262745 0 0 0 0.1 0'/%3e%3cfeBlend mode='normal' in2='shape' result='effect2_innerShadow_1876_10638'/%3e%3c/filter%3e%3clinearGradient id='paint0_linear_1876_10638' x1='62.4968' y1='28.6702' x2='26.3926' y2='28.6702' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='%233568DD'/%3e%3cstop offset='1' stop-color='%237DA3F9'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='21' height='21' viewBox='0 0 21 21' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M17.287 2.51074L11.248 7.34163L12.3696 4.49152L17.287 2.51074Z' fill='%23E17726' stroke='%23E17726' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M3.36133 2.51074L9.34536 7.38735L8.27875 4.49152L3.36133 2.51074Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M15.1163 13.709L13.5098 16.3633L16.9473 17.3827L17.9297 13.7676L15.1163 13.709Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M2.72461 13.7673L3.70105 17.3825L7.13858 16.3631L5.53806 13.7087L2.72461 13.7673Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M6.95006 9.2241L5.99219 10.7869L9.39969 10.9504L9.28443 6.99487L6.95006 9.2241Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M13.6977 9.22416L11.3269 6.94922L11.248 10.9505L14.6555 10.7869L13.6977 9.22416Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M7.13867 16.3636L9.19448 15.2842L7.42357 13.7939L7.13867 16.3636Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.4551 15.2842L13.5109 16.3636L13.226 13.7939L11.4551 15.2842Z' fill='%23E27625' stroke='%23E27625' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M13.5109 16.3633L11.4551 15.2839L11.6187 16.7291L11.6008 17.337L13.5109 16.3633Z' fill='%23D5BFB2' stroke='%23D5BFB2' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M7.13867 16.3633L9.04875 17.337L9.0368 16.7291L9.19448 15.2839L7.13867 16.3633Z' fill='%23D5BFB2' stroke='%23D5BFB2' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M9.08499 12.8392L7.375 12.297L8.58149 11.7019L9.08499 12.8392Z' fill='%23233447' stroke='%23233447' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.5645 12.839L12.068 11.7017L13.2804 12.2967L11.5645 12.839Z' fill='%23233447' stroke='%23233447' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M7.1378 16.3634L7.43464 13.7087L5.53711 13.7673L7.1378 16.3634Z' fill='%23CC6228' stroke='%23CC6228' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M13.2129 13.7087L13.5097 16.3634L15.1164 13.7673L13.2129 13.7087Z' fill='%23CC6228' stroke='%23CC6228' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M14.6555 10.7869L11.248 10.9504L11.5634 12.839L12.0668 11.7019L13.279 12.2968L14.6555 10.7869Z' fill='%23CC6228' stroke='%23CC6228' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M7.37466 12.2968L8.58095 11.7019L9.08438 12.839L9.39969 10.9504L5.99219 10.7869L7.37466 12.2968Z' fill='%23CC6228' stroke='%23CC6228' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M5.99219 10.7869L7.42303 13.7939L7.37466 12.2968L5.99219 10.7869Z' fill='%23E27525' stroke='%23E27525' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M13.279 12.2968L13.2246 13.7939L14.6554 10.7869L13.279 12.2968Z' fill='%23E27525' stroke='%23E27525' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M9.39929 10.9504L9.08398 12.839L9.48409 15.0683L9.56889 12.1333L9.39929 10.9504Z' fill='%23E27525' stroke='%23E27525' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.2476 10.9502L11.084 12.1266L11.1628 15.068L11.5629 12.8388L11.2476 10.9502Z' fill='%23E27525' stroke='%23E27525' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.5642 12.8391L11.1641 15.0683L11.4549 15.284L13.2255 13.794L13.2799 12.2969L11.5642 12.8391Z' fill='%23F5841F' stroke='%23F5841F' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M7.375 12.2969L7.42337 13.794L9.194 15.284L9.48483 15.0683L9.08472 12.8391L7.375 12.2969Z' fill='%23F5841F' stroke='%23F5841F' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.601 17.3367L11.6189 16.7288L11.4678 16.5852H9.18172L9.0366 16.7288L9.04855 17.3367L7.13867 16.363L7.80576 16.951L9.16381 17.9645H11.4858L12.8438 16.951L13.5109 16.363L11.601 17.3367Z' fill='%23C0AC9D' stroke='%23C0AC9D' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.4537 15.2841L11.1629 15.0684H9.48364L9.19281 15.2841L9.03516 16.729L9.18027 16.5854H11.4663L11.6174 16.729L11.4537 15.2841Z' fill='%23161616' stroke='%23161616' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M17.5424 7.65563L18.0518 4.9884L17.288 2.5105L11.4551 7.17846L13.6988 9.22428L16.8694 10.225L17.5669 9.34212L17.2635 9.10708L17.7485 8.62928L17.3788 8.31567L17.8637 7.91707L17.5424 7.65563Z' fill='%23763E1A' stroke='%23763E1A' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M2.59766 4.98865L3.11305 7.65587L2.78578 7.91732L3.27071 8.31592L2.90104 8.62952L3.38597 9.10733L3.08259 9.34237L3.78013 10.2252L6.95071 9.22453L9.19443 7.17871L3.36149 2.51074L2.59766 4.98865Z' fill='%23763E1A' stroke='%23763E1A' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M16.8682 10.2248L13.6976 9.22412L14.6555 10.787L13.2246 13.7942L15.116 13.7678H17.9294L16.8682 10.2248Z' fill='%23F5841F' stroke='%23F5841F' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M6.95046 9.22412L3.77988 10.2248L2.72461 13.7678H5.53806L7.42345 13.7942L5.99254 10.787L6.95046 9.22412Z' fill='%23F5841F' stroke='%23F5841F' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3cpath d='M11.2477 10.9503L11.4537 7.17826L12.3692 4.49121H8.27734L9.19282 7.17826L9.39884 10.9503L9.47767 12.1396L9.48364 15.0681H11.1629L11.1689 12.1396L11.2477 10.9503Z' fill='%23F5841F' stroke='%23F5841F' stroke-width='0.712817' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='16' height='17' viewBox='0 0 16 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M6 12.6362L10 8.63623L6 4.63623' stroke='%23A2B2D8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e\";\n export default img;",null,"var img = \"data:image/svg+xml,%3csvg width='247' height='307' viewBox='0 0 247 307' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M110.535 0C103.879 -6.17484e-07 97.4969 2.65024 92.7911 7.36767L18.8715 81.4695C16.0717 84.2762 14.6719 87.9548 14.6719 91.6333C14.6719 95.3119 16.0718 98.9905 18.8715 101.797L67.3134 150.358V64.388C67.3134 57.9722 72.461 52.7712 78.8611 52.7712C105.9 52.7712 171.718 52.7712 180.695 52.7712L233.337 0.000747875L110.535 0Z' fill='%234A21EF'/%3e%3cpath d='M67.3153 166.43H169.109C175.509 166.43 180.697 161.229 180.697 154.814V68.8437L229.139 117.404C231.939 120.211 233.339 123.89 233.339 127.568C233.339 131.247 231.939 134.925 229.139 137.732L155.219 211.834C150.513 216.551 144.131 219.202 137.476 219.202L14.6739 219.201L67.3153 166.43Z' fill='%234A21EF'/%3e%3cpath d='M21.5984 307C15.3525 307 8.46722 304.88 0.942622 300.639V291.468C8.0246 296.251 14.9344 298.642 21.6722 298.642C24.7705 298.642 27.2295 298.075 29.0492 296.941C30.9181 295.758 31.8525 294.13 31.8525 292.059C31.8525 290.186 30.9918 288.706 29.2705 287.622C27.5492 286.487 24.8935 285.477 21.3033 284.589C14.8607 282.913 10.4836 281.483 8.17214 280.299C3.05738 277.686 0.5 273.766 0.5 268.539C0.5 264.052 2.39344 260.502 6.18033 257.888C9.96722 255.275 14.6394 253.968 20.1967 253.968C26.9836 253.968 33.1066 255.941 38.5656 259.885V269.057C32.3197 264.52 26.1968 262.252 20.1967 262.252C17.0492 262.252 14.4426 262.844 12.3771 264.027C10.3115 265.211 9.2787 266.863 9.2787 268.983C9.2787 270.265 9.86887 271.374 11.0492 272.311C12.2295 273.199 13.5082 273.889 14.8853 274.382C16.3115 274.826 18.4263 275.393 21.2295 276.083C24.1804 276.823 26.6148 277.538 28.5328 278.228C30.5 278.919 32.4918 279.88 34.5082 281.113C36.5246 282.296 38.0246 283.8 39.0082 285.625C40.041 287.449 40.5574 289.619 40.5574 292.133C40.5574 296.818 38.7623 300.466 35.1722 303.08C31.6312 305.693 27.1066 307 21.5984 307Z' fill='%23070C27'/%3e%3cpath d='M58.3189 307C56.5975 307 54.9254 306.803 53.3025 306.408C51.7287 306.014 50.2041 305.397 48.7287 304.559C47.2533 303.672 46.0484 302.414 45.1139 300.787C44.1795 299.111 43.7123 297.163 43.7123 294.944C43.6631 290.95 45.0402 287.917 47.8434 285.846C50.6467 283.726 54.6549 282.666 59.868 282.666H71.7451V280.299C71.7451 278.13 70.8599 276.502 69.0894 275.418C67.3189 274.283 65.032 273.716 62.2287 273.716C56.868 273.716 53.7451 275.492 52.8598 279.042L44.7451 279.19C44.8434 275.294 46.5401 272.213 49.8352 269.944C53.1795 267.676 57.2615 266.542 62.0812 266.542C66.95 266.542 71.1058 267.725 74.5484 270.092C78.0402 272.459 79.7861 275.516 79.7861 279.264V306.408H71.7451V300.491C70.6139 302.069 68.8926 303.548 66.5812 304.929C64.3189 306.31 61.5648 307 58.3189 307ZM58.9828 299.973C62.2287 299.973 65.1549 298.864 67.7615 296.645C70.4172 294.426 71.7451 291.813 71.7451 288.805H61.3435C58.1467 288.805 55.7615 289.421 54.1877 290.654C52.6631 291.837 51.9992 293.341 52.1959 295.166C52.3434 296.842 53.0812 298.075 54.409 298.864C55.7369 299.604 57.2615 299.973 58.9828 299.973Z' fill='%23070C27'/%3e%3cpath d='M86.2756 306.408L86.128 274.53V265.876C86.128 261.192 88.0461 257.666 91.8821 255.3C95.7182 252.933 100.784 252.538 107.079 254.116L107.005 260.625C102.923 259.54 99.8248 259.54 97.71 260.625C95.6444 261.66 94.6116 263.436 94.6116 265.95V267.208H106.71V274.53H94.6116L94.6854 306.408H86.2756Z' fill='%23070C27'/%3e%3cpath d='M129.014 307C123.408 307 118.662 305.028 114.777 301.083C110.891 297.089 108.949 292.306 108.949 286.734C108.949 281.113 110.916 276.354 114.85 272.459C118.785 268.514 123.506 266.542 129.014 266.542C133.883 266.542 138.162 268.145 141.85 271.35C145.588 274.505 147.875 278.475 148.711 283.258C149.203 285.575 149.227 287.794 148.785 289.914H117.359C117.85 292.824 119.178 295.141 121.342 296.867C123.506 298.543 126.063 299.382 129.014 299.382C133.539 299.382 137.154 297.779 139.859 294.574H147.469C147.469 294.574 146.589 299.756 139.859 304.189C136.416 306.063 132.801 307 129.014 307ZM117.359 283.332H140.449C139.957 280.718 138.654 278.524 136.539 276.749C134.473 274.974 131.941 274.086 128.941 274.086C125.941 274.086 123.383 274.998 121.268 276.823C119.154 278.598 117.85 280.768 117.359 283.332Z' fill='%23070C27'/%3e%3cpath d='M210.389 307C208.668 307 206.996 306.803 205.373 306.408C203.799 306.014 202.275 305.397 200.799 304.559C199.324 303.672 198.119 302.414 197.184 300.787C196.25 299.111 195.783 297.163 195.783 294.944C195.734 290.95 197.111 287.917 199.914 285.846C202.717 283.726 206.725 282.666 211.939 282.666H223.816V280.299C223.816 278.13 222.93 276.502 221.16 275.418C219.389 274.283 217.102 273.716 214.299 273.716C208.939 273.716 205.816 275.492 204.93 279.042L196.816 279.19C196.914 275.294 198.611 272.213 201.906 269.944C205.25 267.676 209.332 266.542 214.152 266.542C219.021 266.542 223.176 267.725 226.619 270.092C230.111 272.459 231.857 275.516 231.857 279.264V306.408H223.816V300.491C222.684 302.069 220.963 303.548 218.652 304.929C216.389 306.31 213.635 307 210.389 307ZM211.053 299.973C214.299 299.973 217.225 298.864 219.832 296.645C222.488 294.426 223.816 291.813 223.816 288.805H213.414C210.217 288.805 207.832 289.421 206.258 290.654C204.734 291.837 204.07 293.341 204.266 295.166C204.414 296.842 205.152 298.075 206.479 298.864C207.807 299.604 209.332 299.973 211.053 299.973Z' fill='%23070C27'/%3e%3cpath d='M238.016 306.408V255.3H246.5V306.408H238.016Z' fill='%23070C27'/%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M153.715 255.3H176.141C181.109 255.3 185.24 257.001 188.535 260.403C191.83 263.756 193.477 267.824 193.477 272.607C193.477 277.439 191.83 281.507 188.535 284.811C185.289 288.065 181.158 289.717 176.141 289.766L162.494 289.84V306.408H153.715V255.3ZM175.551 281.852L162.494 281.926V263.288L175.551 263.214C178.453 263.214 180.74 264.077 182.412 265.802C184.133 267.528 184.994 269.698 184.994 272.311C184.994 274.974 184.133 277.242 182.412 279.116C180.691 280.94 178.404 281.852 175.551 281.852Z' fill='%23070C27'/%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg width='28' height='18' viewBox='0 0 28 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M5.7322 3.87813C10.2984 -0.444404 17.7016 -0.444404 22.2679 3.87813L22.8174 4.39834C23.0457 4.6145 23.0457 4.96488 22.8174 5.18104L20.9375 6.96061C20.8233 7.06868 20.6382 7.06868 20.5241 6.96061L19.7678 6.24475C16.5823 3.22921 11.4176 3.22921 8.23214 6.24475L7.42226 7.01137C7.30814 7.11944 7.12308 7.11944 7.00889 7.01137L5.12903 5.2318C4.90065 5.01564 4.90065 4.66526 5.12903 4.4491L5.7322 3.87813ZM26.1556 7.55852L27.8288 9.14231C28.0571 9.35846 28.0571 9.70885 27.8288 9.92501L20.2846 17.0668C20.0563 17.2828 19.6861 17.2828 19.4578 17.0668L14.1034 11.9981C14.0463 11.944 13.9538 11.944 13.8967 11.9981L8.5424 17.0668C8.3141 17.2828 7.9439 17.2828 7.7156 17.0668L0.171232 9.92493C-0.0570773 9.70878 -0.0570773 9.35839 0.171232 9.14224L1.84435 7.55838C2.07266 7.3423 2.44282 7.3423 2.67113 7.55838L8.02564 12.6271C8.08266 12.6812 8.17519 12.6812 8.23229 12.6271L13.5865 7.55838C13.8148 7.3423 14.185 7.3423 14.4133 7.55838L19.7678 12.6271C19.8249 12.6812 19.9174 12.6812 19.9745 12.6271L25.3288 7.55852C25.5572 7.34237 25.9273 7.34237 26.1556 7.55852Z' fill='%233396FF'/%3e%3c/svg%3e\";\n export default img;",null,null,null,null,null,null,null,"var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgStatusCheck(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 96,\n height: 96,\n viewBox: \"0 0 96 96\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48 8C70.0914 8 88 25.9086 88 48C88 70.0914 70.0914 88 48 88C25.9086 88 8 70.0914 8 48C8 25.9086 25.9086 8 48 8ZM48 13C28.67 13 13 28.67 13 48C13 67.33 28.67 83 48 83C67.33 83 83 67.33 83 48C83 28.67 67.33 13 48 13ZM65.2678 35.2322C66.2441 36.2085 66.2441 37.7915 65.2678 38.7678L43.2678 60.7678C42.2915 61.7441 40.7085 61.7441 39.7322 60.7678L30.7322 51.7678C29.7559 50.7915 29.7559 49.2085 30.7322 48.2322C31.7085 47.2559 33.2915 47.2559 34.2678 48.2322L41.5 55.4645L61.7322 35.2322C62.7085 34.2559 64.2915 34.2559 65.2678 35.2322Z\",\n fill: \"#159F80\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgStatusCheck);\nexport default __webpack_public_path__ + \"static/media/status-check.1c3ce2049109add5875e0d82314ec00d.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgAmb(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.00003 1.60759C9.71285 -0.536007 14.2872 -0.536006 18 1.60759V1.60759C21.7129 3.75118 24 7.71271 24 11.9999V11.9999C24 16.2871 21.7129 20.2486 18 22.3922V22.3922C14.2872 24.5358 9.71285 24.5358 6.00003 22.3922V22.3922C2.28722 20.2486 3.31402e-05 16.2871 3.31402e-05 11.9999V11.9999C3.31402e-05 7.71271 2.28722 3.75118 6.00003 1.60759V1.60759Z\",\n fill: \"#457EFF\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.25562 18.5605C8.16988 18.6127 8.05821 18.5885 8.00185 18.5054L7.78597 18.1871C7.7296 18.104 7.74853 17.9915 7.82761 17.9296C8.53865 17.3732 9.12311 16.7461 9.58276 16.0745C11.2943 13.5736 11.2943 10.4264 9.58276 7.92553C9.12311 7.25387 8.53865 6.62678 7.82761 6.07042C7.74853 6.00854 7.7296 5.89599 7.78597 5.81289L8.00185 5.49459C8.05821 5.41148 8.16988 5.38725 8.25562 5.43952L17.8451 11.2852C18.3803 11.6115 18.3803 12.3885 17.8451 12.7148L8.25562 18.5605Z\",\n fill: \"white\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgAmb);\nexport default __webpack_public_path__ + \"static/media/amb.b5626b08d2c93de2193fe8e814855c2a.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgEth(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 32C24.8366 32 32 24.8366 32 16C32 7.16344 24.8366 0 16 0C7.16344 0 0 7.16344 0 16C0 24.8366 7.16344 32 16 32Z\",\n fill: \"#627EEA\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.4979 4V12.87L23.9949 16.22L16.4979 4Z\",\n fill: \"white\",\n fillOpacity: 0.602\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.498 4L9 16.22L16.498 12.87V4Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.4979 21.9682V27.9952L23.9999 17.6162L16.4979 21.9682Z\",\n fill: \"white\",\n fillOpacity: 0.602\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.498 27.9952V21.9672L9 17.6162L16.498 27.9952Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.4979 20.5731L23.9949 16.2201L16.4979 12.8721V20.5731Z\",\n fill: \"white\",\n fillOpacity: 0.2\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 16.2201L16.498 20.5731V12.8721L9 16.2201Z\",\n fill: \"white\",\n fillOpacity: 0.602\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEth);\nexport default __webpack_public_path__ + \"static/media/eth.32b3a478fc004a8b3b7fead8ec646896.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgBnb(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 2496 2496\",\n style: {\n enableBackground: \"new 0 0 2496 2496\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n fill: \"#F0B90B\"\n },\n d: \"M1248,0c689.3,0,1248,558.7,1248,1248s-558.7,1248-1248,1248 S0,1937.3,0,1248S558.7,0,1248,0L1248,0z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#FFFFFF\"\n },\n d: \"M685.9,1248l0.9,330l280.4,165v193.2l-444.5-260.7v-524L685.9,1248L685.9,1248z M685.9,918v192.3 l-163.3-96.6V821.4l163.3-96.6l164.1,96.6L685.9,918L685.9,918z M1084.3,821.4l163.3-96.6l164.1,96.6L1247.6,918L1084.3,821.4 L1084.3,821.4z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#FFFFFF\"\n },\n d: \"M803.9,1509.6v-193.2l163.3,96.6v192.3L803.9,1509.6L803.9,1509.6z M1084.3,1812.2l163.3,96.6 l164.1-96.6v192.3l-164.1,96.6l-163.3-96.6V1812.2L1084.3,1812.2z M1645.9,821.4l163.3-96.6l164.1,96.6v192.3l-164.1,96.6V918 L1645.9,821.4L1645.9,821.4L1645.9,821.4z M1809.2,1578l0.9-330l163.3-96.6v524l-444.5,260.7v-193.2L1809.2,1578L1809.2,1578 L1809.2,1578z\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n style: {\n fill: \"#FFFFFF\"\n },\n points: \"1692.1,1509.6 1528.8,1605.3 1528.8,1413 1692.1,1316.4 1692.1,1509.6 \"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#FFFFFF\"\n },\n d: \"M1692.1,986.4l0.9,193.2l-281.2,165v330.8l-163.3,95.7l-163.3-95.7v-330.8l-281.2-165V986.4 L968,889.8l279.5,165.8l281.2-165.8l164.1,96.6H1692.1L1692.1,986.4z M803.9,656.5l443.7-261.6l444.5,261.6l-163.3,96.6 l-281.2-165.8L967.2,753.1L803.9,656.5L803.9,656.5z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgBnb);\nexport default __webpack_public_path__ + \"static/media/bnb.874895f575945c1bdc68d0335e66ee9a.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgBsc(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 32C24.8366 32 32 24.8366 32 16C32 7.16344 24.8366 0 16 0C7.16344 0 0 7.16344 0 16C0 24.8366 7.16344 32 16 32Z\",\n fill: \"#F3BA2F\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.116 14.404L16 10.52L19.886 14.406L22.146 12.146L16 6L9.856 12.144L12.116 14.404ZM6 16L8.26 13.74L10.52 16L8.26 18.26L6 16ZM12.116 17.596L16 21.48L19.886 17.594L22.146 19.853L16 26L9.856 19.856L9.853 19.853L12.116 17.596ZM21.48 16L23.74 13.74L26 16L23.74 18.26L21.48 16ZM18.292 15.998H18.294V16L16 18.294L13.709 16.004L13.705 16L13.709 15.997L14.11 15.595L14.305 15.4L16 13.706L18.293 15.999L18.292 15.998Z\",\n fill: \"white\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgBsc);\nexport default __webpack_public_path__ + \"static/media/bsc.4eb08abaaf640315a712902aab090244.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgUsdc(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 25,\n viewBox: \"0 0 24 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 24.5922C18.6274 24.5922 24 19.2196 24 12.5922C24 5.96475 18.6274 0.592163 12 0.592163C5.37258 0.592163 0 5.96475 0 12.5922C0 19.2196 5.37258 24.5922 12 24.5922Z\",\n fill: \"#2775C9\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.8125 21.2172C6.945 21.2172 3 17.2722 3 12.4047C3 7.53716 6.945 3.59216 11.8125 3.59216C16.68 3.59216 20.625 7.53716 20.625 12.4047C20.625 14.7419 19.6965 16.9834 18.0439 18.636C16.3912 20.2887 14.1497 21.2172 11.8125 21.2172ZM11.2875 9.13466C10.8053 9.15857 10.3495 9.36186 10.0095 9.70461C9.66956 10.0474 9.46999 10.5048 9.45 10.9872C9.45 11.8947 10.005 12.4872 11.1825 12.7347L12.0075 12.9297C12.81 13.1172 13.14 13.3872 13.14 13.8447C13.14 14.3022 12.5625 14.7522 11.8125 14.7522C11.5461 14.7766 11.2782 14.7255 11.0395 14.6048C10.8007 14.4841 10.6008 14.2987 10.4625 14.0697C10.4215 13.9828 10.3569 13.9092 10.2759 13.8575C10.195 13.8057 10.1011 13.7779 10.005 13.7772H9.5625C9.52847 13.7835 9.49603 13.7964 9.46703 13.8153C9.43803 13.8342 9.41306 13.8587 9.39354 13.8872C9.37402 13.9158 9.36035 13.948 9.3533 13.9818C9.34626 14.0157 9.34599 14.0507 9.3525 14.0847C9.46029 14.5246 9.7109 14.9163 10.0651 15.1986C10.4193 15.4809 10.8571 15.6378 11.31 15.6447V16.2747C11.31 16.4149 11.3657 16.5494 11.4649 16.6485C11.564 16.7477 11.6985 16.8034 11.8387 16.8034C11.979 16.8034 12.1135 16.7477 12.2126 16.6485C12.3118 16.5494 12.3675 16.4149 12.3675 16.2747V15.6372C12.8796 15.6314 13.3692 15.4259 13.732 15.0644C14.0948 14.703 14.3022 14.2142 14.31 13.7022C14.31 12.7497 13.7625 12.2022 12.465 11.9247L11.715 11.7597C10.965 11.5722 10.6125 11.3247 10.6125 10.9047C10.6125 10.4847 11.0625 10.0197 11.8125 10.0197C12.0487 9.99499 12.287 10.0392 12.4986 10.147C12.7102 10.2548 12.8861 10.4216 13.005 10.6272C13.0532 10.7298 13.1295 10.8167 13.2251 10.8778C13.3207 10.9389 13.4316 10.9716 13.545 10.9722H13.8975C13.9776 10.9526 14.0469 10.9023 14.0904 10.8322C14.1339 10.762 14.1481 10.6777 14.13 10.5972C14.0284 10.191 13.8011 9.82728 13.4806 9.55792C13.16 9.28856 12.7626 9.12731 12.345 9.09716V8.57966C12.345 8.43943 12.2893 8.30494 12.1901 8.20578C12.091 8.10662 11.9565 8.05091 11.8162 8.05091C11.676 8.05091 11.5415 8.10662 11.4424 8.20578C11.3432 8.30494 11.2875 8.43943 11.2875 8.57966V9.13466ZM5.205 12.4047C5.20586 13.7862 5.64073 15.1326 6.44819 16.2536C7.25565 17.3746 8.39489 18.2137 9.705 18.6522H9.81C9.89951 18.6522 9.98535 18.6166 10.0486 18.5533C10.1119 18.49 10.1475 18.4042 10.1475 18.3147V18.1572C10.1477 18.0176 10.1065 17.881 10.0291 17.7648C9.95165 17.6487 9.84147 17.5581 9.7125 17.5047C8.6922 17.0928 7.81826 16.3855 7.20284 15.4734C6.58742 14.5614 6.25861 13.4862 6.25861 12.3859C6.25861 11.2856 6.58742 10.2105 7.20284 9.2984C7.81826 8.38633 8.6922 7.67899 9.7125 7.26716C9.84087 7.21502 9.9508 7.12582 10.0283 7.01094C10.1058 6.89607 10.1473 6.76072 10.1475 6.62216V6.44966C10.148 6.39901 10.1363 6.349 10.1133 6.30385C10.0903 6.2587 10.0568 6.21976 10.0156 6.19032C9.97439 6.16088 9.92668 6.14181 9.87653 6.13473C9.82637 6.12766 9.77525 6.13278 9.7275 6.14966C8.41197 6.58473 7.26697 7.42324 6.45512 8.5461C5.64328 9.66895 5.20586 11.0191 5.205 12.4047ZM18.42 12.4047C18.4176 11.0244 17.982 9.6797 17.1746 8.56017C16.3673 7.44065 15.2289 6.60277 13.92 6.16466H13.8075C13.714 6.16466 13.6244 6.2018 13.5582 6.26791C13.4921 6.33401 13.455 6.42367 13.455 6.51716V6.62966C13.458 6.77432 13.5028 6.915 13.584 7.03477C13.6652 7.15454 13.7793 7.24827 13.9125 7.30466C14.9305 7.7177 15.802 8.42508 16.4157 9.33629C17.0293 10.2475 17.3571 11.3211 17.3571 12.4197C17.3571 13.5182 17.0293 14.5918 16.4157 15.503C15.802 16.4142 14.9305 17.1216 13.9125 17.5347C13.7818 17.5916 13.6701 17.6847 13.5904 17.8029C13.5107 17.9211 13.4663 18.0596 13.4625 18.2022V18.3297C13.4631 18.3853 13.4769 18.4399 13.5027 18.4892C13.5285 18.5384 13.5656 18.5809 13.611 18.6131C13.6563 18.6453 13.7086 18.6663 13.7636 18.6743C13.8187 18.6824 13.8748 18.6774 13.9275 18.6597C15.2374 18.2195 16.3759 17.3788 17.182 16.2563C17.9882 15.1339 18.4212 13.7866 18.42 12.4047Z\",\n fill: \"white\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgUsdc);\nexport default __webpack_public_path__ + \"static/media/usdc.a7312e7e221026da4a20210b0157e6c1.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgBusd(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 25,\n viewBox: \"0 0 24 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 24.5922C18.6274 24.5922 24 19.2196 24 12.5922C24 5.96475 18.6274 0.592163 12 0.592163C5.37258 0.592163 0 5.96475 0 12.5922C0 19.2196 5.37258 24.5922 12 24.5922Z\",\n fill: \"#F3BA2F\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.087 11.3952L12 8.48216L14.9145 11.3967L16.6095 9.70166L12 5.09216L7.392 9.70016L9.087 11.3952ZM4.5 12.5922L6.195 10.8972L7.89 12.5922L6.195 14.2872L4.5 12.5922ZM9.087 13.7892L12 16.7022L14.9145 13.7877L16.6095 15.4819L12 20.0922L7.392 15.4842L7.38975 15.4819L9.087 13.7892ZM16.11 12.5922L17.805 10.8972L19.5 12.5922L17.805 14.2872L16.11 12.5922ZM13.719 12.5907H13.7205V12.5922L12 14.3127L10.2817 12.5952L10.2787 12.5922L10.2817 12.5899L10.5825 12.2884L10.7288 12.1422L12 10.8717L13.7197 12.5914L13.719 12.5907Z\",\n fill: \"white\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgBusd);\nexport default __webpack_public_path__ + \"static/media/busd.4514bf04d4266e0121df72a53c7e8f10.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgUsdt(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 25,\n viewBox: \"0 0 24 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 24.5922C18.6274 24.5922 24 19.2196 24 12.5922C24 5.96475 18.6274 0.592163 12 0.592163C5.37258 0.592163 0 5.96475 0 12.5922C0 19.2196 5.37258 24.5922 12 24.5922Z\",\n fill: \"#26A17B\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13.4415 13.6297V13.6282C13.359 13.6342 12.9337 13.6597 11.985 13.6597C11.2275 13.6597 10.6942 13.6372 10.5067 13.6282V13.6304C7.59073 13.5022 5.41423 12.9944 5.41423 12.3869C5.41423 11.7802 7.59073 11.2724 10.5067 11.1419V13.1249C10.6972 13.1384 11.2432 13.1707 11.9977 13.1707C12.903 13.1707 13.3567 13.1332 13.4415 13.1257V11.1434C16.3515 11.2732 18.5227 11.7809 18.5227 12.3869C18.5227 12.9944 16.3515 13.5007 13.4415 13.6297ZM13.4415 10.9372V9.16267H17.502V6.45667H6.44623V9.16267H10.5067V10.9364C7.20673 11.0879 4.72498 11.7419 4.72498 12.5249C4.72498 13.3079 7.20673 13.9612 10.5067 14.1134V19.7999H13.4415V14.1119C16.7362 13.9604 19.212 13.3072 19.212 12.5249C19.212 11.7427 16.7362 11.0894 13.4415 10.9372Z\",\n fill: \"white\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgUsdt);\nexport default __webpack_public_path__ + \"static/media/usdt.8f8808e3ab105c0fc710c3528b4d9347.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactComponent as AmbIcon } from '../assets/icons/amb.svg';\nimport { ReactComponent as EthIcon } from '../assets/icons/eth.svg';\nimport { ReactComponent as BnbIcon } from '../assets/icons/bnb.svg';\nimport { ReactComponent as BscIcon } from '../assets/icons/bsc.svg';\nimport { ReactComponent as UsdcIcon } from '../assets/icons/usdc.svg';\nimport { ReactComponent as BusdCoin } from '../assets/icons/busd.svg';\nimport { ReactComponent as UsdtCoin } from '../assets/icons/usdt.svg';\n\nconst iconDict = {\n ETH: EthIcon,\n WETH: EthIcon,\n AMB: AmbIcon,\n SAMB: AmbIcon,\n BNB: BnbIcon,\n WBNB: BnbIcon,\n BSC: BscIcon,\n USDC: UsdcIcon,\n WUSDC: UsdcIcon,\n BUSD: BusdCoin,\n USDT: UsdtCoin,\n};\n\nconst NetworkOrTokenIcon = ({ symbol, ...props }) => {\n const IconComponent = iconDict[symbol];\n return IconComponent ? : null;\n};\n\nexport default NetworkOrTokenIcon;\n\nNetworkOrTokenIcon.propTypes = {\n symbol: PropTypes.string,\n};\n","import NetworksConfig from '../networks.json';\n\nconst { REACT_APP_ENV } = process.env;\n\nexport const allNetworks = NetworksConfig[REACT_APP_ENV];\n\nconst { amb, eth, bsc } = allNetworks;\n\nexport const supportedNetworks = [eth, bsc];\nexport const AmbrosusNetwork = amb;\n\nexport const getNetworkByChainId = (chainId) =>\n Object.values(allNetworks).find((network) => network.chainId === chainId);\n\nexport const networksChainIds = Object.values(allNetworks).map(\n (network) => network.chainId\n);\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nlet WS: any = null;\n\ntry {\n WS = (WebSocket as any);\n if (WS == null) { throw new Error(\"inject please\"); }\n} catch (error) {\n const logger = new Logger(version);\n WS = function() {\n logger.throwError(\"WebSockets not supported in this environment\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new WebSocket()\"\n });\n }\n}\n//export default WS;\n//module.exports = WS;\nexport { WS as WebSocket };\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Event } from \"./base-provider\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\nimport { WebSocket } from \"./ws\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n/**\n * Notes:\n *\n * This provider differs a bit from the polling providers. One main\n * difference is how it handles consistency. The polling providers\n * will stall responses to ensure a consistent state, while this\n * WebSocket provider assumes the connected backend will manage this.\n *\n * For example, if a polling provider emits an event which indicates\n * the event occurred in blockhash XXX, a call to fetch that block by\n * its hash XXX, if not present will retry until it is present. This\n * can occur when querying a pool of nodes that are mildly out of sync\n * with each other.\n */\n\nlet NextId = 1;\n\nexport type InflightRequest = {\n callback: (error: Error, result: any) => void;\n payload: string;\n};\n\nexport type Subscription = {\n tag: string;\n processFunc: (payload: any) => void;\n};\n\nexport interface WebSocketLike {\n onopen: ((...args: Array) => any) | null;\n onmessage: ((...args: Array) => any) | null;\n onerror: ((...args: Array) => any) | null;\n\n readyState: number;\n\n send(payload: any): void;\n close(code?: number, reason?: string): void;\n}\n\n// For more info about the Real-time Event API see:\n// https://geth.ethereum.org/docs/rpc/pubsub\n\nexport class WebSocketProvider extends JsonRpcProvider {\n readonly _websocket: any;\n readonly _requests: { [ name: string ]: InflightRequest };\n readonly _detectNetwork: Promise;\n\n // Maps event tag to subscription ID (we dedupe identical events)\n readonly _subIds: { [ tag: string ]: Promise };\n\n // Maps Subscription ID to Subscription\n readonly _subs: { [ name: string ]: Subscription };\n\n _wsReady: boolean;\n\n constructor(url: string | WebSocketLike, network?: Networkish) {\n\n // This will be added in the future; please open an issue to expedite\n if (network === \"any\") {\n logger.throwError(\"WebSocketProvider does not support 'any' network yet\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"network:any\"\n });\n }\n\n if (typeof(url) === \"string\") {\n super(url, network);\n } else {\n super(\"_websocket\", network);\n }\n\n this._pollingInterval = -1;\n\n this._wsReady = false;\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"_websocket\", new WebSocket(this.connection.url));\n } else {\n defineReadOnly(this, \"_websocket\", url);\n }\n\n defineReadOnly(this, \"_requests\", { });\n defineReadOnly(this, \"_subs\", { });\n defineReadOnly(this, \"_subIds\", { });\n defineReadOnly(this, \"_detectNetwork\", super.detectNetwork());\n\n // Stall sending requests until the socket is open...\n this.websocket.onopen = () => {\n this._wsReady = true;\n Object.keys(this._requests).forEach((id) => {\n this.websocket.send(this._requests[id].payload);\n });\n };\n\n this.websocket.onmessage = (messageEvent: { data: string }) => {\n const data = messageEvent.data;\n const result = JSON.parse(data);\n if (result.id != null) {\n const id = String(result.id);\n const request = this._requests[id];\n delete this._requests[id];\n\n if (result.result !== undefined) {\n request.callback(null, result.result);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: JSON.parse(request.payload),\n response: result.result,\n provider: this\n });\n\n } else {\n let error: Error = null;\n if (result.error) {\n error = new Error(result.error.message || \"unknown error\");\n defineReadOnly(error, \"code\", result.error.code || null);\n defineReadOnly(error, \"response\", data);\n } else {\n error = new Error(\"unknown error\");\n }\n\n request.callback(error, undefined);\n\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: JSON.parse(request.payload),\n provider: this\n });\n\n }\n\n } else if (result.method === \"eth_subscription\") {\n // Subscription...\n const sub = this._subs[result.params.subscription];\n if (sub) {\n //this.emit.apply(this, );\n sub.processFunc(result.params.result)\n }\n\n } else {\n console.warn(\"this should not happen\");\n }\n };\n\n // This Provider does not actually poll, but we want to trigger\n // poll events for things that depend on them (like stalling for\n // block and transaction lookups)\n const fauxPoll = setInterval(() => {\n this.emit(\"poll\");\n }, 1000);\n if (fauxPoll.unref) { fauxPoll.unref(); }\n }\n\n // Cannot narrow the type of _websocket, as that is not backwards compatible\n // so we add a getter and let the WebSocket be a public API.\n get websocket(): WebSocketLike { return this._websocket; }\n\n detectNetwork(): Promise {\n return this._detectNetwork;\n }\n\n get pollingInterval(): number {\n return 0;\n }\n\n resetEventsBlock(blockNumber: number): void {\n logger.throwError(\"cannot reset events block on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resetEventBlock\"\n });\n }\n\n set pollingInterval(value: number) {\n logger.throwError(\"cannot set polling interval on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPollingInterval\"\n });\n }\n\n async poll(): Promise {\n return null;\n }\n\n set polling(value: boolean) {\n if (!value) { return; }\n\n logger.throwError(\"cannot set polling on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPolling\"\n });\n }\n\n send(method: string, params?: Array): Promise {\n const rid = NextId++;\n\n return new Promise((resolve, reject) => {\n function callback(error: Error, result: any) {\n if (error) { return reject(error); }\n return resolve(result);\n }\n\n const payload = JSON.stringify({\n method: method,\n params: params,\n id: rid,\n jsonrpc: \"2.0\"\n });\n\n this.emit(\"debug\", {\n action: \"request\",\n request: JSON.parse(payload),\n provider: this\n });\n\n this._requests[String(rid)] = { callback, payload };\n\n if (this._wsReady) { this.websocket.send(payload); }\n });\n }\n\n static defaultUrl(): string {\n return \"ws:/\\/localhost:8546\";\n }\n\n async _subscribe(tag: string, param: Array, processFunc: (result: any) => void): Promise {\n let subIdPromise = this._subIds[tag];\n if (subIdPromise == null) {\n subIdPromise = Promise.all(param).then((param) => {\n return this.send(\"eth_subscribe\", param);\n });\n this._subIds[tag] = subIdPromise;\n }\n const subId = await subIdPromise;\n this._subs[subId] = { tag, processFunc };\n }\n\n _startEvent(event: Event): void {\n switch (event.type) {\n case \"block\":\n this._subscribe(\"block\", [ \"newHeads\" ], (result: any) => {\n const blockNumber = BigNumber.from(result.number).toNumber();\n this._emitted.block = blockNumber;\n this.emit(\"block\", blockNumber);\n });\n break;\n\n case \"pending\":\n this._subscribe(\"pending\", [ \"newPendingTransactions\" ], (result: any) => {\n this.emit(\"pending\", result);\n });\n break;\n\n case \"filter\":\n this._subscribe(event.tag, [ \"logs\", this._getFilter(event.filter) ], (result: any) => {\n if (result.removed == null) { result.removed = false; }\n this.emit(event.filter, this.formatter.filterLog(result));\n });\n break;\n\n case \"tx\": {\n const emitReceipt = (event: Event) => {\n const hash = event.hash;\n this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt) { return; }\n this.emit(hash, receipt);\n });\n };\n\n // In case it is already mined\n emitReceipt(event);\n\n // To keep things simple, we start up a single newHeads subscription\n // to keep an eye out for transactions we are watching for.\n // Starting a subscription for an event (i.e. \"tx\") that is already\n // running is (basically) a nop.\n this._subscribe(\"tx\", [ \"newHeads\" ], (result: any) => {\n this._events.filter((e) => (e.type === \"tx\")).forEach(emitReceipt);\n });\n break;\n }\n\n // Nothing is needed\n case \"debug\":\n case \"poll\":\n case \"willPoll\":\n case \"didPoll\":\n case \"error\":\n break;\n\n default:\n console.log(\"unhandled:\", event);\n break;\n }\n }\n\n _stopEvent(event: Event): void {\n let tag = event.tag;\n\n if (event.type === \"tx\") {\n // There are remaining transaction event listeners\n if (this._events.filter((e) => (e.type === \"tx\")).length) {\n return;\n }\n tag = \"tx\";\n } else if (this.listenerCount(event.event)) {\n // There are remaining event listeners\n return;\n }\n\n const subId = this._subIds[tag];\n if (!subId) { return; }\n\n delete this._subIds[tag];\n subId.then((subId) => {\n if (!this._subs[subId]) { return; }\n delete this._subs[subId];\n this.send(\"eth_unsubscribe\", [ subId ]);\n });\n }\n\n async destroy(): Promise {\n // Wait until we have connected before trying to disconnect\n if (this.websocket.readyState === WebSocket.CONNECTING) {\n await (new Promise((resolve) => {\n this.websocket.onopen = function() {\n resolve(true);\n };\n\n this.websocket.onerror = function() {\n resolve(false);\n };\n }));\n }\n\n // Hangup\n // See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this.websocket.close(1000);\n }\n}\n","\n\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly, getStatic } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { CommunityResourcable } from \"./formatter\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\n\ntype getUrlFunc = (network: Network, apiKey: string) => string | ConnectionInfo;\n\n// A StaticJsonRpcProvider is useful when you *know* for certain that\n// the backend will never change, as it never calls eth_chainId to\n// verify its backend. However, if the backend does change, the effects\n// are undefined and may include:\n// - inconsistent results\n// - locking up the UI\n// - block skew warnings\n// - wrong results\n// If the network is not explicit (i.e. auto-detection is expected), the\n// node MUST be running and available to respond to requests BEFORE this\n// is instantiated.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n async detectNetwork(): Promise {\n let network = this.network;\n if (network == null) {\n network = await super.detectNetwork();\n\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // If still not set, set it\n if (this._network == null) {\n // A static network does not support \"any\"\n defineReadOnly(this, \"_network\", network);\n\n this.emit(\"network\", network, null);\n }\n }\n return network;\n }\n}\n\nexport abstract class UrlJsonRpcProvider extends StaticJsonRpcProvider implements CommunityResourcable {\n readonly apiKey: any;\n\n constructor(network?: Networkish, apiKey?: any) {\n logger.checkAbstract(new.target, UrlJsonRpcProvider);\n\n // Normalize the Network and API Key\n network = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n apiKey = getStatic<(apiKey: string) => string>(new.target, \"getApiKey\")(apiKey);\n\n const connection = getStatic(new.target, \"getUrl\")(network, apiKey);\n\n super(connection, network);\n\n if (typeof(apiKey) === \"string\") {\n defineReadOnly(this, \"apiKey\", apiKey);\n } else if (apiKey != null) {\n Object.keys(apiKey).forEach((key) => {\n defineReadOnly(this, key, apiKey[key]);\n });\n }\n }\n\n _startPending(): void {\n logger.warn(\"WARNING: API provider does not support pending filters\");\n }\n\n isCommunityResource(): boolean {\n return false;\n }\n\n getSigner(address?: string): JsonRpcSigner {\n return logger.throwError(\n \"API provider does not support signing\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation: \"getSigner\" }\n );\n }\n\n listAccounts(): Promise> {\n return Promise.resolve([]);\n }\n\n // Return a defaultApiKey if null, otherwise validate the API key\n static getApiKey(apiKey: any): any {\n return apiKey;\n }\n\n // Returns the url or connection for the given network and API key. The\n // API key will have been sanitized by the getApiKey first, so any validation\n // or transformations can be done there.\n static getUrl(network: Network, apiKey: any): string | ConnectionInfo {\n return logger.throwError(\"not implemented; sub-classes must override getUrl\", Logger.errors.NOT_IMPLEMENTED, {\n operation: \"getUrl\"\n });\n }\n}\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n\nconst defaultProjectId = \"84842078b09946638c03157f83405213\"\n\nexport class InfuraWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n readonly projectId: string;\n readonly projectSecret: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new InfuraProvider(network, apiKey);\n const connection = provider.connection;\n if (connection.password) {\n logger.throwError(\"INFURA WebSocket project secrets unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"InfuraProvider.getWebSocketProvider()\"\n });\n }\n\n const url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n super(url, network);\n\n defineReadOnly(this, \"apiKey\", provider.projectId);\n defineReadOnly(this, \"projectId\", provider.projectId);\n defineReadOnly(this, \"projectSecret\", provider.projectSecret);\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n\nexport class InfuraProvider extends UrlJsonRpcProvider {\n readonly projectId: string;\n readonly projectSecret: string;\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): InfuraWebSocketProvider {\n return new InfuraWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { apiKey: string, projectId: string, projectSecret: string } = {\n apiKey: defaultProjectId,\n projectId: defaultProjectId,\n projectSecret: null\n };\n\n if (apiKey == null) { return apiKeyObj; }\n\n if (typeof(apiKey) === \"string\") {\n apiKeyObj.projectId = apiKey;\n\n } else if (apiKey.projectSecret != null) {\n logger.assertArgument((typeof(apiKey.projectId) === \"string\"),\n \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n logger.assertArgument((typeof(apiKey.projectSecret) === \"string\"),\n \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n\n apiKeyObj.projectId = apiKey.projectId;\n apiKeyObj.projectSecret = apiKey.projectSecret;\n\n } else if (apiKey.projectId) {\n apiKeyObj.projectId = apiKey.projectId;\n }\n\n apiKeyObj.apiKey = apiKeyObj.projectId;\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch(network ? network.name: \"unknown\") {\n case \"homestead\":\n host = \"mainnet.infura.io\";\n break;\n case \"goerli\":\n host = \"goerli.infura.io\";\n break;\n case \"sepolia\":\n host = \"sepolia.infura.io\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.infura.io\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.infura.io\";\n break;\n case \"optimism\":\n host = \"optimism-mainnet.infura.io\";\n break;\n case \"optimism-goerli\":\n host = \"optimism-goerli.infura.io\";\n break;\n case \"arbitrum\":\n host = \"arbitrum-mainnet.infura.io\";\n break;\n case \"arbitrum-goerli\":\n host = \"arbitrum-goerli.infura.io\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.projectId === defaultProjectId) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n","import { ethers } from 'ethers';\nimport { allNetworks } from './networks';\n\nconst { REACT_APP_INFURA_KEY } = process.env;\n\n// ethereum read-only provider configuration\nexport const ethChainId = allNetworks.eth.chainId;\n\nconst ethProvider = new ethers.providers.InfuraWebSocketProvider(\n ethChainId,\n REACT_APP_INFURA_KEY\n);\n\n// ambrosus read-only provider configuration\nexport const ambChainId = allNetworks.amb.chainId;\n\nexport const ambProvider = new ethers.providers.StaticJsonRpcProvider(\n allNetworks.amb.rpcUrl,\n ambChainId\n);\n\n// binance smart chain read-only provider configuration\nexport const bscChainId = allNetworks.bsc.chainId;\n\nexport const bscProvider = new ethers.providers.StaticJsonRpcProvider(\n allNetworks.bsc.rpcUrl,\n bscChainId\n);\n\nconst providers = {\n [ethChainId]: ethProvider,\n [ambChainId]: ambProvider,\n [bscChainId]: bscProvider,\n};\n\nexport default providers;\n","import { ambChainId, ethChainId } from './providers';\n\nexport const AMB = {\n name: 'Amber',\n symbol: 'AMB',\n denomination: 18,\n decimals: {\n [ambChainId]: 18,\n },\n chainId: ambChainId,\n wrappedAnalog: 'SAMB2',\n primaryNets: [ambChainId],\n};\n\nexport const ETH = {\n name: 'Ethereum',\n symbol: 'ETH',\n denomination: 18,\n decimals: {\n [ethChainId]: 18,\n },\n chainId: ethChainId,\n wrappedAnalog: 'WETH',\n primaryNets: [ethChainId],\n balance: '',\n};\n\n// const BNB = {\n// name: 'BNB',\n// symbol: 'BNB',\n// denomination: 18,\n// decimals: {\n// [bscChainId]: 18,\n// },\n// chainId: bscChainId,\n// wrappedAnalog: 'WBNB',\n// primaryNets: [bscChainId],\n// balance: '',\n// };\n\nexport const nativeTokens = [AMB, ETH];\n\nexport const nativeTokensById = {\n [ambChainId]: AMB,\n [ethChainId]: ETH,\n // [bscChainId]: BNB,\n};\n","import { BigNumber } from 'ethers';\nimport { allNetworks } from '../networks';\nimport { nativeTokensById } from '../nativeTokens';\n\nconst handleTransferredTokens = (withDrawArgs, tokens, getLogo) => {\n const transTokens = { from: '', to: '', denomination: null };\n\n const fromChainId = allNetworks[withDrawArgs.networkFrom].chainId;\n const toChainId = allNetworks[withDrawArgs.networkTo].chainId;\n\n if (BigNumber.from(0).eq(withDrawArgs.tokenFrom)) {\n const token = nativeTokensById[fromChainId];\n transTokens.from = token[getLogo ? 'logo' : 'symbol'];\n transTokens.denomination = token.denomination;\n } else {\n const token = findTokenByAddress(\n withDrawArgs.tokenFrom,\n tokens,\n fromChainId\n );\n transTokens.from = token[getLogo ? 'logo' : 'symbol'];\n transTokens.denomination = token.denomination;\n }\n if (BigNumber.from(0).eq(withDrawArgs.tokenTo)) {\n const token = nativeTokensById[toChainId];\n transTokens.to = token[getLogo ? 'logo' : 'symbol'];\n } else {\n transTokens.to = findTokenByAddress(\n withDrawArgs.tokenTo,\n tokens,\n toChainId\n )[getLogo ? 'logo' : 'symbol'];\n }\n return transTokens;\n};\n\nconst findTokenByAddress = (address, tokens, chainId) => {\n const list = Object.values(tokens[chainId]);\n return list.find((el) => el.address.toLowerCase() === address.toLowerCase());\n};\nexport default handleTransferredTokens;\n","import React from 'react';\n\nconst ConfigContext = React.createContext({});\n\nexport default ConfigContext;\n","import { useContext } from 'react';\nimport ConfigContext from '../contexts/ConfigContext/context';\n\nconst useTokens = () => {\n const { tokens } = useContext(ConfigContext);\n return tokens;\n};\n\nexport default useTokens;\n","import React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router';\nimport { useParams } from 'react-router-dom';\nimport arrow from '../assets/svg/arrow-right.svg';\nimport { Helmet } from 'react-helmet';\nimport { Button, Loader } from '@airdao/ui-library';\nimport check from '../assets/svg/status-check.svg';\nimport NetworkOrTokenIcon from '../components/NetworkOrTokenIcon';\nimport getTransferredTokens from '../utils/helpers/getTransferredTokens';\nimport { allNetworks } from '../utils/networks';\nimport useTokens from '../hooks/useTokens';\n\nconst Status = () => {\n const { txHash } = useParams();\n const history = useHistory();\n const tokens = useTokens();\n\n const [networks, setNetworks] = useState({ from: null, to: null });\n const [stage, setStage] = useState('1.1');\n const [confirmations, setConfirmations] = useState(0);\n const [otherNetworkTxHash, setOtherNetworkTxHash] = useState(null);\n const [minSafetyBlocks, setMinSafetyBlocks] = useState(0);\n const [transferredTokens, setTransferredTokens] = useState({\n from: '',\n to: '',\n });\n const [amount, setAmount] = useState(null);\n\n useEffect(() => {\n (async () => {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n try {\n await new Promise((resolve, reject) => {\n const ws = new WebSocket(\n `wss://${process.env.REACT_APP_BACKEND_DOMAIN}/ws/txStatus?txHash=${txHash}`\n );\n\n ws.onmessage = async (event) => {\n const { data } = event;\n const {\n status,\n networkFrom,\n networkTo,\n tokenFrom,\n tokenTo,\n confirmations,\n minSafetyBlocks,\n finishTxHash,\n denominatedAmount,\n } = JSON.parse(data);\n\n const stage = ['1.1', '2.1', '2.2', '3.1', '3.1', '4'][status];\n setStage(stage);\n\n if (status < 1) return; // status 1 doesn't have data used below\n setAmount(denominatedAmount);\n setNetworks({ from: networkFrom, to: networkTo });\n setTransferredTokens(\n getTransferredTokens(\n { tokenFrom, tokenTo, networkFrom, networkTo },\n tokens\n )\n );\n setMinSafetyBlocks(minSafetyBlocks);\n setOtherNetworkTxHash(finishTxHash || null); // code below check for null, undefined will cause error\n\n if (status < 2) return;\n setConfirmations(confirmations);\n\n if (status === 5) {\n ws.close();\n resolve();\n }\n };\n\n ws.onerror = (error) => reject(error);\n ws.onclose = () => reject('WebSocket closed unexpectedly');\n });\n break;\n } catch (e) {\n await new Promise((resolve) => setTimeout(resolve, 500)); // sleep 0.5s\n console.error(e);\n }\n }\n })();\n }, [txHash]);\n const goHome = () => history.push('/');\n\n const renderStatus = (stageNum) => {\n if (+stage === stageNum) {\n return (\n \n Pending\n \n );\n } else if (+stage < stageNum) {\n return Not started;\n } else {\n return (\n \n Completed\n \n );\n }\n };\n\n const formatHash = (hash) => {\n return `${hash.substring(0, 7)}...${hash.substring(\n hash.length - 7,\n hash.length\n )}`;\n };\n\n const back = (e) => {\n e.preventDefault();\n history.push('/');\n };\n\n return (\n
\n \n \n \n \n {+stage > 3.1 ? (\n <>\n check\n

\n You’ve successfully bridged {amount} {transferredTokens.from} to{' '}\n {allNetworks[networks.to]?.name} chain!\n

\n \n ) : (\n <>\n \n

\n Moving {amount} {transferredTokens.from} to{' '}\n {allNetworks[networks.to]?.name}\n

\n

\n Your transfer is progress and will be completed in 1-24 hours. Your\n token balance will be automatically updated once completed.\n

\n \n )}\n
\n
\n \n
\n arrow\n
\n
\n

Destination network

\n
\n \n

\n {allNetworks[networks.to]?.name}\n

\n
\n {otherNetworkTxHash ? (\n

\n TxHash\n \n {formatHash(otherNetworkTxHash)}\n \n

\n ) : (\n

Tx not started yet

\n )}\n
\n
\n
\n
\n STAGE 1\n Processing transaction\n {renderStatus(1.1)}\n
\n
\n STAGE 2\n Waiting for approval\n {renderStatus(2.1)}\n
\n
\n \n Confirmations\n \n {confirmations}/{minSafetyBlocks}\n \n
\n
\n STAGE 3\n Processing transaction\n {renderStatus(3.1)}\n
\n {+stage > 3.1 && (\n \n Close\n \n )}\n
\n );\n};\n\nexport default Status;\n","var _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgExchangeSwapButton(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 49,\n viewBox: \"0 0 48 49\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 48,\n y: 0.589844,\n width: 48,\n height: 48,\n rx: 24,\n transform: \"rotate(90 48 0.589844)\",\n fill: \"#0E0E0E\",\n fillOpacity: 0.05\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.2777 29.4292C17.1083 29.2918 17 29.0747 17 28.8398C16.999 28.6469 17.0723 28.4602 17.2197 28.313L20.228 25.3092C20.5209 25.0167 20.9957 25.0167 21.2886 25.3092C21.5815 25.6016 21.5815 26.0758 21.2886 26.3683L19.5559 28.0898L30.25 28.0898C30.6642 28.0898 31 28.4262 31 28.8398C31 29.2534 30.6642 29.5898 30.25 29.5898L19.5664 29.5898L21.2841 31.3114C21.577 31.6039 21.577 32.078 21.2841 32.3705C20.9912 32.663 20.5163 32.663 20.2235 32.3705L17.2777 29.4292ZM30.7222 20.9292C30.8917 20.7918 31 20.5747 31 20.3398C31.001 20.1469 30.9277 19.9602 30.7803 19.813L27.772 16.8092C27.4791 16.5167 27.0043 16.5167 26.7114 16.8092C26.4185 17.1016 26.4185 17.5758 26.7114 17.8683L28.4441 19.5898L17.75 19.5898C17.3358 19.5898 17 19.9262 17 20.3398C17 20.7534 17.3358 21.0898 17.75 21.0898L28.4336 21.0898L26.7159 22.8114C26.423 23.1039 26.423 23.578 26.7159 23.8705C27.0088 24.163 27.4836 24.163 27.7765 23.8705L30.7222 20.9292Z\",\n fill: \"#0E0E0E\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgExchangeSwapButton);\nexport default __webpack_public_path__ + \"static/media/exchange__swap-button.7b85584374ea58b2dec6ae001ee4e5f5.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgHistory(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_1200_1091)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.25 10C17.25 5.99594 14.0041 2.75 10 2.75C8.33789 2.75 6.80642 3.30932 5.58352 4.25H6.25C6.80228 4.25 7.25 4.69772 7.25 5.25C7.25 5.80228 6.80228 6.25 6.25 6.25H3.25C2.69772 6.25 2.25 5.80228 2.25 5.25V5H2.21647L2.25 4.94829V2.25C2.25 1.69772 2.69772 1.25 3.25 1.25C3.80228 1.25 4.25 1.69772 4.25 2.25V2.75385C5.82875 1.49939 7.82686 0.75 10 0.75C15.1086 0.75 19.25 4.89137 19.25 10C19.25 15.1086 15.1086 19.25 10 19.25C4.89137 19.25 0.75 15.1086 0.75 10C0.75 9.61743 0.773224 9.24029 0.81834 8.8699C0.880688 8.35807 1.33398 8 1.8496 8C2.44068 8 2.86674 8.5685 2.79864 9.15565C2.76652 9.43264 2.75 9.71439 2.75 10C2.75 14.0041 5.99594 17.25 10 17.25C14.0041 17.25 17.25 14.0041 17.25 10ZM11 6C11 5.44772 10.5523 5 10 5C9.44771 5 9 5.44772 9 6V11C9 11.5523 9.44771 12 10 12H13C13.5523 12 14 11.5523 14 11C14 10.4477 13.5523 10 13 10H11V6Z\",\n fill: \"#0E0E0E\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_1200_1091\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 20,\n height: 20,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgHistory);\nexport default __webpack_public_path__ + \"static/media/history.f5b7210d6b599d1f754c0261d6ee34d2.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\n\nconst InlineLoader = () => (\n
\n
\n
\n
\n
\n
\n);\n\nexport default InlineLoader;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgChevron(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 6L8 10L12 6\",\n stroke: \"#808A9D\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgChevron);\nexport default __webpack_public_path__ + \"static/media/chevron.0bb5624b9fee0ac21ed74384136448a8.svg\";\nexport { ForwardRef as ReactComponent };","import { useEffect } from 'react';\n\nfunction useOnClickOutside(ref, handler) {\n useEffect(\n () => {\n const listener = (event) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n handler(event);\n };\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n },\n // Add ref and handler to effect dependencies\n // It's worth noting that because passed in handler is a new ...\n // ... function on every render that will cause this effect ...\n // ... callback/cleanup to run every render. It's not a big deal ...\n // ... but to optimize you can wrap handler in useCallback before ...\n // ... passing it into this hook.\n [ref, handler]\n );\n}\n\nexport default useOnClickOutside;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgSelected(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 2C14.4183 2 18 5.58172 18 10C18 14.4183 14.4183 18 10 18C5.58172 18 2 14.4183 2 10C2 5.58172 5.58172 2 10 2ZM13.3584 7.64645C13.1849 7.47288 12.9154 7.4536 12.7206 7.58859L12.6513 7.64645L9 11.298L7.35355 9.65131L7.28431 9.59346C7.08944 9.45846 6.82001 9.47775 6.64645 9.65131C6.47288 9.82488 6.4536 10.0943 6.58859 10.2892L6.64645 10.3584L8.64645 12.3584L8.71569 12.4163C8.8862 12.5344 9.1138 12.5344 9.28431 12.4163L9.35355 12.3584L13.3584 8.35355L13.4163 8.28431C13.5513 8.08944 13.532 7.82001 13.3584 7.64645Z\",\n fill: \"#2DBA8D\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSelected);\nexport default __webpack_public_path__ + \"static/media/selected.03614043af9f5ed8faecc275e57cfabd.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport useClickOutside from '../../hooks/useClickOutside';\nimport selected from '../../assets/svg/selected.svg';\n\nconst Dropdown = ({\n options,\n handleClose,\n handleSelect,\n selectedOption,\n alignLeft = false,\n}) => {\n const ref = useRef();\n\n useClickOutside(ref, handleClose);\n\n const select = (value) => {\n handleSelect(value);\n handleClose();\n };\n\n return (\n
\n {options.map(({ name = '', value, code, icon }) => (\n select(value)}\n >\n {icon}\n {code}\n {name}\n {selectedOption === value && (\n selected\n )}\n \n ))}\n
\n );\n};\n\nDropdown.propTypes = {\n options: PropTypes.array,\n handleClose: PropTypes.func,\n handleSelect: PropTypes.func,\n selectedOption: PropTypes.any,\n alignLeft: PropTypes.bool,\n};\n\nexport default Dropdown;\n","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport ChevronIcon from '../../assets/svg/chevron.svg';\nimport NetworkOrTokenIcon from '../../components/NetworkOrTokenIcon';\nimport Dropdown from './Dropdown';\n\nconst NetworkSelect = ({\n networks = [{}],\n setChainId = () => {},\n selectedChainId = 0,\n isLoggedIn,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleOpen = () => setIsOpen((state) => !state);\n\n const selectedNetwork = useMemo(() => {\n return networks.find(({ chainId }) => chainId === selectedChainId);\n }, [selectedChainId, networks]);\n\n const formattedOptions = useMemo(() => {\n return networks.map(({ code, chainId, name }) => ({\n icon: (\n \n ),\n value: chainId,\n code,\n name,\n }));\n }, [networks]);\n\n return (\n
\n \n \n \n {isLoggedIn ? selectedNetwork?.name : 'AMB-NET'}\n \n {networks.length !== 1 && (\n \n )}\n
\n {networks.length !== 1 && isOpen && (\n setIsOpen(false)}\n handleSelect={setChainId}\n selectedOption={selectedChainId}\n />\n )}\n
\n );\n};\n\nNetworkSelect.propTypes = {\n networks: PropTypes.arrayOf(PropTypes.object),\n setChainId: PropTypes.func,\n selectedChainId: PropTypes.number,\n isLoggedIn: PropTypes.bool,\n};\n\nexport default NetworkSelect;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport NetworkSelect from './NetworkSelect';\n\nconst ExchangeField = ({\n networks = [{}],\n setChainId = () => {},\n chainId = 0,\n isLoggedIn,\n}) => {\n return (\n
\n \n Source network\n \n \n
\n );\n};\n\nExchangeField.propTypes = {\n networks: PropTypes.arrayOf(PropTypes.object),\n setChainId: PropTypes.func,\n chainId: PropTypes.number,\n isLoggedIn: PropTypes.bool,\n};\n\nexport default ExchangeField;\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BigNumber, BigNumberish, isBigNumberish } from \"./bignumber\";\n\nconst _constructorGuard = { };\n\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\n\nfunction throwFault(message: string, fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value !== undefined) { params.value = value; }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) { zeros += zeros; }\n\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals: BigNumberish): string {\n\n if (typeof(decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n } catch (e) { }\n }\n\n if (typeof(decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\n\nexport function formatFixed(value: BigNumberish, decimals?: string | BigNumberish): string {\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n\n const negative = value.lt(Zero);\n if (negative) { value = value.mul(NegativeOne); }\n\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) { fraction = \"0\" + fraction; }\n\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n } else {\n value = whole + \".\" + fraction;\n }\n\n if (negative) { value = \"-\" + value; }\n\n return value;\n}\n\nexport function parseFixed(value: string, decimals?: BigNumberish): BigNumber {\n\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n if (typeof(value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) { value = value.substring(1); }\n\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n\n let whole = comps[0], fraction = comps[1];\n if (!whole) { whole = \"0\"; }\n if (!fraction) { fraction = \"0\"; }\n\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") { fraction = \"0\"; }\n\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) { fraction += \"0\"; }\n\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n\n if (negative) { wei = wei.mul(NegativeOne); }\n\n return wei;\n}\n\n\nexport class FixedFormat {\n readonly signed: boolean;\n readonly width: number;\n readonly decimals: number;\n readonly name: string;\n readonly _multiplier: string;\n\n constructor(constructorGuard: any, signed: boolean, width: number, decimals: number) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n\n this.name = (signed ? \"\": \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n\n this._multiplier = getMultiplier(decimals);\n\n Object.freeze(this);\n }\n\n static from(value: any): FixedFormat {\n if (value instanceof FixedFormat) { return value; }\n\n if (typeof(value) === \"number\") {\n value = `fixed128x${value}`\n }\n\n let signed = true;\n let width = 128;\n let decimals = 18;\n\n if (typeof(value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n } else if (value === \"ufixed\") {\n signed = false;\n } else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) { logger.throwArgumentError(\"invalid fixed format\", \"format\", value); }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n } else if (value) {\n const check = (key: string, type: string, defaultValue: any): any => {\n if (value[key] == null) { return defaultValue; }\n if (typeof(value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type +\")\", \"format.\" + key, value[key]);\n }\n return value[key];\n }\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\n\nexport class FixedNumber {\n readonly format: FixedFormat;\n readonly _hex: string;\n readonly _value: string;\n\n readonly _isFixedNumber: boolean;\n\n constructor(constructorGuard: any, hex: string, value: string, format?: FixedFormat) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.format = format;\n this._hex = hex;\n this._value = value;\n\n this._isFixedNumber = true;\n\n Object.freeze(this);\n }\n\n _checkFormat(other: FixedNumber): void {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n\n addUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n\n subUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n\n mulUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n\n divUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n\n floor(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n ceiling(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n // @TODO: Support other rounding algorithms\n round(decimals?: number): FixedNumber {\n if (decimals == null) { decimals = 0; }\n\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n\n if (comps[1].length <= decimals) { return this; }\n\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n\n isZero(): boolean {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n\n isNegative(): boolean {\n return (this._value[0] === \"-\");\n }\n\n toString(): string { return this._value; }\n\n toHexString(width?: number): string {\n if (width == null) { return this._hex; }\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n\n toUnsafeFloat(): number { return parseFloat(this.toString()); }\n\n toFormat(format: FixedFormat | string): FixedNumber {\n return FixedNumber.fromString(this._value, format);\n }\n\n\n static fromValue(value: BigNumber, decimals?: BigNumberish, format?: FixedFormat | string | number): FixedNumber {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n\n if (decimals == null) { decimals = 0; }\n if (format == null) { format = \"fixed\"; }\n\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n\n\n static fromString(value: string, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n const numeric = parseFixed(value, fixedFormat.decimals);\n\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n\n let hex: string = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n } else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static fromBytes(value: BytesLike, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) { numeric = numeric.fromTwos(fixedFormat.width); }\n\n const hex = numeric.toTwos((fixedFormat.signed ? 0: 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static from(value: any, format?: FixedFormat | string | number) {\n if (typeof(value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n\n try {\n return FixedNumber.fromValue(value, 0, format);\n } catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n\n static isFixedNumber(value: any): value is FixedNumber {\n return !!(value && value._isFixedNumber);\n }\n}\n\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { formatFixed, parseFixed } from \"@ethersproject/bignumber\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\n\n\n// Some environments have issues with RegEx that contain back-tracking, so we cannot\n// use them.\nexport function commify(value: string | number): string {\n const comps = String(value).split(\".\");\n\n if (comps.length > 2 || !comps[0].match(/^-?[0-9]*$/) || (comps[1] && !comps[1].match(/^[0-9]*$/)) || value === \".\" || value === \"-.\") {\n logger.throwArgumentError(\"invalid value\", \"value\", value);\n }\n\n // Make sure we have at least one whole digit (0 if none)\n let whole = comps[0];\n\n let negative = \"\";\n if (whole.substring(0, 1) === \"-\") {\n negative = \"-\";\n whole = whole.substring(1);\n }\n\n // Make sure we have at least 1 whole digit with no leading zeros\n while (whole.substring(0, 1) === \"0\") { whole = whole.substring(1); }\n if (whole === \"\") { whole = \"0\"; }\n\n let suffix = \"\";\n if (comps.length === 2) { suffix = \".\" + (comps[1] || \"0\"); }\n while (suffix.length > 2 && suffix[suffix.length - 1] === \"0\") {\n suffix = suffix.substring(0, suffix.length - 1);\n }\n\n const formatted = [];\n while (whole.length) {\n if (whole.length <= 3) {\n formatted.unshift(whole);\n break;\n } else {\n const index = whole.length - 3;\n formatted.unshift(whole.substring(index));\n whole = whole.substring(0, index);\n }\n }\n\n return negative + formatted.join(\",\") + suffix;\n}\n\nexport function formatUnits(value: BigNumberish, unitName?: string | BigNumberish): string {\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return formatFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function parseUnits(value: string, unitName?: BigNumberish): BigNumber {\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return parseFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function formatEther(wei: BigNumberish): string {\n return formatUnits(wei, 18);\n}\n\nexport function parseEther(ether: string): BigNumber {\n return parseUnits(ether, 18);\n}\n\n","export const version = \"units/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.7.0\";\n","export const version = \"abi/5.7.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexConcat, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nexport interface Result extends ReadonlyArray {\n readonly [key: string]: any;\n}\n\nexport function checkResultErrors(result: Result): Array<{ path: Array, error: Error }> {\n // Find the first error (if any)\n const errors: Array<{ path: Array, error: Error }> = [ ];\n\n const checkErrors = function(path: Array, object: any): void {\n if (!Array.isArray(object)) { return; }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n\n try {\n checkErrors(childPath, object[key]);\n } catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n }\n checkErrors([ ], result);\n\n return errors;\n\n}\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport abstract class Coder {\n\n // The coder name:\n // - address, uint256, tuple, array, etc.\n readonly name: string;\n\n // The fully expanded type, including composite types:\n // - address, uint256, tuple(address,bytes), uint256[3][4][], etc.\n readonly type: string;\n\n // The localName bound in the signature, in this example it is \"baz\":\n // - tuple(address foo, uint bar) baz\n readonly localName: string;\n\n // Whether this type is dynamic:\n // - Dynamic: bytes, string, address[], tuple(boolean[]), etc.\n // - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)\n readonly dynamic: boolean;\n\n constructor(name: string, type: string, localName: string, dynamic: boolean) {\n // @TODO: defineReadOnly these\n this.name = name;\n this.type = type;\n this.localName = localName;\n this.dynamic = dynamic;\n }\n\n _throwError(message: string, value: any): void {\n logger.throwArgumentError(message, this.localName, value);\n }\n\n abstract encode(writer: Writer, value: any): number;\n abstract decode(reader: Reader): any;\n\n abstract defaultValue(): any;\n}\n\nexport class Writer {\n readonly wordSize: number;\n\n _data: Array;\n _dataLength: number;\n _padding: Uint8Array;\n\n constructor(wordSize?: number) {\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n this._data = [ ];\n this._dataLength = 0;\n this._padding = new Uint8Array(wordSize);\n }\n\n get data(): string {\n return hexConcat(this._data);\n }\n get length(): number { return this._dataLength; }\n\n _writeData(data: Uint8Array): number {\n this._data.push(data);\n this._dataLength += data.length;\n return data.length;\n }\n\n appendWriter(writer: Writer): number {\n return this._writeData(concat(writer._data));\n }\n\n // Arrayish items; padded on the right to wordSize\n writeBytes(value: BytesLike): number {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % this.wordSize;\n if (paddingOffset) {\n bytes = concat([ bytes, this._padding.slice(paddingOffset) ])\n }\n return this._writeData(bytes);\n }\n\n _getValue(value: BigNumberish): Uint8Array {\n let bytes = arrayify(BigNumber.from(value));\n if (bytes.length > this.wordSize) {\n logger.throwError(\"value out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this.wordSize,\n offset: bytes.length\n });\n }\n if (bytes.length % this.wordSize) {\n bytes = concat([ this._padding.slice(bytes.length % this.wordSize), bytes ]);\n }\n return bytes;\n }\n\n // BigNumberish items; padded on the left to wordSize\n writeValue(value: BigNumberish): number {\n return this._writeData(this._getValue(value));\n }\n\n writeUpdatableValue(): (value: BigNumberish) => void {\n const offset = this._data.length;\n this._data.push(this._padding);\n this._dataLength += this.wordSize;\n return (value: BigNumberish) => {\n this._data[offset] = this._getValue(value);\n };\n }\n}\n\nexport class Reader {\n readonly wordSize: number;\n readonly allowLoose: boolean;\n\n readonly _data: Uint8Array;\n readonly _coerceFunc: CoerceFunc;\n\n _offset: number;\n\n constructor(data: BytesLike, wordSize?: number, coerceFunc?: CoerceFunc, allowLoose?: boolean) {\n defineReadOnly(this, \"_data\", arrayify(data));\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n defineReadOnly(this, \"_coerceFunc\", coerceFunc);\n defineReadOnly(this, \"allowLoose\", allowLoose);\n\n this._offset = 0;\n }\n\n get data(): string { return hexlify(this._data); }\n get consumed(): number { return this._offset; }\n\n // The default Coerce function\n static coerce(name: string, value: any): any {\n let match = name.match(\"^u?int([0-9]+)$\");\n if (match && parseInt(match[1]) <= 48) { value = value.toNumber(); }\n return value;\n }\n\n coerce(name: string, value: any): any {\n if (this._coerceFunc) { return this._coerceFunc(name, value); }\n return Reader.coerce(name, value);\n }\n\n _peekBytes(offset: number, length: number, loose?: boolean): Uint8Array {\n let alignedLength = Math.ceil(length / this.wordSize) * this.wordSize;\n if (this._offset + alignedLength > this._data.length) {\n if (this.allowLoose && loose && this._offset + length <= this._data.length) {\n alignedLength = length;\n } else {\n logger.throwError(\"data out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this._data.length,\n offset: this._offset + alignedLength\n });\n }\n }\n return this._data.slice(this._offset, this._offset + alignedLength)\n }\n\n subReader(offset: number): Reader {\n return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);\n }\n\n readBytes(length: number, loose?: boolean): Uint8Array {\n let bytes = this._peekBytes(0, length, !!loose);\n this._offset += bytes.length;\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n\n readValue(): BigNumber {\n return BigNumber.from(this.readBytes(this.wordSize));\n }\n}\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { hexZeroPad } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class AddressCoder extends Coder {\n\n constructor(localName: string) {\n super(\"address\", \"address\", localName, false);\n }\n\n defaultValue(): string {\n return \"0x0000000000000000000000000000000000000000\";\n }\n\n encode(writer: Writer, value: string): number {\n try {\n value = getAddress(value)\n } catch (error) {\n this._throwError(error.message, value);\n }\n return writer.writeValue(value);\n }\n\n decode(reader: Reader): any {\n return getAddress(hexZeroPad(reader.readValue().toHexString(), 20));\n }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n private coder: Coder;\n\n constructor(coder: Coder) {\n super(coder.name, coder.type, undefined, coder.dynamic);\n this.coder = coder;\n }\n\n defaultValue(): any {\n return this.coder.defaultValue();\n }\n\n encode(writer: Writer, value: any): number {\n return this.coder.encode(writer, value);\n }\n\n decode(reader: Reader): any {\n return this.coder.decode(reader);\n }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./abstract-coder\";\nimport { AnonymousCoder } from \"./anonymous\";\n\nexport function pack(writer: Writer, coders: ReadonlyArray, values: Array | { [ name: string ]: any }): number {\n let arrayValues: Array = null;\n\n if (Array.isArray(values)) {\n arrayValues = values;\n\n } else if (values && typeof(values) === \"object\") {\n let unique: { [ name: string ]: boolean } = { };\n\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n unique[name] = true;\n\n return values[name];\n });\n\n } else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n\n let staticWriter = new Writer(writer.wordSize);\n let dynamicWriter = new Writer(writer.wordSize);\n\n let updateFuncs: Array<(baseOffset: number) => void> = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset: number) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n\n } else {\n coder.encode(staticWriter, value);\n }\n });\n\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\n\nexport function unpack(reader: Reader, coders: Array): Result {\n let values: any = [];\n\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n\n coders.forEach((coder) => {\n let value: any = null;\n\n if (coder.dynamic) {\n let offset = reader.readValue();\n let offsetReader = baseReader.subReader(offset.toNumber());\n try {\n value = coder.decode(offsetReader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n\n } else {\n try {\n value = coder.decode(reader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n\n if (value != undefined) {\n values.push(value);\n }\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add any named parameters (i.e. tuples)\n coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n const value = values[index];\n\n if (value instanceof Error) {\n Object.defineProperty(values, name, {\n enumerable: true,\n get: () => { throw value; }\n });\n } else {\n values[name] = value;\n }\n });\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n if (value instanceof Error) {\n Object.defineProperty(values, i, {\n enumerable: true,\n get: () => { throw value; }\n });\n }\n }\n\n return Object.freeze(values);\n}\n\n\nexport class ArrayCoder extends Coder {\n readonly coder: Coder;\n readonly length: number;\n\n constructor(coder: Coder, length: number, localName: string) {\n const type = (coder.type + \"[\" + (length >= 0 ? length: \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n\n this.coder = coder;\n this.length = length;\n }\n\n defaultValue(): Array {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n\n const result: Array = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n\n encode(writer: Writer, value: Array): number {\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n\n let count = this.length;\n\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n\n logger.checkArgumentCount(value.length, count, \"coder array\" + (this.localName? (\" \"+ this.localName): \"\"));\n\n let coders = [];\n for (let i = 0; i < value.length; i++) { coders.push(this.coder); }\n\n return pack(writer, coders, value);\n }\n\n decode(reader: Reader): any {\n let count = this.length;\n if (count === -1) {\n count = reader.readValue().toNumber();\n\n // Check that there is *roughly* enough data to ensure\n // stray random data is not being read as a length. Each\n // slot requires at least 32 bytes for their value (or 32\n // bytes as a link to the data). This could use a much\n // tighter bound, but we are erroring on the side of safety.\n if (count * 32 > reader._data.length) {\n logger.throwError(\"insufficient data length\", Logger.errors.BUFFER_OVERRUN, {\n length: reader._data.length,\n count: count\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) { coders.push(new AnonymousCoder(this.coder)); }\n\n return reader.coerce(this.name, unpack(reader, coders));\n }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class BooleanCoder extends Coder {\n\n constructor(localName: string) {\n super(\"bool\", \"bool\", localName, false);\n }\n\n defaultValue(): boolean {\n return false;\n }\n\n encode(writer: Writer, value: boolean): number {\n return writer.writeValue(value ? 1: 0);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.type, !reader.readValue().isZero());\n }\n}\n\n","\"use strict\";\n\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class DynamicBytesCoder extends Coder {\n constructor(type: string, localName: string) {\n super(type, type, localName, true);\n }\n\n defaultValue(): string {\n return \"0x\";\n }\n\n encode(writer: Writer, value: any): number {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n\n decode(reader: Reader): any {\n return reader.readBytes(reader.readValue().toNumber(), true);\n }\n}\n\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName: string) {\n super(\"bytes\", localName);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(super.decode(reader)));\n }\n}\n\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// @TODO: Merge this with bytes\nexport class FixedBytesCoder extends Coder {\n readonly size: number;\n\n constructor(size: number, localName: string) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n this.size = size;\n }\n\n defaultValue(): string {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n\n encode(writer: Writer, value: BytesLike): number {\n let data = arrayify(value);\n if (data.length !== this.size) { this._throwError(\"incorrect data length\", value); }\n return writer.writeBytes(data);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(reader.readBytes(this.size)));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NullCoder extends Coder {\n\n constructor(localName: string) {\n super(\"null\", \"\", localName, false);\n }\n\n defaultValue(): null {\n return null;\n }\n\n encode(writer: Writer, value: any): number {\n if (value != null) { this._throwError(\"not null\", value); }\n return writer.writeBytes([ ]);\n }\n\n decode(reader: Reader): any {\n reader.readBytes(0);\n return reader.coerce(this.name, null);\n }\n}\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { MaxUint256, NegativeOne, One, Zero } from \"@ethersproject/constants\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NumberCoder extends Coder {\n readonly size: number;\n readonly signed: boolean;\n\n constructor(size: number, signed: boolean, localName: string) {\n const name = ((signed ? \"int\": \"uint\") + (size * 8));\n super(name, name, localName, false);\n\n this.size = size;\n this.signed = signed;\n }\n\n defaultValue(): number {\n return 0;\n }\n\n encode(writer: Writer, value: BigNumberish): number {\n let v = BigNumber.from(value);\n\n // Check bounds are safe for encoding\n let maxUintValue = MaxUint256.mask(writer.wordSize * 8);\n if (this.signed) {\n let bounds = maxUintValue.mask(this.size * 8 - 1);\n if (v.gt(bounds) || v.lt(bounds.add(One).mul(NegativeOne))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n } else if (v.lt(Zero) || v.gt(maxUintValue.mask(this.size * 8))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n\n v = v.toTwos(this.size * 8).mask(this.size * 8);\n\n if (this.signed) {\n v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);\n }\n\n return writer.writeValue(v);\n }\n\n decode(reader: Reader): any {\n let value = reader.readValue().mask(this.size * 8);\n\n if (this.signed) {\n value = value.fromTwos(this.size * 8);\n }\n\n return reader.coerce(this.name, value);\n }\n}\n\n","\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Reader, Writer } from \"./abstract-coder\";\nimport { DynamicBytesCoder } from \"./bytes\";\n\nexport class StringCoder extends DynamicBytesCoder {\n\n constructor(localName: string) {\n super(\"string\", localName);\n }\n\n defaultValue(): string {\n return \"\";\n }\n\n encode(writer: Writer, value: any): number {\n return super.encode(writer, toUtf8Bytes(value));\n }\n\n decode(reader: Reader): any {\n return toUtf8String(super.decode(reader));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\nimport { pack, unpack } from \"./array\";\n\nexport class TupleCoder extends Coder {\n readonly coders: Array;\n\n constructor(coders: Array, localName: string) {\n let dynamic = false;\n const types: Array = [];\n coders.forEach((coder) => {\n if (coder.dynamic) { dynamic = true; }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n\n super(\"tuple\", type, localName, dynamic);\n this.coders = coders;\n }\n\n defaultValue(): any {\n const values: any = [ ];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = this.coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add named values\n this.coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n values[name] = values[index];\n });\n\n return Object.freeze(values);\n }\n\n encode(writer: Writer, value: Array | { [ name: string ]: any }): number {\n return pack(writer, this.coders, value);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, unpack(reader, this.coders));\n }\n}\n\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport interface JsonFragmentType {\n readonly name?: string;\n readonly indexed?: boolean;\n readonly type?: string;\n readonly internalType?: any; // @TODO: in v6 reduce type\n readonly components?: ReadonlyArray;\n}\n\nexport interface JsonFragment {\n readonly name?: string;\n readonly type?: string;\n\n readonly anonymous?: boolean;\n\n readonly payable?: boolean;\n readonly constant?: boolean;\n readonly stateMutability?: string;\n\n readonly inputs?: ReadonlyArray;\n readonly outputs?: ReadonlyArray;\n\n readonly gas?: string;\n};\n\nconst _constructorGuard = { };\n\n// AST Node parser state\ntype ParseState = {\n allowArray?: boolean,\n allowName?: boolean,\n allowParams?: boolean,\n allowType?: boolean,\n readArray?: boolean,\n};\n\n// AST Node\ntype ParseNode = {\n parent?: any,\n type?: string,\n name?: string,\n state?: ParseState,\n indexed?: boolean,\n components?: Array\n};\n\nlet ModifiersBytes: { [ name: string ]: boolean } = { calldata: true, memory: true, storage: true };\nlet ModifiersNest: { [ name: string ]: boolean } = { calldata: true, memory: true };\nfunction checkModifier(type: string, name: string): boolean {\n if (type === \"bytes\" || type === \"string\") {\n if (ModifiersBytes[name]) { return true; }\n } else if (type === \"address\") {\n if (name === \"payable\") { return true; }\n } else if (type.indexOf(\"[\") >= 0 || type === \"tuple\") {\n if (ModifiersNest[name]) { return true; }\n }\n if (ModifiersBytes[name] || name === \"payable\") {\n logger.throwArgumentError(\"invalid modifier\", \"name\", name);\n }\n return false;\n}\n\n// @TODO: Make sure that children of an indexed tuple are marked with a null indexed\nfunction parseParamType(param: string, allowIndexed: boolean): ParseNode {\n\n let originalParam = param;\n function throwError(i: number) {\n logger.throwArgumentError(`unexpected character at position ${ i }`, \"param\", param);\n }\n param = param.replace(/\\s/g, \" \");\n\n function newNode(parent: ParseNode): ParseNode {\n let node: ParseNode = { type: \"\", name: \"\", parent: parent, state: { allowType: true } };\n if (allowIndexed) { node.indexed = false; }\n return node\n }\n\n let parent: ParseNode = { type: \"\", name: \"\", state: { allowType: true } };\n let node = parent;\n\n for (let i = 0; i < param.length; i++) {\n let c = param[i];\n switch (c) {\n case \"(\":\n if (node.state.allowType && node.type === \"\") {\n node.type = \"tuple\";\n } else if (!node.state.allowParams) {\n throwError(i);\n }\n node.state.allowType = false;\n node.type = verifyType(node.type);\n node.components = [ newNode(node) ];\n node = node.components[0];\n break;\n\n case \")\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let child = node;\n node = node.parent;\n if (!node) { throwError(i); }\n delete child.parent;\n node.state.allowParams = false;\n node.state.allowName = true;\n node.state.allowArray = true;\n break;\n\n case \",\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let sibling: ParseNode = newNode(node.parent);\n //{ type: \"\", name: \"\", parent: node.parent, state: { allowType: true } };\n node.parent.components.push(sibling);\n delete node.parent;\n node = sibling;\n break;\n\n // Hit a space...\n case \" \":\n\n // If reading type, the type is done and may read a param or name\n if (node.state.allowType) {\n if (node.type !== \"\") {\n node.type = verifyType(node.type);\n delete node.state.allowType;\n node.state.allowName = true;\n node.state.allowParams = true;\n }\n }\n\n // If reading name, the name is done\n if (node.state.allowName) {\n if (node.name !== \"\") {\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n if (node.indexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n } else {\n node.state.allowName = false;\n }\n }\n }\n\n break;\n\n case \"[\":\n if (!node.state.allowArray) { throwError(i); }\n\n node.type += c;\n\n node.state.allowArray = false;\n node.state.allowName = false;\n node.state.readArray = true;\n break;\n\n case \"]\":\n if (!node.state.readArray) { throwError(i); }\n\n node.type += c;\n\n node.state.readArray = false;\n node.state.allowArray = true;\n node.state.allowName = true;\n break;\n\n default:\n if (node.state.allowType) {\n node.type += c;\n node.state.allowParams = true;\n node.state.allowArray = true;\n } else if (node.state.allowName) {\n node.name += c;\n delete node.state.allowArray;\n } else if (node.state.readArray) {\n node.type += c;\n } else {\n throwError(i);\n }\n }\n }\n\n if (node.parent) { logger.throwArgumentError(\"unexpected eof\", \"param\", param); }\n\n delete parent.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(originalParam.length - 7); }\n if (node.indexed) { throwError(originalParam.length - 7); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n }\n\n parent.type = verifyType(parent.type);\n\n return parent;\n}\n\nfunction populate(object: any, params: any) {\n for (let key in params) { defineReadOnly(object, key, params[key]); }\n}\n\nexport const FormatTypes: { [ name: string ]: string } = Object.freeze({\n // Bare formatting, as is needed for computing a sighash of an event or function\n sighash: \"sighash\",\n\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n minimal: \"minimal\",\n\n // Human-Readable with nice spacing, including all names\n full: \"full\",\n\n // JSON-format a la Solidity\n json: \"json\"\n});\n\nconst paramTypeArray = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\n\nexport class ParamType {\n\n // The local name of the parameter (of null if unbound)\n readonly name: string;\n\n // The fully qualified type (e.g. \"address\", \"tuple(address)\", \"uint256[3][]\"\n readonly type: string;\n\n // The base type (e.g. \"address\", \"tuple\", \"array\")\n readonly baseType: string;\n\n // Indexable Paramters ONLY (otherwise null)\n readonly indexed: boolean;\n\n // Tuples ONLY: (otherwise null)\n // - sub-components\n readonly components: Array;\n\n // Arrays ONLY: (otherwise null)\n // - length of the array (-1 for dynamic length)\n // - child type\n readonly arrayLength: number;\n readonly arrayChildren: ParamType;\n\n readonly _isParamType: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) { logger.throwError(\"use fromString\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new ParamType()\"\n }); }\n populate(this, params);\n\n let match = this.type.match(paramTypeArray);\n if (match) {\n populate(this, {\n arrayLength: parseInt(match[2] || \"-1\"),\n arrayChildren: ParamType.fromObject({\n type: match[1],\n components: this.components\n }),\n baseType: \"array\"\n });\n } else {\n populate(this, {\n arrayLength: null,\n arrayChildren: null,\n baseType: ((this.components != null) ? \"tuple\": this.type)\n });\n }\n\n this._isParamType = true;\n\n Object.freeze(this);\n }\n\n // Format the parameter fragment\n // - sighash: \"(uint256,address)\"\n // - minimal: \"tuple(uint256,address) indexed\"\n // - full: \"tuple(uint256 foo, address bar) indexed baz\"\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n let result: any = {\n type: ((this.baseType === \"tuple\") ? \"tuple\": this.type),\n name: (this.name || undefined)\n };\n if (typeof(this.indexed) === \"boolean\") { result.indexed = this.indexed; }\n if (this.components) {\n result.components = this.components.map((comp) => JSON.parse(comp.format(format)));\n }\n return JSON.stringify(result);\n }\n\n let result = \"\";\n\n // Array\n if (this.baseType === \"array\") {\n result += this.arrayChildren.format(format);\n result += \"[\" + (this.arrayLength < 0 ? \"\": String(this.arrayLength)) + \"]\";\n } else {\n if (this.baseType === \"tuple\") {\n if (format !== FormatTypes.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map(\n (comp) => comp.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \")\";\n } else {\n result += this.type;\n }\n }\n\n if (format !== FormatTypes.sighash) {\n if (this.indexed === true) { result += \" indexed\"; }\n if (format === FormatTypes.full && this.name) {\n result += \" \" + this.name;\n }\n }\n\n return result;\n }\n\n static from(value: string | JsonFragmentType | ParamType, allowIndexed?: boolean): ParamType {\n if (typeof(value) === \"string\") {\n return ParamType.fromString(value, allowIndexed);\n }\n return ParamType.fromObject(value);\n }\n\n static fromObject(value: JsonFragmentType | ParamType): ParamType {\n if (ParamType.isParamType(value)) { return value; }\n\n return new ParamType(_constructorGuard, {\n name: (value.name || null),\n type: verifyType(value.type),\n indexed: ((value.indexed == null) ? null: !!value.indexed),\n components: (value.components ? value.components.map(ParamType.fromObject): null)\n });\n }\n\n static fromString(value: string, allowIndexed?: boolean): ParamType {\n function ParamTypify(node: ParseNode): ParamType {\n return ParamType.fromObject({\n name: node.name,\n type: node.type,\n indexed: node.indexed,\n components: node.components\n });\n }\n\n return ParamTypify(parseParamType(value, !!allowIndexed));\n }\n\n static isParamType(value: any): value is ParamType {\n return !!(value != null && value._isParamType);\n }\n};\n\nfunction parseParams(value: string, allowIndex: boolean): Array {\n return splitNesting(value).map((param) => ParamType.fromString(param, allowIndex));\n}\n\ntype TypeCheck = { -readonly [ K in keyof T ]: T[K] };\n\ninterface _Fragment {\n readonly type: string;\n readonly name: string;\n readonly inputs: ReadonlyArray;\n}\n\nexport abstract class Fragment {\n\n readonly type: string;\n readonly name: string;\n readonly inputs: Array;\n\n readonly _isFragment: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"use a static from method\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Fragment()\"\n });\n }\n populate(this, params);\n\n this._isFragment = true;\n\n Object.freeze(this);\n }\n\n abstract format(format?: string): string;\n\n static from(value: Fragment | JsonFragment | string): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n if (typeof(value) === \"string\") {\n return Fragment.fromString(value);\n }\n\n return Fragment.fromObject(value);\n }\n\n static fromObject(value: Fragment | JsonFragment): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n switch (value.type) {\n case \"function\":\n return FunctionFragment.fromObject(value);\n case \"event\":\n return EventFragment.fromObject(value);\n case \"constructor\":\n return ConstructorFragment.fromObject(value);\n case \"error\":\n return ErrorFragment.fromObject(value);\n case \"fallback\":\n case \"receive\":\n // @TODO: Something? Maybe return a FunctionFragment? A custom DefaultFunctionFragment?\n return null;\n }\n\n return logger.throwArgumentError(\"invalid fragment object\", \"value\", value);\n }\n\n static fromString(value: string): Fragment {\n // Make sure the \"returns\" is surrounded by a space and all whitespace is exactly one space\n value = value.replace(/\\s/g, \" \");\n value = value.replace(/\\(/g, \" (\").replace(/\\)/g, \") \").replace(/\\s+/g, \" \");\n value = value.trim();\n\n if (value.split(\" \")[0] === \"event\") {\n return EventFragment.fromString(value.substring(5).trim());\n } else if (value.split(\" \")[0] === \"function\") {\n return FunctionFragment.fromString(value.substring(8).trim());\n } else if (value.split(\"(\")[0].trim() === \"constructor\") {\n return ConstructorFragment.fromString(value.trim());\n } else if (value.split(\" \")[0] === \"error\") {\n return ErrorFragment.fromString(value.substring(5).trim());\n }\n\n return logger.throwArgumentError(\"unsupported fragment\", \"value\", value);\n }\n\n static isFragment(value: any): value is Fragment {\n return !!(value && value._isFragment);\n }\n}\n\ninterface _EventFragment extends _Fragment {\n readonly anonymous: boolean;\n}\n\nexport class EventFragment extends Fragment {\n readonly anonymous: boolean;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"event \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.anonymous) {\n result += \"anonymous \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: EventFragment | JsonFragment | string): EventFragment {\n if (typeof(value) === \"string\") {\n return EventFragment.fromString(value);\n }\n return EventFragment.fromObject(value);\n }\n\n static fromObject(value: JsonFragment | EventFragment): EventFragment {\n if (EventFragment.isEventFragment(value)) { return value; }\n\n if (value.type !== \"event\") {\n logger.throwArgumentError(\"invalid event object\", \"value\", value);\n }\n\n const params: TypeCheck<_EventFragment> = {\n name: verifyIdentifier(value.name),\n anonymous: value.anonymous,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject) : []),\n type: \"event\"\n };\n\n return new EventFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): EventFragment {\n\n let match = value.match(regexParen);\n if (!match) {\n logger.throwArgumentError(\"invalid event string\", \"value\", value);\n }\n\n let anonymous = false;\n match[3].split(\" \").forEach((modifier) => {\n switch(modifier.trim()) {\n case \"anonymous\":\n anonymous = true;\n break;\n case \"\":\n break;\n default:\n logger.warn(\"unknown modifier: \" + modifier);\n }\n });\n\n return EventFragment.fromObject({\n name: match[1].trim(),\n anonymous: anonymous,\n inputs: parseParams(match[2], true),\n type: \"event\"\n });\n }\n\n static isEventFragment(value: any): value is EventFragment {\n return (value && value._isFragment && value.type === \"event\");\n }\n}\n\nfunction parseGas(value: string, params: any): string {\n params.gas = null;\n\n let comps = value.split(\"@\");\n if (comps.length !== 1) {\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid human-readable ABI signature\", \"value\", value);\n }\n if (!comps[1].match(/^[0-9]+$/)) {\n logger.throwArgumentError(\"invalid human-readable ABI signature gas\", \"value\", value);\n }\n params.gas = BigNumber.from(comps[1]);\n return comps[0];\n }\n\n return value;\n}\n\nfunction parseModifiers(value: string, params: any): void {\n params.constant = false;\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n\n value.split(\" \").forEach((modifier) => {\n switch (modifier.trim()) {\n case \"constant\":\n params.constant = true;\n break;\n case \"payable\":\n params.payable = true;\n params.stateMutability = \"payable\";\n break;\n case \"nonpayable\":\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n break;\n case \"pure\":\n params.constant = true;\n params.stateMutability = \"pure\";\n break;\n case \"view\":\n params.constant = true;\n params.stateMutability = \"view\";\n break;\n case \"external\":\n case \"public\":\n case \"\":\n break;\n default:\n console.log(\"unknown modifier: \" + modifier);\n }\n });\n}\n\ntype StateInputValue = {\n constant?: boolean;\n payable?: boolean;\n stateMutability?: string;\n type?: string;\n};\n\ntype StateOutputValue = {\n constant: boolean;\n payable: boolean;\n stateMutability: string;\n};\n\nfunction verifyState(value: StateInputValue): StateOutputValue {\n let result: any = {\n constant: false,\n payable: true,\n stateMutability: \"payable\"\n };\n\n if (value.stateMutability != null) {\n result.stateMutability = value.stateMutability;\n\n // Set (and check things are consistent) the constant property\n result.constant = (result.stateMutability === \"view\" || result.stateMutability === \"pure\");\n if (value.constant != null) {\n if ((!!value.constant) !== result.constant) {\n logger.throwArgumentError(\"cannot have constant function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n // Set (and check things are consistent) the payable property\n result.payable = (result.stateMutability === \"payable\");\n if (value.payable != null) {\n if ((!!value.payable) !== result.payable) {\n logger.throwArgumentError(\"cannot have payable function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n } else if (value.payable != null) {\n result.payable = !!value.payable;\n\n // If payable we can assume non-constant; otherwise we can't assume\n if (value.constant == null && !result.payable && value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n result.constant = !!value.constant;\n\n if (result.constant) {\n result.stateMutability = \"view\";\n } else {\n result.stateMutability = (result.payable ? \"payable\": \"nonpayable\");\n }\n\n if (result.payable && result.constant) {\n logger.throwArgumentError(\"cannot have constant payable function\", \"value\", value);\n }\n\n } else if (value.constant != null) {\n result.constant = !!value.constant;\n result.payable = !result.constant;\n result.stateMutability = (result.constant ? \"view\": \"payable\");\n\n } else if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n return result;\n}\n\ninterface _ConstructorFragment extends _Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n}\n\nexport class ConstructorFragment extends Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n if (format === FormatTypes.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"format(sighash)\"\n });\n }\n\n let result = \"constructor(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (this.stateMutability && this.stateMutability !== \"nonpayable\") {\n result += this.stateMutability + \" \";\n }\n\n return result.trim();\n }\n\n static from(value: ConstructorFragment | JsonFragment | string): ConstructorFragment {\n if (typeof(value) === \"string\") {\n return ConstructorFragment.fromString(value);\n }\n return ConstructorFragment.fromObject(value);\n }\n\n static fromObject(value: ConstructorFragment | JsonFragment): ConstructorFragment {\n if (ConstructorFragment.isConstructorFragment(value)) { return value; }\n\n if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor object\", \"value\", value);\n }\n\n let state = verifyState(value);\n if (state.constant) {\n logger.throwArgumentError(\"constructor cannot be constant\", \"value\", value);\n }\n\n const params: TypeCheck<_ConstructorFragment> = {\n name: null,\n type: value.type,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new ConstructorFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): ConstructorFragment {\n let params: any = { type: \"constructor\" };\n\n value = parseGas(value, params);\n\n let parens = value.match(regexParen);\n if (!parens || parens[1].trim() !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor string\", \"value\", value);\n }\n\n params.inputs = parseParams(parens[2].trim(), false);\n\n parseModifiers(parens[3].trim(), params);\n\n return ConstructorFragment.fromObject(params);\n }\n\n static isConstructorFragment(value: any): value is ConstructorFragment {\n return (value && value._isFragment && value.type === \"constructor\");\n }\n}\n\ninterface _FunctionFragment extends _ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n}\n\nexport class FunctionFragment extends ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n outputs: this.outputs.map((output) => JSON.parse(output.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"function \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.stateMutability) {\n if (this.stateMutability !== \"nonpayable\") {\n result += (this.stateMutability + \" \");\n }\n } else if (this.constant) {\n result += \"view \";\n }\n\n if (this.outputs && this.outputs.length) {\n result += \"returns (\" + this.outputs.map(\n (output) => output.format(format)\n ).join(\", \") + \") \";\n }\n\n if (this.gas != null) {\n result += \"@\" + this.gas.toString() + \" \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: FunctionFragment | JsonFragment | string): FunctionFragment {\n if (typeof(value) === \"string\") {\n return FunctionFragment.fromString(value);\n }\n return FunctionFragment.fromObject(value);\n }\n\n static fromObject(value: FunctionFragment | JsonFragment): FunctionFragment {\n if (FunctionFragment.isFunctionFragment(value)) { return value; }\n\n if (value.type !== \"function\") {\n logger.throwArgumentError(\"invalid function object\", \"value\", value);\n }\n\n let state = verifyState(value);\n\n const params: TypeCheck<_FunctionFragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n constant: state.constant,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n outputs: (value.outputs ? value.outputs.map(ParamType.fromObject): [ ]),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new FunctionFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): FunctionFragment {\n let params: any = { type: \"function\" };\n value = parseGas(value, params);\n\n let comps = value.split(\" returns \");\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid function string\", \"value\", value);\n }\n\n let parens = comps[0].match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid function signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n parseModifiers(parens[3].trim(), params);\n\n // We have outputs\n if (comps.length > 1) {\n let returns = comps[1].match(regexParen);\n if (returns[1].trim() != \"\" || returns[3].trim() != \"\") {\n logger.throwArgumentError(\"unexpected tokens\", \"value\", value);\n }\n params.outputs = parseParams(returns[2], false);\n } else {\n params.outputs = [ ];\n }\n\n return FunctionFragment.fromObject(params);\n }\n\n static isFunctionFragment(value: any): value is FunctionFragment {\n return (value && value._isFragment && value.type === \"function\");\n }\n}\n\n//export class StructFragment extends Fragment {\n//}\n\nfunction checkForbidden(fragment: ErrorFragment): ErrorFragment {\n const sig = fragment.format();\n if (sig === \"Error(string)\" || sig === \"Panic(uint256)\") {\n logger.throwArgumentError(`cannot specify user defined ${ sig } error`, \"fragment\", fragment);\n }\n return fragment;\n}\n\nexport class ErrorFragment extends Fragment {\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"error\",\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"error \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n return result.trim();\n }\n\n static from(value: ErrorFragment | JsonFragment | string): ErrorFragment {\n if (typeof(value) === \"string\") {\n return ErrorFragment.fromString(value);\n }\n return ErrorFragment.fromObject(value);\n }\n\n static fromObject(value: ErrorFragment | JsonFragment): ErrorFragment {\n if (ErrorFragment.isErrorFragment(value)) { return value; }\n\n if (value.type !== \"error\") {\n logger.throwArgumentError(\"invalid error object\", \"value\", value);\n }\n\n const params: TypeCheck<_Fragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): [])\n };\n\n return checkForbidden(new ErrorFragment(_constructorGuard, params));\n }\n\n static fromString(value: string): ErrorFragment {\n let params: any = { type: \"error\" };\n\n let parens = value.match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid error signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n return checkForbidden(ErrorFragment.fromObject(params));\n }\n\n static isErrorFragment(value: any): value is ErrorFragment {\n return (value && value._isFragment && value.type === \"error\");\n }\n}\n\nfunction verifyType(type: string): string {\n\n // These need to be transformed to their full description\n if (type.match(/^uint($|[^1-9])/)) {\n type = \"uint256\" + type.substring(4);\n } else if (type.match(/^int($|[^1-9])/)) {\n type = \"int256\" + type.substring(3);\n }\n\n // @TODO: more verification\n\n return type;\n}\n\n// See: https://github.com/ethereum/solidity/blob/1f8f1a3db93a548d0555e3e14cfc55a10e25b60e/docs/grammar/SolidityLexer.g4#L234\nconst regexIdentifier = new RegExp(\"^[a-zA-Z$_][a-zA-Z0-9$_]*$\");\nfunction verifyIdentifier(value: string): string {\n if (!value || !value.match(regexIdentifier)) {\n logger.throwArgumentError(`invalid identifier \"${ value }\"`, \"value\", value);\n }\n return value;\n}\n\nconst regexParen = new RegExp(\"^([^)(]*)\\\\((.*)\\\\)([^)(]*)$\");\n\nfunction splitNesting(value: string): Array {\n value = value.trim();\n\n let result = [];\n let accum = \"\";\n let depth = 0;\n for (let offset = 0; offset < value.length; offset++) {\n let c = value[offset];\n if (c === \",\" && depth === 0) {\n result.push(accum);\n accum = \"\";\n } else {\n accum += c;\n if (c === \"(\") {\n depth++;\n } else if (c === \")\") {\n depth--;\n if (depth === -1) {\n logger.throwArgumentError(\"unbalanced parenthesis\", \"value\", value);\n }\n }\n }\n }\n if (accum) { result.push(accum); }\n\n return result;\n}\n\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./coders/abstract-coder\";\nimport { AddressCoder } from \"./coders/address\";\nimport { ArrayCoder } from \"./coders/array\";\nimport { BooleanCoder } from \"./coders/boolean\";\nimport { BytesCoder } from \"./coders/bytes\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes\";\nimport { NullCoder } from \"./coders/null\";\nimport { NumberCoder } from \"./coders/number\";\nimport { StringCoder } from \"./coders/string\";\nimport { TupleCoder } from \"./coders/tuple\";\n\nimport { ParamType } from \"./fragments\";\n\n\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\n\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport class AbiCoder {\n readonly coerceFunc: CoerceFunc;\n\n constructor(coerceFunc?: CoerceFunc) {\n defineReadOnly(this, \"coerceFunc\", coerceFunc || null);\n }\n\n _getCoder(param: ParamType): Coder {\n\n switch (param.baseType) {\n case \"address\":\n return new AddressCoder(param.name);\n case \"bool\":\n return new BooleanCoder(param.name);\n case \"string\":\n return new StringCoder(param.name);\n case \"bytes\":\n return new BytesCoder(param.name);\n case \"array\":\n return new ArrayCoder(this._getCoder(param.arrayChildren), param.arrayLength, param.name);\n case \"tuple\":\n return new TupleCoder((param.components || []).map((component) => {\n return this._getCoder(component);\n }), param.name);\n case \"\":\n return new NullCoder(param.name);\n }\n\n // u?int[0-9]*\n let match = param.type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if (size === 0 || size > 256 || (size % 8) !== 0) {\n logger.throwArgumentError(\"invalid \" + match[1] + \" bit length\", \"param\", param);\n }\n return new NumberCoder(size / 8, (match[1] === \"int\"), param.name);\n }\n\n // bytes[0-9]+\n match = param.type.match(paramTypeBytes);\n if (match) {\n let size = parseInt(match[1]);\n if (size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"param\", param);\n }\n return new FixedBytesCoder(size, param.name);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n }\n\n _getWordSize(): number { return 32; }\n\n _getReader(data: Uint8Array, allowLoose?: boolean): Reader {\n return new Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);\n }\n\n _getWriter(): Writer {\n return new Writer(this._getWordSize());\n }\n\n getDefaultValue(types: ReadonlyArray): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n\n encode(types: ReadonlyArray, values: ReadonlyArray): string {\n if (types.length !== values.length) {\n logger.throwError(\"types/values length mismatch\", Logger.errors.INVALID_ARGUMENT, {\n count: { types: types.length, values: values.length },\n value: { types: types, values: values }\n });\n }\n\n const coders = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n\n const writer = this._getWriter();\n coder.encode(writer, values);\n return writer.data;\n }\n\n decode(types: ReadonlyArray, data: BytesLike, loose?: boolean): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(this._getReader(arrayify(data), loose));\n }\n}\n\nexport const defaultAbiCoder: AbiCoder = new AbiCoder();\n\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { id } from \"@ethersproject/hash\";\nimport { keccak256 } from \"@ethersproject/keccak256\"\nimport { defineReadOnly, Description, getStatic } from \"@ethersproject/properties\";\n\nimport { AbiCoder, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, ParamType } from \"./fragments\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport { checkResultErrors, Result };\n\nexport class LogDescription extends Description {\n readonly eventFragment: EventFragment;\n readonly name: string;\n readonly signature: string;\n readonly topic: string;\n readonly args: Result\n}\n\nexport class TransactionDescription extends Description {\n readonly functionFragment: FunctionFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n readonly value: BigNumber;\n}\n\nexport class ErrorDescription extends Description {\n readonly errorFragment: ErrorFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n}\n\nexport class Indexed extends Description {\n readonly hash: string;\n readonly _isIndexed: boolean;\n\n static isIndexed(value: any): value is Indexed {\n return !!(value && value._isIndexed);\n }\n}\n\nconst BuiltinErrors: Record, name: string, reason?: boolean }> = {\n \"0x08c379a0\": { signature: \"Error(string)\", name: \"Error\", inputs: [ \"string\" ], reason: true },\n \"0x4e487b71\": { signature: \"Panic(uint256)\", name: \"Panic\", inputs: [ \"uint256\" ] }\n}\n\nfunction wrapAccessError(property: string, error: Error): Error {\n const wrap = new Error(`deferred error during ABI decoding triggered accessing ${ property }`);\n (wrap).error = error;\n return wrap;\n}\n\n/*\nfunction checkNames(fragment: Fragment, type: \"input\" | \"output\", params: Array): void {\n params.reduce((accum, param) => {\n if (param.name) {\n if (accum[param.name]) {\n logger.throwArgumentError(`duplicate ${ type } parameter ${ JSON.stringify(param.name) } in ${ fragment.format(\"full\") }`, \"fragment\", fragment);\n }\n accum[param.name] = true;\n }\n return accum;\n }, <{ [ name: string ]: boolean }>{ });\n}\n*/\nexport class Interface {\n readonly fragments: ReadonlyArray;\n\n readonly errors: { [ name: string ]: ErrorFragment };\n readonly events: { [ name: string ]: EventFragment };\n readonly functions: { [ name: string ]: FunctionFragment };\n readonly structs: { [ name: string ]: any };\n\n readonly deploy: ConstructorFragment;\n\n readonly _abiCoder: AbiCoder;\n\n readonly _isInterface: boolean;\n\n constructor(fragments: string | ReadonlyArray) {\n let abi: ReadonlyArray = [ ];\n if (typeof(fragments) === \"string\") {\n abi = JSON.parse(fragments);\n } else {\n abi = fragments;\n }\n\n defineReadOnly(this, \"fragments\", abi.map((fragment) => {\n return Fragment.from(fragment);\n }).filter((fragment) => (fragment != null)));\n\n defineReadOnly(this, \"_abiCoder\", getStatic<() => AbiCoder>(new.target, \"getAbiCoder\")());\n\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"errors\", { });\n defineReadOnly(this, \"events\", { });\n defineReadOnly(this, \"structs\", { });\n\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket: { [ name: string ]: Fragment } = null;\n switch (fragment.type) {\n case \"constructor\":\n if (this.deploy) {\n logger.warn(\"duplicate definition - constructor\");\n return;\n }\n //checkNames(fragment, \"input\", fragment.inputs);\n defineReadOnly(this, \"deploy\", fragment);\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (fragment).outputs);\n bucket = this.functions;\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = this.events;\n break;\n case \"error\":\n bucket = this.errors;\n break;\n default:\n return;\n }\n\n let signature = fragment.format();\n if (bucket[signature]) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n\n bucket[signature] = fragment;\n });\n\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineReadOnly(this, \"deploy\", ConstructorFragment.from({\n payable: false,\n type: \"constructor\"\n }));\n }\n\n defineReadOnly(this, \"_isInterface\", true);\n }\n\n format(format?: string): string | Array {\n if (!format) { format = FormatTypes.full; }\n if (format === FormatTypes.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n\n const abi = this.fragments.map((fragment) => fragment.format(format));\n\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatTypes.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n\n return abi;\n }\n\n // Sub-classes can override these to handle other blockchains\n static getAbiCoder(): AbiCoder {\n return defaultAbiCoder;\n }\n\n static getAddress(address: string): string {\n return getAddress(address);\n }\n\n static getSighash(fragment: ErrorFragment | FunctionFragment): string {\n return hexDataSlice(id(fragment.format()), 0, 4);\n }\n\n static getEventTopic(eventFragment: EventFragment): string {\n return id(eventFragment.format());\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getFunction(nameOrSignatureOrSighash: string): FunctionFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n for (const name in this.functions) {\n if (nameOrSignatureOrSighash === this.getSighash(name)) {\n return this.functions[name];\n }\n }\n logger.throwArgumentError(\"no matching function\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.functions).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching functions\", \"name\", name);\n }\n\n return this.functions[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.functions[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching function\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Find an event definition by any means necessary (unless it is ambiguous)\n getEvent(nameOrSignatureOrTopic: string): EventFragment {\n if (isHexString(nameOrSignatureOrTopic)) {\n const topichash = nameOrSignatureOrTopic.toLowerCase();\n for (const name in this.events) {\n if (topichash === this.getEventTopic(name)) {\n return this.events[name];\n }\n }\n logger.throwArgumentError(\"no matching event\", \"topichash\", topichash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrTopic.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrTopic.trim();\n const matching = Object.keys(this.events).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching events\", \"name\", name);\n }\n\n return this.events[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.events[EventFragment.fromString(nameOrSignatureOrTopic).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching event\", \"signature\", nameOrSignatureOrTopic);\n }\n return result;\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(nameOrSignatureOrSighash: string): ErrorFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n const getSighash = getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\");\n for (const name in this.errors) {\n const error = this.errors[name];\n if (nameOrSignatureOrSighash === getSighash(error)) {\n return this.errors[name];\n }\n }\n logger.throwArgumentError(\"no matching error\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.errors).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching errors\", \"name\", name);\n }\n\n return this.errors[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.errors[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching error\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Get the sighash (the bytes4 selector) used by Solidity to identify a function\n getSighash(fragment: ErrorFragment | FunctionFragment | string): string {\n if (typeof(fragment) === \"string\") {\n try {\n fragment = this.getFunction(fragment);\n } catch (error) {\n try {\n fragment = this.getError(fragment);\n } catch (_) {\n throw error;\n }\n }\n }\n\n return getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\")(fragment);\n }\n\n // Get the topic (the bytes32 hash) used by Solidity to identify an event\n getEventTopic(eventFragment: EventFragment | string): string {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n return getStatic<(e: EventFragment) => string>(this.constructor, \"getEventTopic\")(eventFragment);\n }\n\n\n _decodeParams(params: ReadonlyArray, data: BytesLike): Result {\n return this._abiCoder.decode(params, data)\n }\n\n _encodeParams(params: ReadonlyArray, values: ReadonlyArray): string {\n return this._abiCoder.encode(params, values)\n }\n\n encodeDeploy(values?: ReadonlyArray): string {\n return this._encodeParams(this.deploy.inputs, values || [ ]);\n }\n\n decodeErrorResult(fragment: ErrorFragment | string, data: BytesLike): Result {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${ fragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(fragment.inputs, bytes.slice(4));\n }\n\n encodeErrorResult(fragment: ErrorFragment | string, values?: ReadonlyArray): string {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n return hexlify(concat([\n this.getSighash(fragment),\n this._encodeParams(fragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(functionFragment)) {\n logger.throwArgumentError(`data signature does not match function ${ functionFragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(functionFragment.inputs, bytes.slice(4));\n }\n\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(concat([\n this.getSighash(functionFragment),\n this._encodeParams(functionFragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n let bytes = arrayify(data);\n\n let reason: string = null;\n let message = \"\";\n let errorArgs: Result = null;\n let errorName: string = null;\n let errorSignature: string = null;\n switch (bytes.length % this._abiCoder._getWordSize()) {\n case 0:\n try {\n return this._abiCoder.decode(functionFragment.outputs, bytes);\n } catch (error) { }\n break;\n\n case 4: {\n const selector = hexlify(bytes.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n errorArgs = this._abiCoder.decode(builtin.inputs, bytes.slice(4));\n errorName = builtin.name;\n errorSignature = builtin.signature;\n if (builtin.reason) { reason = errorArgs[0]; }\n if (errorName === \"Error\") {\n message = `; VM Exception while processing transaction: reverted with reason string ${ JSON.stringify(errorArgs[0]) }`;\n } else if (errorName === \"Panic\") {\n message = `; VM Exception while processing transaction: reverted with panic code ${ errorArgs[0] }`;\n }\n } else {\n try {\n const error = this.getError(selector);\n errorArgs = this._abiCoder.decode(error.inputs, bytes.slice(4));\n errorName = error.name;\n errorSignature = error.format();\n } catch (error) { }\n }\n break;\n }\n }\n\n return logger.throwError(\"call revert exception\" + message, Logger.errors.CALL_EXCEPTION, {\n method: functionFragment.format(),\n data: hexlify(data), errorArgs, errorName, errorSignature, reason\n });\n }\n\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(this._abiCoder.encode(functionFragment.outputs, values || [ ]));\n }\n\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment: EventFragment | string, values: ReadonlyArray): Array> {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), Logger.errors.UNEXPECTED_ARGUMENT, {\n argument: \"values\",\n value: values\n })\n }\n\n let topics: Array> = [];\n if (!eventFragment.anonymous) { topics.push(this.getEventTopic(eventFragment)); }\n\n const encodeTopic = (param: ParamType, value: any): string => {\n if (param.type === \"string\") {\n return id(value);\n } else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n\n if (param.type === \"bool\" && typeof(value) === \"boolean\") {\n value = (value ? \"0x01\": \"0x00\");\n }\n\n if (param.type.match(/^u?int/)) {\n value = BigNumber.from(value).toHexString();\n }\n\n // Check addresses are valid\n if (param.type === \"address\") { this._abiCoder.encode( [ \"address\" ], [ value ]); }\n return hexZeroPad(hexlify(value), 32);\n };\n\n values.forEach((value, index) => {\n\n let param = (eventFragment).inputs[index];\n\n if (!param.indexed) {\n if (value != null) {\n logger.throwArgumentError(\"cannot filter non-indexed parameters; must be null\", (\"contract.\" + param.name), value);\n }\n return;\n }\n\n if (value == null) {\n topics.push(null);\n } else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n } else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n } else {\n topics.push(encodeTopic(param, value));\n }\n });\n\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n\n return topics;\n }\n\n encodeEventLog(eventFragment: EventFragment | string, values: ReadonlyArray): { data: string, topics: Array } {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n const topics: Array = [ ];\n\n const dataTypes: Array = [ ];\n const dataValues: Array = [ ];\n\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\n }\n\n eventFragment.inputs.forEach((param, index) => {\n const value = values[index];\n if (param.indexed) {\n if (param.type === \"string\") {\n topics.push(id(value))\n } else if (param.type === \"bytes\") {\n topics.push(keccak256(value))\n } else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n } else {\n topics.push(this._abiCoder.encode([ param.type] , [ value ]));\n }\n } else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n\n return {\n data: this._abiCoder.encode(dataTypes , dataValues),\n topics: topics\n };\n }\n\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment: EventFragment | string, data: BytesLike, topics?: ReadonlyArray): Result {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (topics != null && !eventFragment.anonymous) {\n let topicHash = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== topicHash) {\n logger.throwError(\"fragment/topic mismatch\", Logger.errors.INVALID_ARGUMENT, { argument: \"topics[0]\", expected: topicHash, value: topics[0] });\n }\n topics = topics.slice(1);\n }\n\n let indexed: Array = [];\n let nonIndexed: Array = [];\n let dynamic: Array = [];\n\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (param.type === \"string\" || param.type === \"bytes\" || param.baseType === \"tuple\" || param.baseType === \"array\") {\n indexed.push(ParamType.fromObject({ type: \"bytes32\", name: param.name }));\n dynamic.push(true);\n } else {\n indexed.push(param);\n dynamic.push(false);\n }\n } else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n\n let resultIndexed = (topics != null) ? this._abiCoder.decode(indexed, concat(topics)): null;\n let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);\n\n let result: (Array & { [ key: string ]: any }) = [ ];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (resultIndexed == null) {\n result[index] = new Indexed({ _isIndexed: true, hash: null });\n\n } else if (dynamic[index]) {\n result[index] = new Indexed({ _isIndexed: true, hash: resultIndexed[indexedIndex++] });\n\n } else {\n try {\n result[index] = resultIndexed[indexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n } else {\n try {\n result[index] = resultNonIndexed[nonIndexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n\n // Add the keyword argument if named and safe\n if (param.name && result[param.name] == null) {\n const value = result[index];\n\n // Make error named values throw on access\n if (value instanceof Error) {\n Object.defineProperty(result, param.name, {\n enumerable: true,\n get: () => { throw wrapAccessError(`property ${ JSON.stringify(param.name) }`, value); }\n });\n } else {\n result[param.name] = value;\n }\n }\n });\n\n // Make all error indexed values throw on access\n for (let i = 0; i < result.length; i++) {\n const value = result[i];\n if (value instanceof Error) {\n Object.defineProperty(result, i, {\n enumerable: true,\n get: () => { throw wrapAccessError(`index ${ i }`, value); }\n });\n }\n }\n\n return Object.freeze(result);\n }\n\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx: { data: string, value?: BigNumberish }): TransactionDescription {\n let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new TransactionDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + tx.data.substring(10)),\n functionFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n value: BigNumber.from(tx.value || \"0\"),\n });\n }\n\n // @TODO\n //parseCallResult(data: BytesLike): ??\n\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log: { topics: Array, data: string}): LogDescription {\n let fragment = this.getEvent(log.topics[0]);\n\n if (!fragment || fragment.anonymous) { return null; }\n\n // @TODO: If anonymous, and the only method, and the input count matches, should we parse?\n // Probably not, because just because it is the only event in the ABI does\n // not mean we have the full ABI; maybe just a fragment?\n\n\n return new LogDescription({\n eventFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n topic: this.getEventTopic(fragment),\n args: this.decodeEventLog(fragment, log.data, log.topics)\n });\n }\n\n parseError(data: BytesLike): ErrorDescription {\n const hexData = hexlify(data);\n let fragment = this.getError(hexData.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new ErrorDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + hexData.substring(10)),\n errorFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n });\n }\n\n\n /*\n static from(value: Array | string | Interface) {\n if (Interface.isInterface(value)) {\n return value;\n }\n if (typeof(value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n return new Interface(value);\n }\n */\n\n static isInterface(value: any): value is Interface {\n return !!(value && value._isInterface);\n }\n}\n\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.7.0\";\n","\"use strict\";\n\nimport { checkResultErrors, EventFragment, Fragment, FunctionFragment, Indexed, Interface, JsonFragment, LogDescription, ParamType, Result } from \"@ethersproject/abi\";\nimport { Block, BlockTag, Filter, FilterByBlockHash, Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, deepCopy, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, AccessListish } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\nexport interface Overrides {\n gasLimit?: BigNumberish | Promise;\n gasPrice?: BigNumberish | Promise;\n maxFeePerGas?: BigNumberish | Promise;\n maxPriorityFeePerGas?: BigNumberish | Promise;\n nonce?: BigNumberish | Promise;\n type?: number;\n accessList?: AccessListish;\n customData?: Record;\n ccipReadEnabled?: boolean;\n};\n\nexport interface PayableOverrides extends Overrides {\n value?: BigNumberish | Promise;\n}\n\nexport interface CallOverrides extends PayableOverrides {\n blockTag?: BlockTag | Promise;\n from?: string | Promise;\n}\n\n// @TODO: Better hierarchy with: (in v6)\n// - abstract-provider:TransactionRequest\n// - transactions:Transaction\n// - transaction:UnsignedTransaction\n\nexport interface PopulatedTransaction {\n to?: string;\n from?: string;\n nonce?: number;\n\n gasLimit?: BigNumber;\n gasPrice?: BigNumber;\n\n data?: string;\n value?: BigNumber;\n chainId?: number;\n\n type?: number;\n accessList?: AccessList;\n\n maxFeePerGas?: BigNumber;\n maxPriorityFeePerGas?: BigNumber;\n\n customData?: Record;\n ccipReadEnabled?: boolean;\n};\n\nexport type EventFilter = {\n address?: string;\n topics?: Array>;\n};\n\n\nexport type ContractFunction = (...args: Array) => Promise;\n\n\n// The (n + 1)th parameter passed to contract event callbacks\nexport interface Event extends Log {\n\n // The event name\n event?: string;\n\n // The event signature\n eventSignature?: string;\n\n // The parsed arguments to the event\n args?: Result;\n\n // If parsing the arguments failed, this is the error\n decodeError?: Error;\n\n // A function that can be used to decode event data and topics\n decode?: (data: string, topics?: Array) => any;\n\n // A function that will remove the listener responsible for this event (if any)\n removeListener: () => void;\n\n // Get blockchain details about this event's block and transaction\n getBlock: () => Promise;\n getTransaction: () => Promise;\n getTransactionReceipt: () => Promise;\n}\n\nexport interface ContractReceipt extends TransactionReceipt {\n events?: Array;\n}\n\nexport interface ContractTransaction extends TransactionResponse {\n wait(confirmations?: number): Promise;\n}\n\n///////////////////////////////\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, from: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true,\n customData: true,\n ccipReadEnabled: true\n}\n\nasync function resolveName(resolver: Signer | Provider, nameOrPromise: string | Promise): Promise {\n const name = await nameOrPromise;\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", name);\n }\n\n // If it is already an address, just use it (after adding checksum)\n try {\n return getAddress(name);\n } catch (error) { }\n\n if (!resolver) {\n logger.throwError(\"a provider or signer is needed to resolve ENS names\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\"\n });\n }\n\n const address = await resolver.resolveName(name);\n\n if (address == null) {\n logger.throwArgumentError(\"resolver or addr is not configured for ENS name\", \"name\", name);\n }\n\n return address;\n}\n\n// Recursively replaces ENS names with promises to resolve the name and resolves all properties\nasync function resolveAddresses(resolver: Signer | Provider, value: any, paramType: ParamType | Array): Promise {\n if (Array.isArray(paramType)) {\n return await Promise.all(paramType.map((paramType, index) => {\n return resolveAddresses(\n resolver,\n ((Array.isArray(value)) ? value[index]: value[paramType.name]),\n paramType\n );\n }));\n }\n\n if (paramType.type === \"address\") {\n return await resolveName(resolver, value);\n }\n\n if (paramType.type === \"tuple\") {\n return await resolveAddresses(resolver, value, paramType.components);\n }\n\n if (paramType.baseType === \"array\") {\n if (!Array.isArray(value)) {\n return Promise.reject(logger.makeError(\"invalid value for array\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"value\",\n value\n }));\n }\n return await Promise.all(value.map((v) => resolveAddresses(resolver, v, paramType.arrayChildren)));\n }\n\n return value;\n}\n\nasync function populateTransaction(contract: Contract, fragment: FunctionFragment, args: Array): Promise {\n // If an extra argument is given, it is overrides\n let overrides: CallOverrides = { };\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n overrides = shallowCopy(args.pop());\n }\n\n // Make sure the parameter count matches\n logger.checkArgumentCount(args.length, fragment.inputs.length, \"passed to contract\");\n\n // Populate \"from\" override (allow promises)\n if (contract.signer) {\n if (overrides.from) {\n // Contracts with a Signer are from the Signer's frame-of-reference;\n // but we allow overriding \"from\" if it matches the signer\n overrides.from = resolveProperties({\n override: resolveName(contract.signer, overrides.from),\n signer: contract.signer.getAddress()\n }).then(async (check) => {\n if (getAddress(check.signer) !== check.override) {\n logger.throwError(\"Contract with a Signer cannot override from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.from\"\n });\n }\n\n return check.override;\n });\n\n } else {\n overrides.from = contract.signer.getAddress();\n }\n\n } else if (overrides.from) {\n overrides.from = resolveName(contract.provider, overrides.from);\n\n //} else {\n // Contracts without a signer can override \"from\", and if\n // unspecified the zero address is used\n //overrides.from = AddressZero;\n }\n\n // Wait for all dependencies to be resolved (prefer the signer over the provider)\n const resolved = await resolveProperties({\n args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),\n address: contract.resolvedAddress,\n overrides: (resolveProperties(overrides) || { })\n });\n\n // The ABI coded transaction\n const data = contract.interface.encodeFunctionData(fragment, resolved.args);\n const tx: PopulatedTransaction = {\n data: data,\n to: resolved.address\n };\n\n // Resolved Overrides\n const ro = resolved.overrides;\n\n // Populate simple overrides\n if (ro.nonce != null) { tx.nonce = BigNumber.from(ro.nonce).toNumber(); }\n if (ro.gasLimit != null) { tx.gasLimit = BigNumber.from(ro.gasLimit); }\n if (ro.gasPrice != null) { tx.gasPrice = BigNumber.from(ro.gasPrice); }\n if (ro.maxFeePerGas != null) { tx.maxFeePerGas = BigNumber.from(ro.maxFeePerGas); }\n if (ro.maxPriorityFeePerGas != null) { tx.maxPriorityFeePerGas = BigNumber.from(ro.maxPriorityFeePerGas); }\n if (ro.from != null) { tx.from = ro.from; }\n\n if (ro.type != null) { tx.type = ro.type; }\n if (ro.accessList != null) { tx.accessList = accessListify(ro.accessList); }\n\n // If there was no \"gasLimit\" override, but the ABI specifies a default, use it\n if (tx.gasLimit == null && fragment.gas != null) {\n // Compute the intrinsic gas cost for this transaction\n // @TODO: This is based on the yellow paper as of Petersburg; this is something\n // we may wish to parameterize in v6 as part of the Network object. Since this\n // is always a non-nil to address, we can ignore G_create, but may wish to add\n // similar logic to the ContractFactory.\n let intrinsic = 21000;\n const bytes = arrayify(data);\n for (let i = 0; i < bytes.length; i++) {\n intrinsic += 4;\n if (bytes[i]) { intrinsic += 64; }\n }\n tx.gasLimit = BigNumber.from(fragment.gas).add(intrinsic);\n }\n\n // Populate \"value\" override\n if (ro.value) {\n const roValue = BigNumber.from(ro.value);\n if (!roValue.isZero() && !fragment.payable) {\n logger.throwError(\"non-payable method cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: overrides.value\n });\n }\n tx.value = roValue;\n }\n\n if (ro.customData) {\n tx.customData = shallowCopy(ro.customData);\n }\n\n if (ro.ccipReadEnabled) {\n tx.ccipReadEnabled = !!ro.ccipReadEnabled;\n }\n\n // Remove the overrides\n delete overrides.nonce;\n delete overrides.gasLimit;\n delete overrides.gasPrice;\n delete overrides.from;\n delete overrides.value;\n\n delete overrides.type;\n delete overrides.accessList;\n\n delete overrides.maxFeePerGas;\n delete overrides.maxPriorityFeePerGas;\n\n delete overrides.customData;\n delete overrides.ccipReadEnabled;\n\n // Make sure there are no stray overrides, which may indicate a\n // typo or using an unsupported key.\n const leftovers = Object.keys(overrides).filter((key) => ((overrides)[key] != null));\n if (leftovers.length) {\n logger.throwError(`cannot override ${ leftovers.map((l) => JSON.stringify(l)).join(\",\") }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides\",\n overrides: leftovers\n });\n }\n\n return tx;\n}\n\n\nfunction buildPopulate(contract: Contract, fragment: FunctionFragment): ContractFunction {\n return function(...args: Array): Promise {\n return populateTransaction(contract, fragment, args);\n };\n}\n\nfunction buildEstimate(contract: Contract, fragment: FunctionFragment): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n return async function(...args: Array): Promise {\n if (!signerOrProvider) {\n logger.throwError(\"estimate require a provider or signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"estimateGas\"\n })\n }\n\n const tx = await populateTransaction(contract, fragment, args);\n return await signerOrProvider.estimateGas(tx);\n };\n}\n\nfunction addContractWait(contract: Contract, tx: TransactionResponse) {\n const wait = tx.wait.bind(tx);\n tx.wait = (confirmations?: number) => {\n return wait(confirmations).then((receipt: ContractReceipt) => {\n receipt.events = receipt.logs.map((log) => {\n let event: Event = (deepCopy(log));\n let parsed: LogDescription = null;\n try {\n parsed = contract.interface.parseLog(log);\n } catch (e){ }\n\n // Successfully parsed the event log; include it\n if (parsed) {\n event.args = parsed.args;\n event.decode = (data: BytesLike, topics?: Array) => {\n return contract.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n }\n\n // Useful operations\n event.removeListener = () => { return contract.provider; }\n event.getBlock = () => {\n return contract.provider.getBlock(receipt.blockHash);\n }\n event.getTransaction = () => {\n return contract.provider.getTransaction(receipt.transactionHash);\n }\n event.getTransactionReceipt = () => {\n return Promise.resolve(receipt);\n }\n\n return event;\n });\n\n return receipt;\n });\n };\n}\n\nfunction buildCall(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n\n return async function(...args: Array): Promise {\n // Extract the \"blockTag\" override if present\n let blockTag = undefined;\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n const overrides = shallowCopy(args.pop());\n if (overrides.blockTag != null) {\n blockTag = await overrides.blockTag;\n }\n delete overrides.blockTag;\n args.push(overrides);\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed(blockTag);\n }\n\n // Call a node and get the result\n const tx = await populateTransaction(contract, fragment, args);\n const result = await signerOrProvider.call(tx, blockTag);\n\n try {\n let value = contract.interface.decodeFunctionResult(fragment, result);\n if (collapseSimple && fragment.outputs.length === 1) {\n value = value[0];\n }\n return value;\n\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) {\n error.address = contract.address;\n error.args = args;\n error.transaction = tx;\n }\n throw error;\n }\n };\n}\n\nfunction buildSend(contract: Contract, fragment: FunctionFragment): ContractFunction {\n return async function(...args: Array): Promise {\n if (!contract.signer) {\n logger.throwError(\"sending a transaction requires a signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"sendTransaction\"\n })\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed();\n }\n\n const txRequest = await populateTransaction(contract, fragment, args);\n\n const tx = await contract.signer.sendTransaction(txRequest);\n\n // Tweak the tx.wait so the receipt has extra properties\n addContractWait(contract, tx);\n\n return tx;\n };\n}\n\nfunction buildDefault(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n if (fragment.constant) {\n return buildCall(contract, fragment, collapseSimple);\n }\n return buildSend(contract, fragment);\n}\n\nfunction getEventTag(filter: EventFilter): string {\n if (filter.address && (filter.topics == null || filter.topics.length === 0)) {\n return \"*\";\n }\n\n return (filter.address || \"*\") + \"@\" + (filter.topics ? filter.topics.map((topic) => {\n if (Array.isArray(topic)) {\n return topic.join(\"|\");\n }\n return topic;\n }).join(\":\"): \"\");\n}\n\nclass RunningEvent {\n readonly tag: string;\n readonly filter: EventFilter;\n private _listeners: Array<{ listener: Listener, once: boolean }>;\n\n constructor(tag: string, filter: EventFilter) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"filter\", filter);\n this._listeners = [ ];\n }\n\n addListener(listener: Listener, once: boolean): void {\n this._listeners.push({ listener: listener, once: once });\n }\n\n removeListener(listener: Listener): void {\n let done = false;\n this._listeners = this._listeners.filter((item) => {\n if (done || item.listener !== listener) { return true; }\n done = true;\n return false;\n });\n }\n\n removeAllListeners(): void {\n this._listeners = [];\n }\n\n listeners(): Array {\n return this._listeners.map((i) => i.listener);\n }\n\n listenerCount(): number {\n return this._listeners.length;\n }\n\n run(args: Array): number {\n const listenerCount = this.listenerCount();\n this._listeners = this._listeners.filter((item) => {\n\n const argsCopy = args.slice();\n\n // Call the callback in the next event loop\n setTimeout(() => {\n item.listener.apply(this, argsCopy);\n }, 0);\n\n // Reschedule it if it not \"once\"\n return !(item.once);\n });\n\n return listenerCount;\n }\n\n prepareEvent(event: Event): void {\n }\n\n // Returns the array that will be applied to an emit\n getEmit(event: Event): Array {\n return [ event ];\n }\n}\n\nclass ErrorRunningEvent extends RunningEvent {\n constructor() {\n super(\"error\", null);\n }\n}\n\n\n// @TODO Fragment should inherit Wildcard? and just override getEmit?\n// or have a common abstract super class, with enough constructor\n// options to configure both.\n\n// A Fragment Event will populate all the properties that Wildcard\n// will, and additionally dereference the arguments when emitting\nclass FragmentRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n readonly fragment: EventFragment;\n\n constructor(address: string, contractInterface: Interface, fragment: EventFragment, topics?: Array>) {\n const filter: EventFilter = {\n address: address\n }\n\n let topic = contractInterface.getEventTopic(fragment);\n if (topics) {\n if (topic !== topics[0]) { logger.throwArgumentError(\"topic mismatch\", \"topics\", topics); }\n filter.topics = topics.slice();\n } else {\n filter.topics = [ topic ];\n }\n\n super(getEventTag(filter), filter);\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n defineReadOnly(this, \"fragment\", fragment);\n }\n\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n event.event = this.fragment.name;\n event.eventSignature = this.fragment.format();\n\n event.decode = (data: BytesLike, topics?: Array) => {\n return this.interface.decodeEventLog(this.fragment, data, topics);\n };\n\n try {\n event.args = this.interface.decodeEventLog(this.fragment, event.data, event.topics);\n } catch (error) {\n event.args = null;\n event.decodeError = error;\n }\n }\n\n getEmit(event: Event): Array {\n const errors = checkResultErrors(event.args);\n if (errors.length) { throw errors[0].error; }\n\n const args = (event.args || []).slice();\n args.push(event);\n return args;\n }\n}\n\n// A Wildcard Event will attempt to populate:\n// - event The name of the event name\n// - eventSignature The full signature of the event\n// - decode A function to decode data and topics\n// - args The decoded data and topics\nclass WildcardRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n\n constructor(address: string, contractInterface: Interface) {\n super(\"*\", { address: address });\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n }\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n try {\n const parsed = this.interface.parseLog(event);\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n\n event.decode = (data: BytesLike, topics?: Array) => {\n return this.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n\n event.args = parsed.args;\n } catch (error) {\n // No matching event\n }\n }\n}\n\nexport type ContractInterface = string | ReadonlyArray | Interface;\n\ntype InterfaceFunc = (contractInterface: ContractInterface) => Interface;\n\n\nexport class BaseContract {\n readonly address: string;\n readonly interface: Interface;\n\n readonly signer: Signer;\n readonly provider: Provider;\n\n readonly functions: { [ name: string ]: ContractFunction };\n\n readonly callStatic: { [ name: string ]: ContractFunction };\n readonly estimateGas: { [ name: string ]: ContractFunction };\n readonly populateTransaction: { [ name: string ]: ContractFunction };\n\n readonly filters: { [ name: string ]: (...args: Array) => EventFilter };\n\n // This will always be an address. This will only differ from\n // address if an ENS name was used in the constructor\n readonly resolvedAddress: Promise;\n\n // This is only set if the contract was created with a call to deploy\n readonly deployTransaction: TransactionResponse;\n\n _deployedPromise: Promise;\n\n // A list of RunningEvents to track listeners for each event tag\n _runningEvents: { [ eventTag: string ]: RunningEvent };\n\n // Wrapped functions to call emit and allow deregistration from the provider\n _wrappedEmits: { [ eventTag: string ]: (...args: Array) => void };\n\n constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider?: Signer | Provider) {\n // @TODO: Maybe still check the addressOrName looks like a valid address or name?\n //address = getAddress(address);\n defineReadOnly(this, \"interface\", getStatic(new.target, \"getInterface\")(contractInterface));\n\n if (signerOrProvider == null) {\n defineReadOnly(this, \"provider\", null);\n defineReadOnly(this, \"signer\", null);\n } else if (Signer.isSigner(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider.provider || null);\n defineReadOnly(this, \"signer\", signerOrProvider);\n } else if (Provider.isProvider(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider);\n defineReadOnly(this, \"signer\", null);\n } else {\n logger.throwArgumentError(\"invalid signer or provider\", \"signerOrProvider\", signerOrProvider);\n }\n\n defineReadOnly(this, \"callStatic\", { });\n defineReadOnly(this, \"estimateGas\", { });\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"populateTransaction\", { });\n\n defineReadOnly(this, \"filters\", { });\n\n {\n const uniqueFilters: { [ name: string ]: Array } = { };\n Object.keys(this.interface.events).forEach((eventSignature) => {\n const event = this.interface.events[eventSignature];\n defineReadOnly(this.filters, eventSignature, (...args: Array) => {\n return {\n address: this.address,\n topics: this.interface.encodeFilterTopics(event, args)\n }\n });\n if (!uniqueFilters[event.name]) { uniqueFilters[event.name] = [ ]; }\n uniqueFilters[event.name].push(eventSignature);\n });\n\n Object.keys(uniqueFilters).forEach((name) => {\n const filters = uniqueFilters[name];\n if (filters.length === 1) {\n defineReadOnly(this.filters, name, this.filters[filters[0]]);\n } else {\n logger.warn(`Duplicate definition of ${ name } (${ filters.join(\", \")})`);\n }\n });\n }\n\n defineReadOnly(this, \"_runningEvents\", { });\n defineReadOnly(this, \"_wrappedEmits\", { });\n\n if (addressOrName == null) {\n logger.throwArgumentError(\"invalid contract address or ENS name\", \"addressOrName\", addressOrName);\n }\n\n defineReadOnly(this, \"address\", addressOrName);\n if (this.provider) {\n defineReadOnly(this, \"resolvedAddress\", resolveName(this.provider, addressOrName));\n } else {\n try {\n defineReadOnly(this, \"resolvedAddress\", Promise.resolve(getAddress(addressOrName)));\n } catch (error) {\n // Without a provider, we cannot use ENS names\n logger.throwError(\"provider is required to use ENS name as contract address\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Contract\"\n });\n }\n }\n\n // Swallow bad ENS names to prevent Unhandled Exceptions\n this.resolvedAddress.catch((e) => { });\n\n const uniqueNames: { [ name: string ]: Array } = { };\n const uniqueSignatures: { [ signature: string ]: boolean } = { };\n Object.keys(this.interface.functions).forEach((signature) => {\n const fragment = this.interface.functions[signature];\n\n // Check that the signature is unique; if not the ABI generation has\n // not been cleaned or may be incorrectly generated\n if (uniqueSignatures[signature]) {\n logger.warn(`Duplicate ABI entry for ${ JSON.stringify(signature) }`);\n return;\n }\n uniqueSignatures[signature] = true;\n\n // Track unique names; we only expose bare named functions if they\n // are ambiguous\n {\n const name = fragment.name;\n if (!uniqueNames[`%${ name }`]) { uniqueNames[`%${ name }`] = [ ]; }\n uniqueNames[`%${ name }`].push(signature);\n }\n\n if ((this)[signature] == null) {\n defineReadOnly(this, signature, buildDefault(this, fragment, true));\n }\n\n // We do not collapse simple calls on this bucket, which allows\n // frameworks to safely use this without introspection as well as\n // allows decoding error recovery.\n if (this.functions[signature] == null) {\n defineReadOnly(this.functions, signature, buildDefault(this, fragment, false));\n }\n\n if (this.callStatic[signature] == null) {\n defineReadOnly(this.callStatic, signature, buildCall(this, fragment, true));\n }\n\n if (this.populateTransaction[signature] == null) {\n defineReadOnly(this.populateTransaction, signature, buildPopulate(this, fragment));\n }\n\n if (this.estimateGas[signature] == null) {\n defineReadOnly(this.estimateGas, signature, buildEstimate(this, fragment));\n }\n });\n\n Object.keys(uniqueNames).forEach((name) => {\n // Ambiguous names to not get attached as bare names\n const signatures = uniqueNames[name];\n if (signatures.length > 1) { return; }\n\n // Strip off the leading \"%\" used for prototype protection\n name = name.substring(1);\n\n const signature = signatures[0];\n\n // If overwriting a member property that is null, swallow the error\n try {\n if ((this)[name] == null) {\n defineReadOnly(this, name, (this)[signature]);\n }\n } catch (e) { }\n\n if (this.functions[name] == null) {\n defineReadOnly(this.functions, name, this.functions[signature]);\n }\n\n if (this.callStatic[name] == null) {\n defineReadOnly(this.callStatic, name, this.callStatic[signature]);\n }\n\n if (this.populateTransaction[name] == null) {\n defineReadOnly(this.populateTransaction, name, this.populateTransaction[signature]);\n }\n\n if (this.estimateGas[name] == null) {\n defineReadOnly(this.estimateGas, name, this.estimateGas[signature]);\n }\n });\n }\n\n static getContractAddress(transaction: { from: string, nonce: BigNumberish }): string {\n return getContractAddress(transaction);\n }\n\n static getInterface(contractInterface: ContractInterface): Interface {\n if (Interface.isInterface(contractInterface)) {\n return contractInterface;\n }\n return new Interface(contractInterface);\n }\n\n // @TODO: Allow timeout?\n deployed(): Promise {\n return this._deployed();\n }\n\n _deployed(blockTag?: BlockTag): Promise {\n if (!this._deployedPromise) {\n\n // If we were just deployed, we know the transaction we should occur in\n if (this.deployTransaction) {\n this._deployedPromise = this.deployTransaction.wait().then(() => {\n return this;\n });\n\n } else {\n // @TODO: Once we allow a timeout to be passed in, we will wait\n // up to that many blocks for getCode\n\n // Otherwise, poll for our code to be deployed\n this._deployedPromise = this.provider.getCode(this.address, blockTag).then((code) => {\n if (code === \"0x\") {\n logger.throwError(\"contract not deployed\", Logger.errors.UNSUPPORTED_OPERATION, {\n contractAddress: this.address,\n operation: \"getDeployed\"\n });\n }\n return this;\n });\n }\n }\n\n return this._deployedPromise;\n }\n\n // @TODO:\n // estimateFallback(overrides?: TransactionRequest): Promise\n\n // @TODO:\n // estimateDeploy(bytecode: string, ...args): Promise\n\n fallback(overrides?: TransactionRequest): Promise {\n if (!this.signer) {\n logger.throwError(\"sending a transactions require a signer\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"sendTransaction(fallback)\" })\n }\n\n const tx: Deferrable = shallowCopy(overrides || {});\n\n [\"from\", \"to\"].forEach(function(key) {\n if ((tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n tx.to = this.resolvedAddress;\n return this.deployed().then(() => {\n return this.signer.sendTransaction(tx);\n });\n }\n\n // Reconnect to a different signer or provider\n connect(signerOrProvider: Signer | Provider | string): Contract {\n if (typeof(signerOrProvider) === \"string\") {\n signerOrProvider = new VoidSigner(signerOrProvider, this.provider);\n }\n\n const contract = new (<{ new(...args: any[]): Contract }>(this.constructor))(this.address, this.interface, signerOrProvider);\n if (this.deployTransaction) {\n defineReadOnly(contract, \"deployTransaction\", this.deployTransaction);\n }\n\n return contract;\n }\n\n // Re-attach to a different on-chain instance of this contract\n attach(addressOrName: string): Contract {\n return new (<{ new(...args: any[]): Contract }>(this.constructor))(addressOrName, this.interface, this.signer || this.provider);\n }\n\n static isIndexed(value: any): value is Indexed {\n return Indexed.isIndexed(value);\n }\n\n private _normalizeRunningEvent(runningEvent: RunningEvent): RunningEvent {\n // Already have an instance of this event running; we can re-use it\n if (this._runningEvents[runningEvent.tag]) {\n return this._runningEvents[runningEvent.tag];\n }\n return runningEvent\n }\n\n private _getRunningEvent(eventName: EventFilter | string): RunningEvent {\n if (typeof(eventName) === \"string\") {\n\n // Listen for \"error\" events (if your contract has an error event, include\n // the full signature to bypass this special event keyword)\n if (eventName === \"error\") {\n return this._normalizeRunningEvent(new ErrorRunningEvent());\n }\n\n // Listen for any event that is registered\n if (eventName === \"event\") {\n return this._normalizeRunningEvent(new RunningEvent(\"event\", null));\n }\n\n // Listen for any event\n if (eventName === \"*\") {\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n // Get the event Fragment (throws if ambiguous/unknown event)\n const fragment = this.interface.getEvent(eventName)\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment));\n }\n\n // We have topics to filter by...\n if (eventName.topics && eventName.topics.length > 0) {\n\n // Is it a known topichash? (throws if no matching topichash)\n try {\n const topic = eventName.topics[0];\n if (typeof(topic) !== \"string\") {\n throw new Error(\"invalid topic\"); // @TODO: May happen for anonymous events\n }\n const fragment = this.interface.getEvent(topic);\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));\n } catch (error) { }\n\n // Filter by the unknown topichash\n const filter: EventFilter = {\n address: this.address,\n topics: eventName.topics\n }\n\n return this._normalizeRunningEvent(new RunningEvent(getEventTag(filter), filter));\n }\n\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n _checkRunningEvents(runningEvent: RunningEvent): void {\n if (runningEvent.listenerCount() === 0) {\n delete this._runningEvents[runningEvent.tag];\n\n // If we have a poller for this, remove it\n const emit = this._wrappedEmits[runningEvent.tag];\n if (emit && runningEvent.filter) {\n this.provider.off(runningEvent.filter, emit);\n delete this._wrappedEmits[runningEvent.tag];\n }\n }\n }\n\n // Subclasses can override this to gracefully recover\n // from parse errors if they wish\n _wrapEvent(runningEvent: RunningEvent, log: Log, listener: Listener): Event {\n const event = deepCopy(log);\n\n event.removeListener = () => {\n if (!listener) { return; }\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n };\n\n event.getBlock = () => { return this.provider.getBlock(log.blockHash); }\n event.getTransaction = () => { return this.provider.getTransaction(log.transactionHash); }\n event.getTransactionReceipt = () => { return this.provider.getTransactionReceipt(log.transactionHash); }\n\n // This may throw if the topics and data mismatch the signature\n runningEvent.prepareEvent(event);\n\n return event;\n }\n\n private _addEventListener(runningEvent: RunningEvent, listener: Listener, once: boolean): void {\n if (!this.provider) {\n logger.throwError(\"events require a provider or a signer with a provider\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"once\" })\n }\n\n runningEvent.addListener(listener, once);\n\n // Track this running event and its listeners (may already be there; but no hard in updating)\n this._runningEvents[runningEvent.tag] = runningEvent;\n\n // If we are not polling the provider, start polling\n if (!this._wrappedEmits[runningEvent.tag]) {\n const wrappedEmit = (log: Log) => {\n let event = this._wrapEvent(runningEvent, log, listener);\n\n // Try to emit the result for the parameterized event...\n if (event.decodeError == null) {\n try {\n const args = runningEvent.getEmit(event);\n this.emit(runningEvent.filter, ...args);\n } catch (error) {\n event.decodeError = error.error;\n }\n }\n\n // Always emit \"event\" for fragment-base events\n if (runningEvent.filter != null) {\n this.emit(\"event\", event);\n }\n\n // Emit \"error\" if there was an error\n if (event.decodeError != null) {\n this.emit(\"error\", event.decodeError, event);\n }\n };\n this._wrappedEmits[runningEvent.tag] = wrappedEmit;\n\n // Special events, like \"error\" do not have a filter\n if (runningEvent.filter != null) {\n this.provider.on(runningEvent.filter, wrappedEmit);\n }\n }\n }\n\n queryFilter(event: EventFilter | string, fromBlockOrBlockhash?: BlockTag | string, toBlock?: BlockTag): Promise> {\n const runningEvent = this._getRunningEvent(event);\n const filter = shallowCopy(runningEvent.filter);\n\n if (typeof(fromBlockOrBlockhash) === \"string\" && isHexString(fromBlockOrBlockhash, 32)) {\n if (toBlock != null) {\n logger.throwArgumentError(\"cannot specify toBlock with blockhash\", \"toBlock\", toBlock);\n }\n (filter).blockHash = fromBlockOrBlockhash;\n } else {\n (filter).fromBlock = ((fromBlockOrBlockhash != null) ? fromBlockOrBlockhash: 0);\n (filter).toBlock = ((toBlock != null) ? toBlock: \"latest\");\n }\n\n return this.provider.getLogs(filter).then((logs) => {\n return logs.map((log) => this._wrapEvent(runningEvent, log, null));\n });\n }\n\n on(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, false);\n return this;\n }\n\n once(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, true);\n return this;\n }\n\n emit(eventName: EventFilter | string, ...args: Array): boolean {\n if (!this.provider) { return false; }\n\n const runningEvent = this._getRunningEvent(eventName);\n const result = (runningEvent.run(args) > 0);\n\n // May have drained all the \"once\" events; check for living events\n this._checkRunningEvents(runningEvent);\n\n return result;\n }\n\n listenerCount(eventName?: EventFilter | string): number {\n if (!this.provider) { return 0; }\n if (eventName == null) {\n return Object.keys(this._runningEvents).reduce((accum, key) => {\n return accum + this._runningEvents[key].listenerCount();\n }, 0);\n }\n return this._getRunningEvent(eventName).listenerCount();\n }\n\n listeners(eventName?: EventFilter | string): Array {\n if (!this.provider) { return []; }\n\n if (eventName == null) {\n const result: Array = [ ];\n for (let tag in this._runningEvents) {\n this._runningEvents[tag].listeners().forEach((listener) => {\n result.push(listener)\n });\n }\n return result;\n }\n\n return this._getRunningEvent(eventName).listeners();\n }\n\n removeAllListeners(eventName?: EventFilter | string): this {\n if (!this.provider) { return this; }\n\n if (eventName == null) {\n for (const tag in this._runningEvents) {\n const runningEvent = this._runningEvents[tag];\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n }\n return this;\n }\n\n // Delete any listeners\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n\n return this;\n }\n\n off(eventName: EventFilter | string, listener: Listener): this {\n if (!this.provider) { return this; }\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n return this;\n }\n\n removeListener(eventName: EventFilter | string, listener: Listener): this {\n return this.off(eventName, listener);\n }\n\n}\n\nexport class Contract extends BaseContract {\n // The meta-class properties\n readonly [ key: string ]: ContractFunction | any;\n}\n\nexport class ContractFactory {\n\n readonly interface: Interface;\n readonly bytecode: string;\n readonly signer: Signer;\n\n constructor(contractInterface: ContractInterface, bytecode: BytesLike | { object: string }, signer?: Signer) {\n\n let bytecodeHex: string = null;\n\n if (typeof(bytecode) === \"string\") {\n bytecodeHex = bytecode;\n } else if (isBytes(bytecode)) {\n bytecodeHex = hexlify(bytecode);\n } else if (bytecode && typeof(bytecode.object) === \"string\") {\n // Allow the bytecode object from the Solidity compiler\n bytecodeHex = (bytecode).object;\n } else {\n // Crash in the next verification step\n bytecodeHex = \"!\";\n }\n\n // Make sure it is 0x prefixed\n if (bytecodeHex.substring(0, 2) !== \"0x\") { bytecodeHex = \"0x\" + bytecodeHex; }\n\n // Make sure the final result is valid bytecode\n if (!isHexString(bytecodeHex) || (bytecodeHex.length % 2)) {\n logger.throwArgumentError(\"invalid bytecode\", \"bytecode\", bytecode);\n }\n\n // If we have a signer, make sure it is valid\n if (signer && !Signer.isSigner(signer)) {\n logger.throwArgumentError(\"invalid signer\", \"signer\", signer);\n }\n\n defineReadOnly(this, \"bytecode\", bytecodeHex);\n defineReadOnly(this, \"interface\", getStatic(new.target, \"getInterface\")(contractInterface));\n defineReadOnly(this, \"signer\", signer || null);\n }\n\n // @TODO: Future; rename to populateTransaction?\n getDeployTransaction(...args: Array): TransactionRequest {\n let tx: TransactionRequest = { };\n\n // If we have 1 additional argument, we allow transaction overrides\n if (args.length === this.interface.deploy.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n tx = shallowCopy(args.pop());\n for (const key in tx) {\n if (!allowedTransactionKeys[key]) {\n throw new Error(\"unknown transaction override \" + key);\n }\n }\n }\n\n // Do not allow these to be overridden in a deployment transaction\n [\"data\", \"from\", \"to\"].forEach((key) => {\n if ((tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n if (tx.value) {\n const value = BigNumber.from(tx.value);\n if (!value.isZero() && !this.interface.deploy.payable) {\n logger.throwError(\"non-payable constructor cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: tx.value\n });\n }\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Set the data to the bytecode + the encoded constructor arguments\n tx.data = hexlify(concat([\n this.bytecode,\n this.interface.encodeDeploy(args)\n ]));\n\n return tx\n }\n\n async deploy(...args: Array): Promise {\n\n let overrides: any = { };\n\n // If 1 extra parameter was passed in, it contains overrides\n if (args.length === this.interface.deploy.inputs.length + 1) {\n overrides = args.pop();\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Resolve ENS names and promises in the arguments\n const params = await resolveAddresses(this.signer, args, this.interface.deploy.inputs);\n params.push(overrides);\n\n // Get the deployment transaction (with optional overrides)\n const unsignedTx = this.getDeployTransaction(...params);\n\n // Send the deployment transaction\n const tx = await this.signer.sendTransaction(unsignedTx);\n\n const address = getStatic<(tx: TransactionResponse) => string>(this.constructor, \"getContractAddress\")(tx);\n const contract = getStatic<(address: string, contractInterface: ContractInterface, signer?: Signer) => Contract>(this.constructor, \"getContract\")(address, this.interface, this.signer);\n\n // Add the modified wait that wraps events\n addContractWait(contract, tx);\n\n defineReadOnly(contract, \"deployTransaction\", tx);\n return contract;\n }\n\n attach(address: string): Contract {\n return ((this.constructor)).getContract(address, this.interface, this.signer);\n }\n\n connect(signer: Signer) {\n return new (<{ new(...args: any[]): ContractFactory }>(this.constructor))(this.interface, this.bytecode, signer);\n }\n\n static fromSolidity(compilerOutput: any, signer?: Signer): ContractFactory {\n if (compilerOutput == null) {\n logger.throwError(\"missing compiler output\", Logger.errors.MISSING_ARGUMENT, { argument: \"compilerOutput\" });\n }\n\n if (typeof(compilerOutput) === \"string\") {\n compilerOutput = JSON.parse(compilerOutput);\n }\n\n const abi = compilerOutput.abi;\n\n let bytecode: any = null;\n if (compilerOutput.bytecode) {\n bytecode = compilerOutput.bytecode;\n } else if (compilerOutput.evm && compilerOutput.evm.bytecode) {\n bytecode = compilerOutput.evm.bytecode;\n }\n\n return new this(abi, bytecode, signer);\n }\n\n static getInterface(contractInterface: ContractInterface) {\n return Contract.getInterface(contractInterface);\n }\n\n static getContractAddress(tx: { from: string, nonce: BytesLike | BigNumber | number }): string {\n return getContractAddress(tx);\n }\n\n static getContract(address: string, contractInterface: ContractInterface, signer?: Signer): Contract {\n return new Contract(address, contractInterface, signer);\n }\n}\n","export const version = \"contracts/5.7.0\";\n","import { ethers } from 'ethers';\n\nconst getTokenBalance = async (\n provider,\n tokenContractAddress,\n ownerAddress\n) => {\n if (!tokenContractAddress) {\n return provider.getBalance(ownerAddress);\n }\n const minABI = [\n {\n constant: true,\n inputs: [{ name: '_owner', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: 'balance', type: 'uint256' }],\n type: 'function',\n },\n ];\n const contract = new ethers.Contract(tokenContractAddress, minABI, provider);\n\n return contract.balanceOf(ownerAddress);\n};\n\nexport default getTokenBalance;\n","import { utils } from 'ethers';\nimport getTokenBalance from './getTokenBalance';\n\nconst validateTransactionAmount = async (\n provider,\n tokenAddress,\n transactionAmount,\n denomination,\n ownerAddress\n) => {\n let errorMessage = '';\n const actualBnBalance = await getTokenBalance(\n provider,\n tokenAddress,\n ownerAddress\n );\n\n let bnValue;\n try {\n bnValue = utils.parseUnits(transactionAmount, denomination);\n } catch (parseError) {\n errorMessage = 'Invalid value';\n }\n if (!bnValue || bnValue.isZero()) {\n errorMessage = 'Your value is zero';\n } else {\n if (bnValue.gt(actualBnBalance)) {\n errorMessage = 'Not enough coins on balance';\n }\n if (bnValue.lt(utils.parseUnits('0.001', denomination))) {\n errorMessage = `Minimal transaction amount is 0.001`;\n }\n }\n return errorMessage;\n};\n\nexport default validateTransactionAmount;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport NetworkSelect from './NetworkSelect';\n\n//TODO: rename to DestinationField\nconst ReceiveField = ({\n networks = [{}],\n setChainId = () => {},\n destinationChainId = 0,\n isLoggedIn,\n}) => {\n return (\n <>\n
\n \n Destination network\n \n\n \n
\n \n );\n};\n\nReceiveField.propTypes = {\n networks: PropTypes.arrayOf(PropTypes.object),\n setChainId: PropTypes.func,\n destinationChainId: PropTypes.number,\n transactionAmount: PropTypes.string,\n selectedCoin: PropTypes.object,\n receivedCoin: PropTypes.object,\n setCoin: PropTypes.func,\n isLoggedIn: PropTypes.bool,\n};\n\nexport default ReceiveField;\n","import { BigNumber, utils } from 'ethers';\nimport { bscChainId, ethChainId } from './providers';\n\nconst getFee = (\n isFromAmb,\n transactionAmount,\n selectedCoin,\n foreignChainId,\n isAmountWithFees = false\n) =>\n fetch(relayUrlByChainId[foreignChainId] + '/fees', {\n method: 'POST',\n body: JSON.stringify({\n isAmb: isFromAmb,\n amount: utils.hexValue(\n utils.parseUnits(\n transactionAmount || '0.001',\n selectedCoin?.decimals[foreignChainId]\n )\n ),\n ...(selectedCoin ? { tokenAddress: selectedCoin.address } : {}),\n isAmountWithFees,\n }),\n })\n .then((res) => res.json())\n .then(({ bridgeFee, transferFee, signature, amount, message }) => {\n if (message) throw new Error(message);\n const bnBridgeFee = BigNumber.from(bridgeFee);\n const bnTransferFee = BigNumber.from(transferFee);\n return {\n totalFee: bnBridgeFee.add(bnTransferFee).toString(),\n bridgeFee: bnBridgeFee,\n transferFee: bnTransferFee,\n amount: BigNumber.from(amount),\n signature,\n };\n });\n\nconst relayUrlByChainId = {\n [bscChainId]: process.env.REACT_APP_BSC_RELAY_URL,\n [ethChainId]: process.env.REACT_APP_ETH_RELAY_URL,\n};\nexport default getFee;\n","import { BigNumber, utils } from 'ethers';\n\nconst formatAmount = (amount, denomination, afterDotAmount = 2) => {\n const amountFloatString = utils.formatUnits(\n BigNumber.from(amount),\n denomination\n );\n\n const [intPart, floatPart] = amountFloatString.split('.');\n let amountBalance;\n if (floatPart && floatPart.length > afterDotAmount) {\n amountBalance = `${intPart}.${floatPart.slice(0, afterDotAmount)}`;\n } else if (floatPart) {\n amountBalance = `${intPart}.${floatPart}`;\n } else {\n amountBalance = intPart;\n }\n return amountBalance;\n};\n\nexport default formatAmount;\n","import { useEffect, useRef } from 'react';\n\nconst usePrevious = (value) => {\n const ref = useRef();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n\nexport default usePrevious;\n","import { useEffect, useState } from 'react';\n\nimport { AMB, nativeTokensById } from '../utils/nativeTokens';\nimport usePrevious from './usePrevious';\nimport useTokens from './useTokens';\nimport { ambChainId, bscChainId, ethChainId } from '../utils/providers';\nimport { useAccount } from 'wagmi';\n\nconst useSelectedTokens = (depNet, destNet, changeNetwork) => {\n const [state, setState] = useState(defaultState);\n const tokens = useTokens();\n const { chainId } = useAccount();\n const prevChainId = usePrevious(chainId);\n\n console.log(tokens);\n\n useEffect(() => {\n if (!depNet || !destNet) return;\n\n let departureToken;\n\n if (depNet?.chainId === ambChainId) {\n departureToken = AMB;\n } else if (depNet?.chainId === ethChainId) {\n departureToken =\n tokens[ethChainId]?.['AMB'] || tokens[ethChainId]?.['SAMB'];\n } else if (depNet?.chainId === bscChainId) {\n departureToken = tokens[bscChainId]?.['SAMB'];\n }\n\n const destinationToken = findDestinationToken(departureToken);\n\n setState((prev) => ({ ...prev, destinationToken, departureToken }));\n }, [chainId, tokens, depNet, destNet]);\n\n useEffect(() => {\n const { departureToken } = state;\n if (\n departureToken &&\n prevChainId === chainId &&\n Object.keys(departureToken).length\n ) {\n const destinationToken = findDestinationToken(departureToken);\n\n if (destinationToken === undefined) {\n const newDepartureToken = nativeTokensById[depNet.chainId];\n const newDestinationToken = findDestinationToken(newDepartureToken);\n setState({\n departureToken: newDepartureToken,\n destinationToken: newDestinationToken,\n });\n return;\n }\n\n setDestinationToken(destinationToken);\n }\n }, [destNet]);\n\n const findDestinationToken = (departureToken) => {\n // wrapped -> native (unwrap)\n if (\n departureToken.primaryNets.includes(destNet.chainId) &&\n departureToken.nativeAnalog\n ) {\n return nativeTokensById[destNet.chainId];\n }\n\n // native -> wrapped\n if (departureToken.wrappedAnalog) {\n // amb -> eth: AMB -> AMB(newSAMB)\n if (departureToken.symbol === 'AMB' && destNet.chainId === ethChainId) {\n return tokens[ethChainId]['AMB'];\n }\n // amb -> bsc: AMB -> SAMB\n if (departureToken.symbol === 'AMB' && destNet.chainId === bscChainId) {\n return tokens[bscChainId]['SAMB'];\n }\n\n return tokens[destNet.chainId][departureToken.wrappedAnalog];\n }\n\n // amb -> eth: SAMB -> AMB(newSAMB)\n if (departureToken.symbol === 'SAMB' && destNet.chainId === ethChainId) {\n return tokens[ethChainId]['AMB'];\n }\n\n // amb -> eth: AMB(newSAMB) -> AMB\n if (departureToken.symbol === 'AMB' && destNet.chainId === ambChainId) {\n return AMB;\n }\n\n // wrapped -> wrapped (maybe undefined)\n return tokens[destNet.chainId][departureToken.symbol];\n };\n\n const setDepartureToken = (departureToken) => {\n const destinationToken = findDestinationToken(departureToken);\n if (!destinationToken) {\n setState((prev) => ({ ...prev, departureToken }));\n changeNetwork(departureToken.primaryNets[0]);\n return;\n }\n setState({ departureToken, destinationToken });\n };\n\n const setDestinationToken = (destinationToken) =>\n setState((prev) => ({ ...prev, destinationToken }));\n\n return { ...state, setDepartureToken, setDestinationToken };\n};\n\nconst defaultState = {\n departureToken: {},\n destinationToken: {},\n};\n\nexport default useSelectedTokens;\n","import getTokenBalance from '../utils/ethers/getTokenBalance';\nimport providers, { ambChainId } from '../utils/providers';\nimport { useEffect, useState } from 'react';\nimport useTokens from './useTokens';\nimport { useAccount } from 'wagmi';\n\nconst useCoinBalance = (symbol, chainId) => {\n const { address: account } = useAccount();\n const [balance, setBalance] = useState('');\n const tokens = useTokens();\n\n const provider = providers[chainId];\n\n async function getBalance() {\n try {\n if (chainId === ambChainId && symbol === 'AMB') {\n const balance = await provider.getBalance(account);\n setBalance(balance.toString());\n return;\n }\n const token = tokens[chainId][symbol];\n if (token) {\n const balance = await getTokenBalance(provider, token.address, account);\n setBalance(balance.toString());\n return;\n }\n } catch (e) {\n return '';\n }\n }\n\n useEffect(() => {\n if (symbol && chainId) {\n getBalance();\n provider.on('block', getBalance);\n return () => {\n provider.off('block', getBalance);\n };\n }\n }, [symbol, chainId, account, provider]);\n\n return balance;\n};\n\nexport default useCoinBalance;\n","import { ethers } from 'ethers';\n\nimport BridgeABI from './BridgeABI.json';\nimport TokenABI from './ERC20TokenABI.json';\nimport FaucetABI from './FaucetABI.json';\n\nexport const createBridgeContract = (address, provider) =>\n new ethers.Contract(address, BridgeABI, provider);\n\nexport const createTokenContract = (address, provider) =>\n new ethers.Contract(address, TokenABI, provider);\n\nexport const createFaucetContract = (address, provider) =>\n new ethers.Contract(address, FaucetABI, provider);\n","import { useContext } from 'react';\nimport ConfigContext from '../contexts/ConfigContext/context';\n\nconst useBridges = () => {\n const { bridges } = useContext(ConfigContext);\n return bridges;\n};\n\nexport default useBridges;\n","import { BigNumber, utils } from 'ethers';\nimport useCoinBalance from './useCoinBalance';\nimport { ambChainId } from '../utils/providers';\nimport getFee from '../utils/getFee';\nimport { createBridgeContract } from '../contracts';\nimport useBridges from './useBridges';\nimport formatAmount from '../utils/helpers/formatAmount';\nimport { useAccount } from 'wagmi';\nimport { useEthersAdapter } from '@airdao/ui-library';\n\nconst useGetMaxTxAmount = (selectedCoin, foreignChainId) => {\n const { address: account, chainId } = useAccount();\n const { signer } = useEthersAdapter();\n const balance = useCoinBalance(selectedCoin.symbol, selectedCoin.chainId);\n const bridges = useBridges();\n\n return async () => {\n // TODO: refactor this\n let max;\n if (selectedCoin.wrappedAnalog) {\n const bnBalance = BigNumber.from(balance);\n\n const { amount, signature, transferFee, bridgeFee } = await getFee(\n chainId === ambChainId,\n utils.formatUnits(bnBalance, selectedCoin.denomination),\n selectedCoin,\n foreignChainId,\n true\n ).catch((error) => {\n throw error;\n });\n\n if (amount.lt('0')) return '0';\n\n const gasOpts =\n chainId === ambChainId ? { gasLimit: 8000000, gasPrice: 1 } : {};\n\n const contractAddress =\n bridges[foreignChainId][chainId === ambChainId ? 'native' : 'foreign'];\n\n const BridgeContract = createBridgeContract(contractAddress, signer);\n\n const estGasPrice = await BridgeContract.estimateGas.wrapWithdraw(\n account,\n signature,\n transferFee,\n bridgeFee,\n {\n value: amount.add(transferFee).add(bridgeFee),\n ...gasOpts,\n }\n );\n\n let multipliedEstGasPrice;\n if (chainId === ambChainId) {\n multipliedEstGasPrice = estGasPrice.mul('2');\n } else {\n multipliedEstGasPrice = estGasPrice.mul('1700000000');\n }\n\n max = amount.sub(multipliedEstGasPrice);\n } else {\n max = balance;\n }\n\n return formatAmount(max, selectedCoin.denomination, 6);\n };\n};\n\nexport default useGetMaxTxAmount;\n","import { ambChainId } from '../utils/providers';\nimport { useEffect, useState } from 'react';\nimport useTokens from './useTokens';\nimport { AMB } from '../utils/nativeTokens';\n\nconst useAvailableForTransferTokens = (chainId, account, isLoggedIn) => {\n const [availableTokens, setAvailableTokens] = useState([{}]);\n const tokens = useTokens();\n\n useEffect(() => {\n if (!account || !isLoggedIn) {\n setAvailableTokens([{}]);\n return;\n }\n\n let tokenList = Object.values(tokens[chainId]);\n\n if (chainId === ambChainId) {\n tokenList = tokenList.filter((token) => token.symbol !== 'AMB');\n tokenList.unshift(AMB);\n }\n\n setAvailableTokens(tokenList);\n console.log(tokenList);\n }, [chainId, account, isLoggedIn, tokens]);\n\n return availableTokens;\n};\n\nexport default useAvailableForTransferTokens;\n","import ChevronIcon from '../assets/svg/chevron.svg';\nimport PropTypes from 'prop-types';\nimport Dropdown from '../pages/Exchange/Dropdown';\nimport React, { useMemo, useState } from 'react';\n\nconst ambIcon = (\n \n \n \n \n \n \n);\n\nconst AmountInput = ({\n options = [{}],\n handleSelect,\n selectedOption = {},\n onChange,\n inputValue,\n label,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleOpen = (e) => {\n e.preventDefault();\n setIsOpen((state) => !state);\n };\n\n const handleKeyPress = (e) => {\n // discard all symbols except listed in regex\n if (!/(1|2|3|4|5|6|7|8|9|0|,|\\.)/.test(e.key)) {\n e.preventDefault();\n }\n };\n\n const selectedCoinIcon = useMemo(() => {\n return options.find((el) => el.value === selectedOption.value).icon;\n }, [selectedOption]);\n\n const select = (value) => {\n handleSelect({ ...options.find((el) => el.value === value), icon: '' });\n };\n\n return (\n <>\n {label}\n
\n \n \n {isOpen && (\n setIsOpen(false)}\n handleSelect={select}\n selectedOption={selectedOption.value}\n />\n )}\n
\n \n );\n};\n\nAmountInput.propTypes = {\n selectedOption: PropTypes.any,\n options: PropTypes.array,\n handleSelect: PropTypes.func,\n inputValue: PropTypes.string,\n label: PropTypes.string,\n onChange: PropTypes.func,\n};\n\nexport default AmountInput;\n","import React, { useMemo, useState } from 'react';\nimport useGetMaxTxAmount from '../../hooks/useSetMax';\nimport PropTypes from 'prop-types';\nimport NetworkOrTokenIcon from '../../components/NetworkOrTokenIcon';\nimport useAvailableForTransferTokens from '../../hooks/useAvailableForTransferTokens';\nimport AmountInput from '../../components/AmountInput';\nimport formatAmount from '../../utils/helpers/formatAmount';\nimport InlineLoader from '../../components/InlineLoader';\nimport useCoinBalance from '../../hooks/useCoinBalance';\nimport { Notify } from '@airdao/ui-library';\nimport { useAccount } from 'wagmi';\n\nconst CurrencyInput = ({\n value = '',\n onChange = () => {},\n selectedCoin = {},\n onBlur = () => {},\n foreignChainId = null,\n setCoin = () => {},\n chainId,\n isLoggedIn,\n}) => {\n const [timer, setTimer] = useState();\n const { address: account } = useAccount();\n const tokenList = useAvailableForTransferTokens(chainId, account, isLoggedIn);\n const balance = useCoinBalance(selectedCoin.symbol, selectedCoin.chainId);\n\n const handleInput = ({ target: { value: newValue } }) => {\n const formattedValue = newValue.replace(',', '.');\n if (/^\\d*(\\.\\d{0,6})?$/.test(formattedValue) || formattedValue === '') {\n onChange(formattedValue);\n\n if (timer) clearTimeout(timer);\n setTimer(setTimeout(onBlur, 1000, formattedValue));\n }\n };\n\n const getMaxTxAmount = useGetMaxTxAmount(selectedCoin, foreignChainId);\n const setMax = async () => {\n try {\n const maxTxAmount = await getMaxTxAmount();\n onChange(maxTxAmount);\n onBlur(maxTxAmount);\n } catch (e) {\n Notify.error('Your balance is smaller than total fee', null, {\n autoClose: 5000,\n });\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n }\n };\n\n const formattedTokenList = useMemo(() => {\n return tokenList.map((el) => ({\n ...el,\n value: el.symbol,\n code: el.symbol,\n icon: (\n \n ),\n }));\n }, [tokenList]);\n\n const formattedSelectedCoin = useMemo(() => {\n if (!selectedCoin) {\n return null;\n }\n return formattedTokenList.find((el) => el.symbol === selectedCoin.symbol);\n }, [formattedTokenList, selectedCoin]);\n\n return (\n (formattedSelectedCoin || !isLoggedIn) && (\n
\n \n \n Balance:{' '}\n {balance || !isLoggedIn ? (\n \n {isLoggedIn\n ? (+formatAmount(\n balance,\n selectedCoin.denomination\n )).toLocaleString()\n : 0}{' '}\n {selectedCoin?.symbol || 'AMB'}{' '}\n \n \n ) : (\n \n )}\n \n
\n )\n );\n};\n\nCurrencyInput.propTypes = {\n disabled: PropTypes.bool,\n value: PropTypes.string,\n onChange: PropTypes.func,\n selectedCoin: PropTypes.object,\n isValueInvalid: PropTypes.bool,\n onBlur: PropTypes.func,\n foreignChainId: PropTypes.number,\n setCoin: PropTypes.func,\n chainId: PropTypes.number,\n isLoggedIn: PropTypes.bool,\n};\n\nexport default CurrencyInput;\n","import React, { useEffect, useMemo, useState } from 'react';\n\nimport { useHistory } from 'react-router';\nimport {\n AmbrosusNetwork,\n getNetworkByChainId,\n networksChainIds,\n supportedNetworks,\n} from '../../utils/networks';\nimport { ReactComponent as SwapButton } from '../../assets/svg/exchange__swap-button.svg';\nimport { ReactComponent as History } from '../../assets/svg/history.svg';\nimport InlineLoader from '../../components/InlineLoader';\nimport ExchangeField from './ExchangeField';\nimport { ambChainId, ethChainId } from '../../utils/providers';\nimport validateTransactionAmount from '../../utils/ethers/validateTransactionAmount';\nimport ReceiveField from './ReceiveField';\nimport getFee from '../../utils/getFee';\nimport formatAmount from '../../utils/helpers/formatAmount';\nimport useSelectedTokens from '../../hooks/useSelectedTokens';\nimport { Helmet } from 'react-helmet';\nimport CurrencyInput from './CurrencyInput';\nimport {\n ButtonIcon,\n Button,\n Notify,\n useEthersAdapter,\n useConnectWalletModal,\n useSwitchToConfiguredChain,\n} from '@airdao/ui-library';\n\nimport { useAccount, useSwitchChain } from 'wagmi';\n\nconst Exchange = () => {\n const { address: account, chainId, isConnected: isActive } = useAccount();\n const { switchChain } = useSwitchChain();\n const { provider } = useEthersAdapter();\n const { toggleModal } = useConnectWalletModal();\n const switchToAmb = useSwitchToConfiguredChain();\n\n const isLoggedIn = useMemo(\n () => isActive && networksChainIds.includes(chainId),\n [isActive, chainId]\n );\n\n const isFromAmb = chainId === ambChainId;\n\n const [foreignChainId, setForeignChainId] = useState(null);\n\n useEffect(() => {\n setForeignChainId(isFromAmb ? ethChainId : chainId);\n }, [isActive, isLoggedIn]);\n\n const destinationChainId = isFromAmb ? foreignChainId : ambChainId;\n const destinationNetwork = getNetworkByChainId(destinationChainId);\n const departureNetwork = getNetworkByChainId(chainId);\n\n const changeNetwork = async (newChainId) => {\n if (!isFromAmb) {\n switchChain({ chainId: newChainId });\n }\n setForeignChainId(newChainId);\n };\n\n const toggleDirection = async (e) => {\n e.preventDefault();\n const newChainId = isFromAmb ? foreignChainId : ambChainId;\n switchChain({ chainId: newChainId });\n };\n\n const {\n departureToken,\n setDepartureToken,\n destinationToken,\n setDestinationToken,\n } = useSelectedTokens(departureNetwork, destinationNetwork, changeNetwork);\n\n const [transactionAmount, setTransactionAmount] = useState('');\n\n // reset value if coin changed\n useEffect(() => {\n setTransactionAmount('');\n }, [departureToken]);\n\n const [fee, setFee] = useState();\n\n const updateFee = async (amount) => {\n setFee(undefined);\n const { transferFee, bridgeFee, totalFee } = await getFee(\n isFromAmb,\n amount,\n departureToken,\n foreignChainId\n );\n setFee({ transferFee, bridgeFee, totalFee });\n };\n\n useEffect(() => {\n updateFee(transactionAmount);\n }, [chainId, foreignChainId]);\n\n useEffect(() => {\n updateFee('0.001');\n }, [departureToken]);\n\n const [isValueInvalid, setIsInvalid] = useState(false);\n const history = useHistory();\n\n const handleTransaction = async (e) => {\n e.preventDefault();\n const errorMessage = await validateTransactionAmount(\n provider,\n departureToken.address,\n transactionAmount,\n departureToken.denomination,\n account,\n fee\n );\n\n if (errorMessage) {\n setIsInvalid(!!errorMessage);\n Notify.error(errorMessage, null, { autoClose: 5000 });\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n } else {\n history.push({\n pathname: '/confirm/',\n state: {\n chainId,\n destinationChainId,\n foreignChainId,\n selectedCoin: departureToken,\n receivedCoin: destinationToken,\n transactionAmount,\n fee,\n },\n });\n }\n };\n\n // remove error on any change until new form submission\n useEffect(() => {\n setIsInvalid(false);\n }, [transactionAmount, departureToken, chainId]);\n\n const goToHistory = () => history.push('/history/');\n\n const connectOrSwitch = (e) => {\n e.preventDefault();\n isLoggedIn ? switchToAmb() : toggleModal();\n };\n\n return (\n \n \n \n \n
\n

Bridge tokens

\n {isLoggedIn && (\n \n \n \n )}\n
\n
\n \n \n \n \n \n
\n \n {isLoggedIn ? (\n
\n
\n
\n You will receive\n \n {transactionAmount || 0} {destinationToken?.symbol}\n \n
\n
\n Estimated bridge fee\n \n {fee ? (\n formatAmount(fee.bridgeFee.toString())\n ) : (\n \n )}{' '}\n {departureNetwork?.tokenSymbol}\n \n
\n
\n Estimated transfer fee\n \n {fee ? (\n formatAmount(fee.transferFee.toString())\n ) : (\n \n )}{' '}\n {departureNetwork?.tokenSymbol}\n \n
\n
\n \n Preview\n \n
\n ) : (\n \n Connect wallet\n \n )}\n \n );\n};\n\nexport default Exchange;\n",null,null,"import Exchange from './Exchange';\n\nexport default Exchange;\n","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgHeadingBg(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 2936,\n height: 500,\n viewBox: \"0 0 2936 500\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_1870_4058)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 2936,\n height: 500,\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"path-1-inside-1_1870_4058\",\n fill: \"white\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2271.01 259.397C2269.47 277.369 2253.65 290.686 2235.68 289.14L1942.8 263.957C1924.83 262.412 1911.51 246.59 1913.06 228.617C1914.6 210.645 1930.43 197.329 1948.4 198.874L2140.55 215.396C2119.05 202.463 2095.86 192.284 2071.52 185.206C2016.12 169.096 1957.22 169.766 1902.27 187.12C1847.32 204.474 1798.78 237.734 1762.79 282.689C1751.51 296.77 1730.96 299.046 1716.88 287.772C1702.79 276.498 1700.52 255.944 1711.79 241.862C1755.87 186.804 1815.32 146.077 1882.6 124.829C1949.88 103.582 2021.97 102.768 2089.76 122.481C2134.34 135.445 2175.75 156.905 2211.81 185.446L2231.12 -39.0726C2232.66 -57.0447 2248.48 -70.3613 2266.45 -68.8159C2284.43 -67.2706 2297.74 -51.4484 2296.2 -33.4763L2271.01 259.397Z\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2271.01 259.397C2269.47 277.369 2253.65 290.686 2235.68 289.14L1942.8 263.957C1924.83 262.412 1911.51 246.59 1913.06 228.617C1914.6 210.645 1930.43 197.329 1948.4 198.874L2140.55 215.396C2119.05 202.463 2095.86 192.284 2071.52 185.206C2016.12 169.096 1957.22 169.766 1902.27 187.12C1847.32 204.474 1798.78 237.734 1762.79 282.689C1751.51 296.77 1730.96 299.046 1716.88 287.772C1702.79 276.498 1700.52 255.944 1711.79 241.862C1755.87 186.804 1815.32 146.077 1882.6 124.829C1949.88 103.582 2021.97 102.768 2089.76 122.481C2134.34 135.445 2175.75 156.905 2211.81 185.446L2231.12 -39.0726C2232.66 -57.0447 2248.48 -70.3613 2266.45 -68.8159C2284.43 -67.2706 2297.74 -51.4484 2296.2 -33.4763L2271.01 259.397Z\",\n fill: \"#F6F6F6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2235.68 289.14L2235.44 291.91L2235.68 289.14ZM2271.01 259.397L2273.78 259.635L2271.01 259.397ZM1942.8 263.957L1942.56 266.727L1942.8 263.957ZM1913.06 228.617L1910.29 228.379L1913.06 228.617ZM1948.4 198.874L1948.16 201.644L1948.4 198.874ZM2140.55 215.396L2140.31 218.166L2141.98 213.015L2140.55 215.396ZM2071.52 185.206L2072.3 182.536L2071.52 185.206ZM1902.27 187.12L1901.43 184.469L1902.27 187.12ZM1762.79 282.689L1760.62 280.952L1762.79 282.689ZM1716.88 287.772L1718.61 285.602L1718.61 285.602L1716.88 287.772ZM1711.79 241.862L1713.96 243.6L1711.79 241.862ZM1882.6 124.829L1883.43 127.48L1882.6 124.829ZM2089.76 122.481L2090.54 119.811L2089.76 122.481ZM2211.81 185.446L2210.08 187.625L2214.14 190.832L2214.58 185.684L2211.81 185.446ZM2231.12 -39.0726L2233.88 -38.8344L2231.12 -39.0726ZM2266.45 -68.8159L2266.22 -66.0464L2266.22 -66.0464L2266.45 -68.8159ZM2296.2 -33.4763L2298.97 -33.2381L2296.2 -33.4763ZM2235.44 291.91C2254.94 293.587 2272.11 279.137 2273.78 259.635L2268.25 259.159C2266.83 275.602 2252.36 287.785 2235.91 286.371L2235.44 291.91ZM1942.56 266.727L2235.44 291.91L2235.91 286.371L1943.04 261.188L1942.56 266.727ZM1910.29 228.379C1908.61 247.881 1923.06 265.05 1942.56 266.727L1943.04 261.188C1926.6 259.774 1914.41 245.298 1915.83 228.856L1910.29 228.379ZM1948.64 196.105C1929.13 194.428 1911.97 208.878 1910.29 228.379L1915.83 228.856C1917.24 212.413 1931.72 200.23 1948.16 201.644L1948.64 196.105ZM2140.79 212.627L1948.64 196.105L1948.16 201.644L2140.31 218.166L2140.79 212.627ZM2070.74 187.875C2094.86 194.886 2117.82 204.968 2139.11 217.778L2141.98 213.015C2120.28 199.958 2096.87 189.683 2072.3 182.536L2070.74 187.875ZM1903.1 189.771C1957.53 172.582 2015.87 171.919 2070.74 187.875L2072.3 182.536C2016.37 166.274 1956.91 166.95 1901.43 184.469L1903.1 189.771ZM1764.95 284.426C1800.6 239.901 1848.68 206.959 1903.1 189.771L1901.43 184.469C1845.95 201.989 1796.95 235.566 1760.62 280.952L1764.95 284.426ZM1715.14 289.942C1730.42 302.176 1752.72 299.706 1764.95 284.426L1760.62 280.952C1750.3 293.835 1731.5 295.917 1718.61 285.602L1715.14 289.942ZM1709.62 240.125C1697.39 255.405 1699.86 277.709 1715.14 289.942L1718.61 285.602C1705.73 275.288 1703.65 256.483 1713.96 243.6L1709.62 240.125ZM1881.76 122.179C1813.95 143.592 1754.05 184.636 1709.62 240.125L1713.96 243.6C1757.7 188.971 1816.68 148.562 1883.43 127.48L1881.76 122.179ZM2090.54 119.811C2022.22 99.9456 1949.56 100.766 1881.76 122.179L1883.43 127.48C1950.19 106.398 2021.72 105.591 2088.98 125.15L2090.54 119.811ZM2213.53 183.266C2177.2 154.504 2135.47 132.877 2090.54 119.811L2088.98 125.15C2133.22 138.013 2174.31 159.307 2210.08 187.625L2213.53 183.266ZM2228.35 -39.3107L2209.04 185.207L2214.58 185.684L2233.88 -38.8344L2228.35 -39.3107ZM2266.69 -71.5854C2247.19 -73.2623 2230.02 -58.8124 2228.35 -39.3107L2233.88 -38.8344C2235.3 -55.2771 2249.77 -67.4603 2266.22 -66.0464L2266.69 -71.5854ZM2298.97 -33.2381C2300.64 -52.7398 2286.19 -69.9085 2266.69 -71.5854L2266.22 -66.0464C2282.66 -64.6326 2294.84 -50.157 2293.43 -33.7144L2298.97 -33.2381ZM2273.78 259.635L2298.97 -33.2381L2293.43 -33.7144L2268.25 259.159L2273.78 259.635Z\",\n fill: \"url(#paint0_linear_1870_4058)\",\n mask: \"url(#path-1-inside-1_1870_4058)\"\n }), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"path-3-inside-2_1870_4058\",\n fill: \"white\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M430.951 349.457C434.465 331.764 451.657 320.27 469.35 323.784L757.673 381.044C775.366 384.558 786.86 401.75 783.346 419.443C779.833 437.135 762.641 448.63 744.948 445.116L555.784 407.548C575.729 422.769 597.654 435.437 621.07 445.152C674.361 467.26 732.977 473.077 789.505 461.875C846.032 450.674 897.936 422.958 938.658 382.237C951.413 369.482 972.093 369.482 984.848 382.237C997.603 394.992 997.603 415.672 984.848 428.427C934.975 478.3 871.412 512.238 802.202 525.953C732.993 539.667 661.248 532.542 596.039 505.489C553.153 487.697 514.358 461.81 481.659 429.475L437.762 650.505C434.249 668.198 417.057 679.692 399.364 676.178C381.671 672.665 370.177 655.473 373.691 637.78L430.951 349.457Z\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M430.951 349.457C434.465 331.764 451.657 320.27 469.35 323.784L757.673 381.044C775.366 384.558 786.86 401.75 783.346 419.443C779.833 437.135 762.641 448.63 744.948 445.116L555.784 407.548C575.729 422.769 597.654 435.437 621.07 445.152C674.361 467.26 732.977 473.077 789.505 461.875C846.032 450.674 897.936 422.958 938.658 382.237C951.413 369.482 972.093 369.482 984.848 382.237C997.603 394.992 997.603 415.672 984.848 428.427C934.975 478.3 871.412 512.238 802.202 525.953C732.993 539.667 661.248 532.542 596.039 505.489C553.153 487.697 514.358 461.81 481.659 429.475L437.762 650.505C434.249 668.198 417.057 679.692 399.364 676.178C381.671 672.665 370.177 655.473 373.691 637.78L430.951 349.457Z\",\n fill: \"#F6F6F6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M469.35 323.784L469.891 321.057L469.35 323.784ZM430.951 349.457L428.225 348.916L430.951 349.457ZM757.673 381.044L758.214 378.318L757.673 381.044ZM783.346 419.443L786.073 419.984L783.346 419.443ZM744.948 445.116L745.49 442.39L744.948 445.116ZM555.784 407.548L556.326 404.822L554.098 409.758L555.784 407.548ZM621.07 445.152L620.005 447.72L621.07 445.152ZM789.505 461.875L790.045 464.602L789.505 461.875ZM938.658 382.237L940.623 384.202L938.658 382.237ZM984.848 382.237L982.883 384.202L982.883 384.202L984.848 382.237ZM984.848 428.427L982.883 426.462L984.848 428.427ZM802.202 525.953L801.662 523.226L802.202 525.953ZM596.039 505.489L594.974 508.057L596.039 505.489ZM481.659 429.475L483.613 427.498L479.939 423.865L478.932 428.934L481.659 429.475ZM437.762 650.505L435.036 649.963L437.762 650.505ZM399.364 676.178L399.906 673.452L399.906 673.452L399.364 676.178ZM373.691 637.78L370.964 637.239L373.691 637.78ZM469.891 321.057C450.692 317.244 432.038 329.717 428.225 348.916L433.678 349.999C436.893 333.811 452.621 323.295 468.808 326.51L469.891 321.057ZM758.214 378.318L469.891 321.057L468.808 326.51L757.131 383.771L758.214 378.318ZM786.073 419.984C789.886 400.785 777.413 382.131 758.214 378.318L757.131 383.771C773.318 386.986 783.835 402.714 780.62 418.901L786.073 419.984ZM744.407 447.843C763.605 451.655 782.26 439.183 786.073 419.984L780.62 418.901C777.405 435.088 761.677 445.604 745.49 442.39L744.407 447.843ZM555.243 410.275L744.407 447.843L745.49 442.39L556.326 404.822L555.243 410.275ZM622.136 442.585C598.942 432.962 577.225 420.415 557.471 405.339L554.098 409.758C574.232 425.124 596.366 437.913 620.005 447.72L622.136 442.585ZM788.964 459.149C732.976 470.243 674.918 464.483 622.136 442.585L620.005 447.72C673.803 470.038 732.977 475.91 790.045 464.602L788.964 459.149ZM936.692 380.271C896.36 420.603 844.952 448.054 788.964 459.149L790.045 464.602C847.112 453.294 899.512 425.313 940.623 384.202L936.692 380.271ZM986.814 380.271C972.973 366.431 950.533 366.431 936.692 380.271L940.623 384.202C952.293 372.533 971.213 372.533 982.883 384.202L986.814 380.271ZM986.814 430.393C1000.65 416.552 1000.65 394.112 986.814 380.271L982.883 384.202C994.552 395.872 994.552 414.792 982.883 426.462L986.814 430.393ZM802.742 528.679C872.492 514.858 936.551 480.655 986.814 430.393L982.883 426.462C933.399 475.945 870.332 509.618 801.662 523.226L802.742 528.679ZM594.974 508.057C660.69 535.32 732.993 542.5 802.742 528.679L801.662 523.226C732.992 536.833 661.806 529.764 597.104 502.922L594.974 508.057ZM479.704 431.452C512.657 464.038 551.754 490.126 594.974 508.057L597.104 502.922C554.551 485.268 516.058 459.583 483.613 427.498L479.704 431.452ZM440.489 651.046L484.385 430.016L478.932 428.934L435.036 649.963L440.489 651.046ZM398.823 678.905C418.021 682.718 436.676 670.245 440.489 651.046L435.036 649.963C431.821 666.151 416.093 676.667 399.906 673.452L398.823 678.905ZM370.964 637.239C367.151 656.437 379.624 675.092 398.823 678.905L399.906 673.452C383.719 670.237 373.202 654.509 376.417 638.322L370.964 637.239ZM428.225 348.916L370.964 637.239L376.417 638.322L433.678 349.999L428.225 348.916Z\",\n fill: \"url(#paint1_linear_1870_4058)\",\n mask: \"url(#path-3-inside-2_1870_4058)\"\n }), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"path-5-inside-3_1870_4058\",\n fill: \"white\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M925.636 362.246C924.091 380.219 908.269 393.535 890.297 391.99L597.423 366.806C579.451 365.261 566.135 349.439 567.68 331.467C569.225 313.495 585.047 300.178 603.02 301.723L795.169 318.246C773.671 305.312 750.485 295.134 726.141 288.055C670.742 271.946 611.841 272.615 556.889 289.97C501.938 307.324 453.399 340.583 417.406 385.538C406.132 399.62 385.578 401.896 371.497 390.622C357.415 379.348 355.139 358.793 366.413 344.712C410.495 289.653 469.937 248.926 537.217 227.679C604.497 206.431 676.59 205.617 744.381 225.33C788.964 238.294 830.372 259.754 866.431 288.295L885.737 63.7768C887.282 45.8046 903.104 32.4881 921.076 34.0334C939.049 35.5788 952.365 51.4009 950.82 69.3731L925.636 362.246Z\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M925.636 362.246C924.091 380.219 908.269 393.535 890.297 391.99L597.423 366.806C579.451 365.261 566.135 349.439 567.68 331.467C569.225 313.495 585.047 300.178 603.02 301.723L795.169 318.246C773.671 305.312 750.485 295.134 726.141 288.055C670.742 271.946 611.841 272.615 556.889 289.97C501.938 307.324 453.399 340.583 417.406 385.538C406.132 399.62 385.578 401.896 371.497 390.622C357.415 379.348 355.139 358.793 366.413 344.712C410.495 289.653 469.937 248.926 537.217 227.679C604.497 206.431 676.59 205.617 744.381 225.33C788.964 238.294 830.372 259.754 866.431 288.295L885.737 63.7768C887.282 45.8046 903.104 32.4881 921.076 34.0334C939.049 35.5788 952.365 51.4009 950.82 69.3731L925.636 362.246Z\",\n fill: \"#F6F6F6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M890.297 391.99L890.058 394.759L890.297 391.99ZM925.636 362.246L928.406 362.485L925.636 362.246ZM597.423 366.806L597.185 369.576L597.423 366.806ZM567.68 331.467L564.91 331.229L567.68 331.467ZM603.02 301.723L602.781 304.493L603.02 301.723ZM795.169 318.246L794.931 321.015L796.602 315.864L795.169 318.246ZM726.141 288.055L726.917 285.386L726.141 288.055ZM556.889 289.97L556.052 287.319L556.889 289.97ZM417.406 385.538L415.236 383.801L417.406 385.538ZM371.497 390.622L373.234 388.452L373.234 388.452L371.497 390.622ZM366.413 344.712L368.583 346.449L366.413 344.712ZM537.217 227.679L538.054 230.329L537.217 227.679ZM744.381 225.33L745.157 222.661L744.381 225.33ZM866.431 288.295L864.706 290.474L868.758 293.682L869.2 288.533L866.431 288.295ZM885.737 63.7768L888.506 64.0149L885.737 63.7768ZM921.076 34.0334L920.838 36.8029L920.838 36.8029L921.076 34.0334ZM950.82 69.3731L953.589 69.6112L950.82 69.3731ZM890.058 394.759C909.56 396.436 926.729 381.986 928.406 362.485L922.867 362.008C921.453 378.451 906.977 390.634 890.535 389.22L890.058 394.759ZM597.185 369.576L890.058 394.759L890.535 389.22L597.661 364.037L597.185 369.576ZM564.91 331.229C563.234 350.73 577.683 367.899 597.185 369.576L597.661 364.037C581.219 362.623 569.036 348.148 570.449 331.705L564.91 331.229ZM603.258 298.954C583.756 297.277 566.587 311.727 564.91 331.229L570.449 331.705C571.863 315.262 586.339 303.079 602.781 304.493L603.258 298.954ZM795.407 315.476L603.258 298.954L602.781 304.493L794.931 321.015L795.407 315.476ZM725.365 290.724C749.477 297.735 772.442 307.817 793.736 320.628L796.602 315.864C774.899 302.807 751.492 292.532 726.917 285.386L725.365 290.724ZM557.726 292.62C612.154 275.432 670.493 274.768 725.365 290.724L726.917 285.386C670.99 269.123 611.529 269.799 556.052 287.319L557.726 292.62ZM419.576 387.276C455.225 342.75 503.3 309.809 557.726 292.62L556.052 287.319C500.576 304.839 451.573 338.416 415.236 383.801L419.576 387.276ZM369.759 392.792C385.039 405.025 407.343 402.555 419.576 387.276L415.236 383.801C404.922 396.684 386.117 398.766 373.234 388.452L369.759 392.792ZM364.243 342.974C352.01 358.254 354.479 380.558 369.759 392.792L373.234 388.452C360.351 378.137 358.269 359.332 368.583 346.449L364.243 342.974ZM536.38 225.028C468.575 246.441 408.669 287.486 364.243 342.974L368.583 346.449C412.321 291.82 471.299 251.411 538.054 230.329L536.38 225.028ZM745.157 222.661C676.839 202.795 604.185 203.615 536.38 225.028L538.054 230.329C604.81 209.248 676.341 208.44 743.604 227.999L745.157 222.661ZM868.156 286.115C831.817 257.353 790.087 235.726 745.157 222.661L743.604 227.999C787.841 240.863 828.927 262.156 864.706 290.474L868.156 286.115ZM882.967 63.5386L863.662 288.057L869.2 288.533L888.506 64.0149L882.967 63.5386ZM921.314 31.264C901.813 29.5871 884.644 44.0369 882.967 63.5386L888.506 64.0149C889.92 47.5723 904.396 35.3891 920.838 36.8029L921.314 31.264ZM953.589 69.6112C955.266 50.1095 940.816 32.9408 921.314 31.264L920.838 36.8029C937.281 38.2168 949.464 52.6923 948.05 69.1349L953.589 69.6112ZM928.406 362.485L953.589 69.6112L948.05 69.1349L922.867 362.008L928.406 362.485Z\",\n fill: \"url(#paint2_linear_1870_4058)\",\n mask: \"url(#path-5-inside-3_1870_4058)\"\n }), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"path-7-inside-4_1870_4058\",\n fill: \"white\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M687.631 253.057L817.564 -10.6215C825.537 -26.8022 845.118 -33.4555 861.299 -25.4821L1124.98 104.451C1141.07 112.379 1147.74 131.784 1139.97 147.911C1166.17 143.171 1191.49 133.942 1214.79 120.493C1230.41 111.473 1250.39 116.826 1259.41 132.448C1268.42 148.069 1263.07 168.045 1247.45 177.064C1196.39 206.545 1137.72 220.196 1078.87 216.296C1020.02 212.395 963.631 191.12 916.833 155.169C888.95 133.749 865.215 107.69 846.567 78.3046L746.226 281.931C738.253 298.112 718.672 304.765 702.491 296.792C686.311 288.818 679.658 269.238 687.631 253.057ZM933.268 82.8058C940.562 90.1442 948.362 97.0166 956.628 103.367C989.446 128.578 1028.29 144.545 1069.13 149.754L933.268 82.8058Z\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M687.631 253.057L817.564 -10.6215C825.537 -26.8022 845.118 -33.4555 861.299 -25.4821L1124.98 104.451C1141.07 112.379 1147.74 131.784 1139.97 147.911C1166.17 143.171 1191.49 133.942 1214.79 120.493C1230.41 111.473 1250.39 116.826 1259.41 132.448C1268.42 148.069 1263.07 168.045 1247.45 177.064C1196.39 206.545 1137.72 220.196 1078.87 216.296C1020.02 212.395 963.631 191.12 916.833 155.169C888.95 133.749 865.215 107.69 846.567 78.3046L746.226 281.931C738.253 298.112 718.672 304.765 702.491 296.792C686.311 288.818 679.658 269.238 687.631 253.057ZM933.268 82.8058C940.562 90.1442 948.362 97.0166 956.628 103.367C989.446 128.578 1028.29 144.545 1069.13 149.754L933.268 82.8058Z\",\n fill: \"#F6F6F6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M817.564 -10.6215L820.057 -9.39284L820.058 -9.39286L817.564 -10.6215ZM687.631 253.057L685.137 251.828L685.137 251.828L687.631 253.057ZM861.299 -25.4821L862.527 -27.9756L861.299 -25.4821ZM1124.98 104.451L1126.21 101.958L1124.98 104.451ZM1139.97 147.911L1137.47 146.705L1135.1 151.617L1140.47 150.646L1139.97 147.911ZM1214.79 120.493L1213.4 118.085L1214.79 120.493ZM1247.45 177.064L1248.84 179.472L1247.45 177.064ZM1078.87 216.296L1079.05 213.522L1078.87 216.296ZM916.833 155.169L918.527 152.965L916.833 155.169ZM846.567 78.3046L848.914 76.8152L846.262 72.6355L844.074 77.0759L846.567 78.3046ZM746.226 281.931L748.72 283.16L746.226 281.931ZM702.491 296.792L703.72 294.298L703.72 294.298L702.491 296.792ZM956.628 103.367L954.935 105.572L956.628 103.367ZM933.268 82.8058L934.497 80.3124L931.297 84.7653L933.268 82.8058ZM1069.13 149.754L1068.78 152.511L1070.36 147.261L1069.13 149.754ZM815.071 -11.8502L685.137 251.828L690.124 254.286L820.057 -9.39284L815.071 -11.8502ZM862.527 -27.9756C844.97 -36.6275 823.723 -29.4079 815.071 -11.8502L820.058 -9.39286C827.352 -24.1964 845.266 -30.2835 860.07 -22.9887L862.527 -27.9756ZM1126.21 101.958L862.527 -27.9756L860.07 -22.9887L1123.75 106.945L1126.21 101.958ZM1142.48 149.117C1150.9 131.617 1143.66 110.561 1126.21 101.958L1123.75 106.945C1138.47 114.198 1144.57 131.951 1137.47 146.705L1142.48 149.117ZM1213.4 118.085C1190.38 131.373 1165.36 140.492 1139.48 145.176L1140.47 150.646C1166.98 145.85 1192.61 136.51 1216.18 122.9L1213.4 118.085ZM1261.81 131.058C1252.03 114.107 1230.35 108.299 1213.4 118.085L1216.18 122.9C1230.47 114.648 1248.75 119.545 1257 133.838L1261.81 131.058ZM1248.84 179.472C1265.79 169.685 1271.6 148.009 1261.81 131.058L1257 133.838C1265.25 148.13 1260.35 166.405 1246.06 174.657L1248.84 179.472ZM1078.69 219.069C1138.09 223.006 1197.3 209.228 1248.84 179.472L1246.06 174.657C1195.48 203.862 1137.36 217.386 1079.05 213.522L1078.69 219.069ZM915.14 157.374C962.373 193.659 1019.29 215.133 1078.69 219.069L1079.05 213.522C1020.75 209.658 964.889 188.581 918.527 152.965L915.14 157.374ZM844.22 79.7939C863.041 109.453 886.997 135.754 915.14 157.374L918.527 152.965C890.902 131.744 867.388 105.928 848.914 76.8152L844.22 79.7939ZM748.72 283.16L849.061 79.5332L844.074 77.0759L743.733 280.702L748.72 283.16ZM701.263 299.285C718.82 307.937 740.068 300.717 748.72 283.16L743.733 280.702C736.438 295.506 718.524 301.593 703.72 294.298L701.263 299.285ZM685.137 251.828C676.486 269.386 683.705 290.633 701.263 299.285L703.72 294.298C688.917 287.004 682.83 269.089 690.124 254.286L685.137 251.828ZM958.322 101.163C950.154 94.8879 942.446 88.0973 935.24 80.8463L931.297 84.7653C938.677 92.1911 946.57 99.1454 954.935 105.572L958.322 101.163ZM1069.48 146.997C1029.13 141.849 990.749 126.074 958.322 101.163L954.935 105.572C988.144 131.083 1027.45 147.24 1068.78 152.511L1069.48 146.997ZM932.039 85.2992L1067.9 152.247L1070.36 147.261L934.497 80.3124L932.039 85.2992Z\",\n fill: \"url(#paint3_linear_1870_4058)\",\n mask: \"url(#path-7-inside-4_1870_4058)\"\n }), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"path-9-inside-5_1870_4058\",\n fill: \"white\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1840.88 318.401C1839.69 300.401 1853.33 284.849 1871.32 283.664L2164.64 264.35C2182.64 263.165 2198.2 276.795 2199.38 294.795C2200.57 312.794 2186.94 328.347 2168.94 329.532L1969.31 342.676C2008.81 363.391 2051.85 377.131 2096.52 383.037C2171.22 392.915 2247.14 380.438 2314.68 347.194C2382.21 313.95 2438.33 261.433 2475.95 196.284C2484.97 180.662 2504.94 175.31 2520.56 184.329C2536.19 193.348 2541.54 213.324 2532.52 228.946C2488.43 305.303 2422.66 366.848 2343.53 405.801C2264.4 444.755 2175.45 459.366 2087.96 447.797C2024.76 439.442 1964.37 417.702 1910.69 384.352L1925.38 607.428C1926.56 625.427 1912.93 640.979 1894.93 642.165C1876.93 643.35 1861.38 629.719 1860.19 611.72L1840.88 318.401Z\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1840.88 318.401C1839.69 300.401 1853.33 284.849 1871.32 283.664L2164.64 264.35C2182.64 263.165 2198.2 276.795 2199.38 294.795C2200.57 312.794 2186.94 328.347 2168.94 329.532L1969.31 342.676C2008.81 363.391 2051.85 377.131 2096.52 383.037C2171.22 392.915 2247.14 380.438 2314.68 347.194C2382.21 313.95 2438.33 261.433 2475.95 196.284C2484.97 180.662 2504.94 175.31 2520.56 184.329C2536.19 193.348 2541.54 213.324 2532.52 228.946C2488.43 305.303 2422.66 366.848 2343.53 405.801C2264.4 444.755 2175.45 459.366 2087.96 447.797C2024.76 439.442 1964.37 417.702 1910.69 384.352L1925.38 607.428C1926.56 625.427 1912.93 640.979 1894.93 642.165C1876.93 643.35 1861.38 629.719 1860.19 611.72L1840.88 318.401Z\",\n fill: \"#F6F6F6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1871.32 283.664L1871.14 280.89L1871.32 283.664ZM1840.88 318.401L1838.11 318.583L1840.88 318.401ZM2164.64 264.35L2164.46 261.576L2164.64 264.35ZM2199.38 294.795L2202.15 294.612L2199.38 294.795ZM2168.94 329.532L2169.12 332.306L2168.94 329.532ZM1969.31 342.676L1969.13 339.903L1959.28 340.551L1968.02 345.138L1969.31 342.676ZM2096.52 383.037L2096.88 380.281L2096.52 383.037ZM2314.68 347.194L2313.45 344.7L2314.68 347.194ZM2475.95 196.284L2478.36 197.674L2475.95 196.284ZM2532.52 228.946L2530.11 227.556L2532.52 228.946ZM2343.53 405.801L2344.76 408.295L2343.53 405.801ZM2087.96 447.797L2088.32 445.041L2087.96 447.797ZM1910.69 384.352L1912.15 381.991L1907.56 379.135L1907.91 384.535L1910.69 384.352ZM1925.38 607.428L1922.6 607.61L1925.38 607.428ZM1860.19 611.72L1862.97 611.537L1862.97 611.537L1860.19 611.72ZM1871.14 280.89C1851.61 282.176 1836.82 299.052 1838.11 318.583L1843.65 318.218C1842.57 301.75 1855.04 287.522 1871.51 286.437L1871.14 280.89ZM2164.46 261.576L1871.14 280.89L1871.51 286.437L2164.83 267.124L2164.46 261.576ZM2202.15 294.612C2200.87 275.081 2183.99 260.29 2164.46 261.576L2164.83 267.124C2181.29 266.039 2195.52 278.51 2196.61 294.978L2202.15 294.612ZM2169.12 332.306C2188.65 331.02 2203.44 314.144 2202.15 294.612L2196.61 294.978C2197.69 311.445 2185.22 325.674 2168.75 326.758L2169.12 332.306ZM1969.5 345.45L2169.12 332.306L2168.75 326.758L1969.13 339.903L1969.5 345.45ZM2096.88 380.281C2052.54 374.418 2009.82 360.778 1970.6 340.214L1968.02 345.138C2007.81 366.003 2051.16 379.844 2096.15 385.793L2096.88 380.281ZM2313.45 344.7C2246.41 377.701 2171.04 390.087 2096.88 380.281L2096.15 385.793C2171.4 395.742 2247.88 383.175 2315.91 349.688L2313.45 344.7ZM2473.54 194.894C2436.2 259.566 2380.49 311.7 2313.45 344.7L2315.91 349.688C2383.94 316.201 2440.47 263.299 2478.36 197.674L2473.54 194.894ZM2521.95 181.922C2505 172.135 2483.33 177.943 2473.54 194.894L2478.36 197.674C2486.61 183.382 2504.88 178.485 2519.17 186.737L2521.95 181.922ZM2534.93 230.336C2544.71 213.384 2538.91 191.709 2521.95 181.922L2519.17 186.737C2533.47 194.988 2538.36 213.264 2530.11 227.556L2534.93 230.336ZM2344.76 408.295C2424.39 369.099 2490.57 307.17 2534.93 230.336L2530.11 227.556C2486.3 303.436 2420.94 364.597 2342.3 403.307L2344.76 408.295ZM2087.59 450.552C2175.63 462.193 2265.13 447.491 2344.76 408.295L2342.3 403.307C2263.66 442.018 2175.27 456.538 2088.32 445.041L2087.59 450.552ZM1909.22 386.713C1963.24 420.271 2024.01 442.145 2087.59 450.552L2088.32 445.041C2025.52 436.738 1965.5 415.134 1912.15 381.991L1909.22 386.713ZM1928.15 607.245L1913.46 384.169L1907.91 384.535L1922.6 607.61L1928.15 607.245ZM1895.11 644.938C1914.64 643.652 1929.44 626.776 1928.15 607.245L1922.6 607.61C1923.69 624.078 1911.22 638.307 1894.75 639.391L1895.11 644.938ZM1857.42 611.902C1858.71 631.434 1875.58 646.224 1895.11 644.938L1894.75 639.391C1878.28 640.475 1864.05 628.005 1862.97 611.537L1857.42 611.902ZM1838.11 318.583L1857.42 611.902L1862.97 611.537L1843.65 318.218L1838.11 318.583Z\",\n fill: \"url(#paint4_linear_1870_4058)\",\n mask: \"url(#path-9-inside-5_1870_4058)\"\n }), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"path-11-inside-6_1870_4058\",\n fill: \"white\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2899.97 422.318C2901.16 440.318 2887.53 455.87 2869.53 457.055L2576.21 476.369C2558.21 477.554 2542.66 463.923 2541.47 445.924C2540.28 427.924 2553.92 412.372 2571.91 411.187L2771.54 398.043C2732.04 377.328 2689 363.588 2644.33 357.682C2569.63 347.804 2493.71 360.281 2426.17 393.525C2358.64 426.768 2302.52 479.286 2264.9 544.435C2255.88 560.056 2235.91 565.409 2220.29 556.39C2204.66 547.37 2199.31 527.395 2208.33 511.773C2252.42 435.416 2318.19 373.871 2397.32 334.917C2476.46 295.964 2565.4 281.353 2652.89 292.922C2716.09 301.277 2776.48 323.017 2830.16 356.367L2815.48 133.291C2814.29 115.292 2827.92 99.7393 2845.92 98.5541C2863.92 97.3689 2879.47 111 2880.66 128.999L2899.97 422.318Z\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2899.97 422.318C2901.16 440.318 2887.53 455.87 2869.53 457.055L2576.21 476.369C2558.21 477.554 2542.66 463.923 2541.47 445.924C2540.28 427.924 2553.92 412.372 2571.91 411.187L2771.54 398.043C2732.04 377.328 2689 363.588 2644.33 357.682C2569.63 347.804 2493.71 360.281 2426.17 393.525C2358.64 426.768 2302.52 479.286 2264.9 544.435C2255.88 560.056 2235.91 565.409 2220.29 556.39C2204.66 547.37 2199.31 527.395 2208.33 511.773C2252.42 435.416 2318.19 373.871 2397.32 334.917C2476.46 295.964 2565.4 281.353 2652.89 292.922C2716.09 301.277 2776.48 323.017 2830.16 356.367L2815.48 133.291C2814.29 115.292 2827.92 99.7393 2845.92 98.5541C2863.92 97.3689 2879.47 111 2880.66 128.999L2899.97 422.318Z\",\n fill: \"#F6F6F6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2869.53 457.055L2869.71 459.829L2869.53 457.055ZM2899.97 422.318L2902.74 422.135L2899.97 422.318ZM2576.21 476.369L2576.39 479.143L2576.21 476.369ZM2541.47 445.924L2538.7 446.106L2541.47 445.924ZM2571.91 411.187L2571.73 408.413L2571.91 411.187ZM2771.54 398.043L2771.72 400.816L2781.58 400.167L2772.83 395.581L2771.54 398.043ZM2644.33 357.682L2643.97 360.437L2644.33 357.682ZM2426.17 393.525L2427.4 396.019L2426.17 393.525ZM2264.9 544.435L2262.5 543.045L2264.9 544.435ZM2208.33 511.773L2210.74 513.163L2208.33 511.773ZM2397.32 334.917L2396.09 332.423L2397.32 334.917ZM2652.89 292.922L2652.53 295.678L2652.89 292.922ZM2830.16 356.367L2828.7 358.728L2833.29 361.583L2832.94 356.184L2830.16 356.367ZM2815.48 133.291L2818.25 133.108L2815.48 133.291ZM2880.66 128.999L2877.88 129.182L2877.88 129.182L2880.66 128.999ZM2869.71 459.829C2889.24 458.543 2904.03 441.667 2902.74 422.135L2897.2 422.501C2898.28 438.968 2885.81 453.197 2869.34 454.281L2869.71 459.829ZM2576.39 479.143L2869.71 459.829L2869.34 454.281L2576.02 473.595L2576.39 479.143ZM2538.7 446.106C2539.98 465.638 2556.86 480.429 2576.39 479.143L2576.02 473.595C2559.56 474.679 2545.33 462.209 2544.24 445.741L2538.7 446.106ZM2571.73 408.413C2552.2 409.699 2537.41 426.575 2538.7 446.106L2544.24 445.741C2543.16 429.274 2555.63 415.045 2572.1 413.961L2571.73 408.413ZM2771.36 395.269L2571.73 408.413L2572.1 413.961L2771.72 400.816L2771.36 395.269ZM2643.97 360.437C2688.31 366.3 2731.03 379.94 2770.25 400.504L2772.83 395.581C2733.04 374.715 2689.69 360.875 2644.7 354.926L2643.97 360.437ZM2427.4 396.019C2494.44 363.018 2569.81 350.632 2643.97 360.437L2644.7 354.926C2569.45 344.976 2492.97 357.544 2424.94 391.031L2427.4 396.019ZM2267.31 545.824C2304.65 481.153 2360.36 429.019 2427.4 396.019L2424.94 391.031C2356.91 424.517 2300.38 477.419 2262.5 543.045L2267.31 545.824ZM2218.9 558.797C2235.85 568.584 2257.52 562.776 2267.31 545.824L2262.5 543.045C2254.24 557.337 2235.97 562.234 2221.68 553.982L2218.9 558.797ZM2205.92 510.383C2196.14 527.334 2201.94 549.01 2218.9 558.797L2221.68 553.982C2207.38 545.731 2202.49 527.455 2210.74 513.163L2205.92 510.383ZM2396.09 332.423C2316.47 371.62 2250.28 433.549 2205.92 510.383L2210.74 513.163C2254.55 437.283 2319.91 376.122 2398.55 337.411L2396.09 332.423ZM2653.26 290.166C2565.22 278.525 2475.72 293.227 2396.09 332.423L2398.55 337.411C2477.19 298.701 2565.58 284.181 2652.53 295.678L2653.26 290.166ZM2831.63 354.006C2777.61 320.448 2716.84 298.573 2653.26 290.166L2652.53 295.678C2715.33 303.981 2775.35 325.585 2828.7 358.728L2831.63 354.006ZM2812.7 133.474L2827.39 356.549L2832.94 356.184L2818.25 133.108L2812.7 133.474ZM2845.74 95.7804C2826.21 97.0665 2811.42 113.942 2812.7 133.474L2818.25 133.108C2817.16 116.641 2829.64 102.412 2846.1 101.328L2845.74 95.7804ZM2883.43 128.817C2882.14 109.285 2865.27 94.4944 2845.74 95.7804L2846.1 101.328C2862.57 100.244 2876.8 112.714 2877.88 129.182L2883.43 128.817ZM2902.74 422.135L2883.43 128.817L2877.88 129.182L2897.2 422.501L2902.74 422.135Z\",\n fill: \"url(#paint5_linear_1870_4058)\",\n mask: \"url(#path-11-inside-6_1870_4058)\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_1870_4058\",\n x1: 2282.76,\n y1: 295.344,\n x2: 1767.13,\n y2: 236.97,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#467FFF\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#F4BB30\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_1870_4058\",\n x1: 423.232,\n y1: 312.436,\n x2: 929.312,\n y2: 427.201,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#467FFF\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#F4BB30\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint2_linear_1870_4058\",\n x1: 914.917,\n y1: 22.0395,\n x2: 522.819,\n y2: 511.775,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#2EBB8E\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#457EFF\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint3_linear_1870_4058\",\n x1: 686.364,\n y1: 279.884,\n x2: 1179.99,\n y2: -5.10926,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F4BB30\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#467FFF\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint4_linear_1870_4058\",\n x1: 1949.05,\n y1: 679.778,\n x2: 2306.47,\n y2: 60.7191,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#467FFF\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#2EBB8E\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint5_linear_1870_4058\",\n x1: 2791.8,\n y1: 60.9409,\n x2: 2434.38,\n y2: 680,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#467FFF\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#2EBB8E\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_1870_4058\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 2936,\n height: 500,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgHeadingBg);\nexport default __webpack_public_path__ + \"static/media/heading-bg.9729a44ed7a03a52996366c8a980665b.svg\";\nexport { ForwardRef as ReactComponent };","import bg from '../assets/svg/heading-bg.svg';\n\nconst Heading = () => (\n
\n \"heading\"/\n
\n);\n\nexport default Heading;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgInfoIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5 10C18.5 5.58172 14.9183 2 10.5 2C6.08172 2 2.5 5.58172 2.5 10C2.5 14.4183 6.08172 18 10.5 18C14.9183 18 18.5 14.4183 18.5 10ZM10.0081 8.91012C10.0504 8.67687 10.2545 8.49999 10.5 8.49999C10.7455 8.49999 10.9496 8.67687 10.9919 8.91012L11 8.99999V13.5021L10.9919 13.592C10.9496 13.8253 10.7455 14.0021 10.5 14.0021C10.2545 14.0021 10.0504 13.8253 10.0081 13.592L10 13.5021V8.99999L10.0081 8.91012ZM9.75 6.74999C9.75 6.33578 10.0858 5.99999 10.5 5.99999C10.9142 5.99999 11.25 6.33578 11.25 6.74999C11.25 7.16421 10.9142 7.49999 10.5 7.49999C10.0858 7.49999 9.75 7.16421 9.75 6.74999Z\",\n fill: \"#393B40\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgInfoIcon);\nexport default __webpack_public_path__ + \"static/media/info-icon.23e5ae140ba8e1f49eb4aa538c803795.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgChatHelpIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.00001 10C2.00001 5.58172 5.58173 2 10 2C14.4183 2 18 5.58172 18 10C18 14.4183 14.4183 18 10 18C8.65078 18 7.37829 17.6656 6.26225 17.0748L2.62128 17.9851C2.45089 18.0277 2.27065 17.9777 2.14646 17.8536C2.02227 17.7294 1.97234 17.5491 2.01494 17.3787L2.92518 13.7378C2.33442 12.6217 2.00001 11.3492 2.00001 10ZM9.25027 7.30723C9.40317 7.13358 9.64031 7 10 7C10.3597 7 10.5968 7.13358 10.7497 7.30723C10.9113 7.49072 11 7.74463 11 8C11 8.31707 10.9286 8.52273 10.8337 8.68547C10.7328 8.85858 10.5985 8.99908 10.4106 9.19559L10.3885 9.21878C10.2003 9.41576 9.96787 9.66319 9.79142 10.0002C9.61017 10.3464 9.5 10.7611 9.5 11.2929C9.5 11.5691 9.72386 11.7929 10 11.7929C10.2761 11.7929 10.5 11.5691 10.5 11.2929C10.5 10.9085 10.5773 10.6551 10.6773 10.4641C10.7821 10.2639 10.9247 10.1051 11.1115 9.90956L11.1528 9.86652C11.3225 9.68963 11.5347 9.46855 11.6976 9.18921C11.8839 8.86964 12 8.48947 12 8C12 7.52689 11.8387 7.0308 11.5003 6.64641C11.1532 6.25219 10.6403 6 10 6C9.35969 6 8.84683 6.25219 8.49973 6.64641C8.16129 7.0308 8 7.52689 8 8C8 8.27614 8.22386 8.5 8.5 8.5C8.77614 8.5 9 8.27614 9 8C9 7.74463 9.08871 7.49072 9.25027 7.30723ZM10.6995 13.5126C10.6995 13.1262 10.3863 12.813 9.99989 12.813C9.61352 12.813 9.30029 13.1262 9.30029 13.5126C9.30029 13.899 9.61352 14.2122 9.99989 14.2122C10.3863 14.2122 10.6995 13.899 10.6995 13.5126Z\",\n fill: \"#393B40\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgChatHelpIcon);\nexport default __webpack_public_path__ + \"static/media/chat-help-icon.1438ef47f9cdaf8bc8aebbb186b3b48a.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Heading from './Heading';\nimport { Footer, Button, NotificationContainer } from '@airdao/ui-library';\nimport { ReactComponent as InfoIcon } from '../assets/svg/info-icon.svg';\nimport { ReactComponent as ChatHelpIcon } from '../assets/svg/chat-help-icon.svg';\nimport 'react-toastify/dist/ReactToastify.css';\n\nimport '../styles/Main.scss';\n\nexport const Layout = ({ children }) => {\n return (\n
\n \n
\n \n
{children}
\n
\n
\n \n \n \n \n \n \n
\n
\n
\n );\n};\n\nLayout.propTypes = {\n children: PropTypes.node,\n web3ReactInstance: PropTypes.object,\n connectors: PropTypes.object,\n};\n\nexport default Layout;\n","import { BigNumber } from 'ethers';\nimport { createTokenContract } from '../../contracts';\n\nconst increaseAllowanceIfNeeded = async (\n account,\n token,\n contractAddress,\n transactionAmount,\n signer,\n foreignChainId\n) => {\n const TokenContract = createTokenContract(token.address, signer);\n const allowance = await TokenContract.allowance(account, contractAddress);\n\n const tokenDecimals =\n token.symbol === 'BUSD' || token.symbol === 'USDC'\n ? token.decimals[foreignChainId]\n : token.denomination;\n\n const oneHundredThousand = BigNumber.from('100000').mul(\n BigNumber.from('10').pow(tokenDecimals)\n );\n\n console.log('allowance in wei', allowance.toString());\n\n // console.log('tx amount in wei', transactionAmount.toString());\n\n console.log(\n 'allowance ligther then tx amount',\n allowance.lt(transactionAmount)\n );\n\n if (\n allowance.lt(transactionAmount) &&\n transactionAmount.lte(oneHundredThousand)\n ) {\n await TokenContract.approve(\n contractAddress,\n BigNumber.from(oneHundredThousand)\n )\n .then((tx) => tx.wait())\n .catch((e) => {\n throw e;\n });\n }\n\n console.log(\n 'allowance ligther then tx amount and tx amount greater than 100k',\n allowance.lt(transactionAmount) && transactionAmount.gt(oneHundredThousand)\n );\n if (\n allowance.lt(transactionAmount) &&\n transactionAmount.gt(oneHundredThousand)\n ) {\n await TokenContract.approve(contractAddress, transactionAmount).then((tx) =>\n tx.wait()\n );\n }\n};\n\nexport default increaseAllowanceIfNeeded;\n","import { BigNumber, utils } from 'ethers';\nimport { ambChainId } from '../providers';\nimport { createBridgeContract } from '../../contracts';\nimport getFee from '../getFee';\nimport increaseAllowanceIfNeeded from './increaseAllowanceIfNeeded';\n\n// we use token denomination of departure network to ask for allowance\n// we use token denomination of destination network to send transaction and ask for fee\n\nconst withdrawCoins = async (\n transactionAmount,\n selectedCoin,\n receivedCoin,\n account,\n chainId,\n foreignChainId,\n contractAddress,\n signer\n) => {\n const bnAllowanceToAsk = BigNumber.from(\n utils.parseUnits(transactionAmount, selectedCoin.denomination)\n );\n\n console.log('allowanceToAsk', bnAllowanceToAsk.toString(), 'wei');\n\n const bnTransactionAmount = BigNumber.from(\n utils.parseUnits(transactionAmount, selectedCoin?.decimals[foreignChainId])\n );\n\n console.log('txAmount', bnTransactionAmount.toString(), 'wei');\n\n const isFromAmb = chainId === ambChainId;\n\n const { bridgeFee, transferFee, signature } = await getFee(\n isFromAmb,\n transactionAmount,\n selectedCoin,\n foreignChainId,\n false\n );\n\n const gasOpts =\n chainId === isFromAmb ? { gasLimit: 8000000, gasPrice: 1 } : {};\n\n const BridgeContract = createBridgeContract(contractAddress, signer);\n\n // if native coin\n if (selectedCoin.wrappedAnalog) {\n return BridgeContract.wrapWithdraw(\n account,\n signature,\n transferFee,\n bridgeFee,\n {\n value: bnTransactionAmount.add(transferFee).add(bridgeFee),\n ...gasOpts,\n }\n );\n }\n\n // if wrapped coin\n await increaseAllowanceIfNeeded(\n account,\n selectedCoin,\n contractAddress,\n bnAllowanceToAsk,\n signer,\n foreignChainId\n );\n\n console.log({\n tokenThisAddress: selectedCoin.address,\n toAddress: account,\n amount: bnTransactionAmount.toString(),\n unwrapSide: !!receivedCoin.wrappedAnalog,\n feeSignature: signature,\n transferFee: transferFee.toString(),\n bridgeFee: bridgeFee.toString(),\n value: BigNumber.from(transferFee).add(bridgeFee).toString(),\n });\n\n return BridgeContract.withdraw(\n selectedCoin.address,\n account,\n bnTransactionAmount,\n !!receivedCoin.wrappedAnalog,\n signature,\n transferFee,\n bridgeFee,\n { value: BigNumber.from(transferFee).add(bridgeFee), ...gasOpts }\n );\n};\n\nexport default withdrawCoins;\n","import React from 'react';\n\nconst ErrorContext = React.createContext({\n error: '',\n setError: () => {},\n});\n\nexport default ErrorContext;\n","import { useContext } from 'react';\nimport ErrorContext from '../contexts/ErrorContext/context';\n\nconst useError = () => {\n const { error, setError } = useContext(ErrorContext);\n\n return { error, setError };\n};\n\nexport default useError;\n","var _path, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgCircleLoader(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 21,\n viewBox: \"0 0 21 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.8203 17.8489C14.1885 19.0449 12.2013 19.6562 10.1794 19.5841C8.15752 19.5121 6.21889 18.7608 4.67636 17.4517C3.13383 16.1426 2.07739 14.3519 1.67753 12.3686C1.27767 10.3853 1.55771 8.3252 2.47246 6.52063C3.3872 4.71606 4.8833 3.27233 6.71931 2.42245C8.55532 1.57256 10.6241 1.36608 12.5919 1.83633C14.5597 2.30659 16.3116 3.42614 17.565 5.01432C18.8183 6.6025 19.5 8.56667 19.5 10.5898\",\n stroke: \"url(#paint0_linear_1165_2431)\",\n strokeWidth: 2\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_1165_2431\",\n x1: 0.5,\n y1: 0.589844,\n x2: 20.5,\n y2: 0.589844,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#457EFF\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#1A3D8D\",\n stopOpacity: 0\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCircleLoader);\nexport default __webpack_public_path__ + \"static/media/circle-loader.3bae5537cabf295c5cd49bef670d4933.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useEffect, useMemo } from 'react';\nimport { useHistory } from 'react-router';\nimport { BigNumber, utils } from 'ethers';\nimport InlineLoader from '../components/InlineLoader';\nimport withdrawCoins from '../utils/ethers/withdrawCoins';\nimport { ambChainId } from '../utils/providers';\nimport NetworkOrTokenIcon from '../components/NetworkOrTokenIcon';\nimport getFee from '../utils/getFee';\nimport { getNetworkByChainId } from '../utils/networks';\nimport useError from '../hooks/useError';\nimport useBridges from '../hooks/useBridges';\nimport usePrevious from '../hooks/usePrevious';\nimport arrow from '../assets/svg/arrow-right.svg';\nimport { Helmet } from 'react-helmet';\nimport { Button, Notify, useEthersAdapter } from '@airdao/ui-library';\nimport loader from '../assets/svg/circle-loader.svg';\nimport { useAccount } from 'wagmi';\n\nconst Confirmation = () => {\n const { setError } = useError();\n const { address: account, chainId } = useAccount();\n const { signer } = useEthersAdapter();\n const prevChainId = usePrevious(chainId);\n const prevAccount = usePrevious(account);\n const bridges = useBridges();\n const history = useHistory();\n\n if (history.location.state === undefined) history.push('/');\n\n const {\n destinationChainId,\n selectedCoin,\n receivedCoin,\n transactionAmount,\n foreignChainId,\n } = history.location.state;\n\n useEffect(() => {\n if (!destinationChainId) history.push('/');\n }, [history, destinationChainId]);\n\n useEffect(() => {\n if (account && prevAccount && account !== prevAccount) history.goBack();\n }, [account, prevAccount, history]);\n\n const departureNetwork = useMemo(\n () => getNetworkByChainId(chainId),\n [chainId]\n );\n const destinationNetwork = useMemo(\n () => getNetworkByChainId(destinationChainId),\n [destinationChainId]\n );\n const isFromAmb = useMemo(() => chainId === ambChainId, [chainId]);\n\n const [ambPrice, setAmbPrice] = useState(0);\n\n const [fee, setFee] = useState('');\n useEffect(() => {\n (async () => {\n const { transferFee, bridgeFee } = await getFee(\n chainId === ambChainId,\n transactionAmount,\n selectedCoin,\n foreignChainId\n );\n setFee({ transferFee, bridgeFee });\n\n fetch('https://token.ambrosus.io/')\n .then((res) => res.json())\n .then((res) => setAmbPrice(res.data.price_usd));\n })();\n }, []);\n\n const [isLocked, setIsLocked] = useState(false);\n const bnTransactionAmount = BigNumber.from(\n utils.parseUnits(transactionAmount, selectedCoin.denomination)\n );\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n\n setIsLocked(true);\n\n const bridgeAddress =\n bridges[foreignChainId][isFromAmb ? 'native' : 'foreign'];\n\n await withdrawCoins(\n transactionAmount,\n selectedCoin,\n receivedCoin,\n account,\n chainId,\n foreignChainId,\n bridgeAddress,\n signer\n )\n .then((res) => {\n history.push(`/status/${res.hash}/`);\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n setIsLocked(false);\n\n let errorMsg = 'There is some error, try again later';\n if (e.code === 4001) return; // user denied tx, do nothing\n if (e.code === 'INSUFFICIENT_FUNDS')\n errorMsg = 'Insufficient funds for transaction processing';\n if (e.data?.message.includes('err: insufficient funds'))\n errorMsg = 'Insufficient funds for transaction processing';\n\n console.error(e);\n Notify.error(errorMsg, null, { autoClose: 5000 });\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n setTimeout(setError, 7500, '');\n });\n };\n\n useEffect(() => {\n if (chainId && prevChainId && chainId !== prevChainId) history.push('/');\n }, [chainId, prevChainId, history]);\n\n const back = (e) => {\n e.preventDefault();\n history.goBack();\n };\n\n const isAmbTransfered = useMemo(() => {\n return selectedCoin.symbol === 'AMB' || selectedCoin.symbol === 'SAMB';\n }, [selectedCoin]);\n\n return (\n destinationChainId && (\n
\n \n \n \n
\n \n \n \n Summary\n
\n
\n
\n

Source network

\n
\n \n

\n {departureNetwork.name}\n

\n
\n
\n
\n arrow\n
\n
\n

Destination network

\n
\n \n

\n {destinationNetwork.name}\n

\n
\n
\n
\n
\n
\n You`re moving\n \n {utils.formatUnits(\n bnTransactionAmount,\n selectedCoin.denomination\n )}{' '}\n {selectedCoin.symbol}\n {isAmbTransfered && (\n \n $\n {(\n +utils.formatUnits(\n bnTransactionAmount,\n selectedCoin.denomination\n ) * ambPrice\n ).toFixed(2)}\n \n )}\n \n
\n
\n You`ll recieve\n \n {utils.formatUnits(\n bnTransactionAmount,\n selectedCoin.denomination\n )}{' '}\n {receivedCoin.symbol}\n \n
\n
\n Transfer fee\n \n {fee ? (\n (+utils.formatEther(fee.transferFee)).toFixed(4)\n ) : (\n \n )}{' '}\n {departureNetwork.tokenSymbol}\n {fee && isFromAmb && (\n \n ${(+utils.formatUnits(fee.transferFee) * ambPrice).toFixed(2)}\n \n )}\n \n
\n
\n Bridge fee\n \n {fee ? (\n (+utils.formatEther(fee.bridgeFee)).toFixed(4)\n ) : (\n \n )}{' '}\n {departureNetwork.tokenSymbol}\n {fee && isFromAmb && (\n \n ${(+utils.formatUnits(fee.bridgeFee) * ambPrice).toFixed(2)}\n \n )}\n \n
\n
\n
\n \n \n Back\n \n \n {isLocked ? (\n <>\n loader\n Waiting for confirmation\n \n ) : (\n `Send funds to ${destinationNetwork.name}`\n )}\n \n
\n
\n )\n );\n};\n\nexport default Confirmation;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgArrowUpRight(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 17,\n viewBox: \"0 0 17 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.49968 3.25C7.49968 2.83579 7.83547 2.5 8.24968 2.5H13.7497C14.1639 2.5 14.4997 2.83579 14.4997 3.25V8.75C14.4997 9.16421 14.1639 9.5 13.7497 9.5C13.3355 9.5 12.9997 9.16421 12.9997 8.75V5.0607L3.78034 14.2803C3.48745 14.5732 3.01258 14.5732 2.71968 14.2803C2.42678 13.9874 2.42677 13.5126 2.71966 13.2197L11.9391 4H8.24968C7.83547 4 7.49968 3.66421 7.49968 3.25Z\",\n fill: \"#457EFF\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowUpRight);\nexport default __webpack_public_path__ + \"static/media/arrow-up-right.d6df63213150a20286ba0164c360f30e.svg\";\nexport { ForwardRef as ReactComponent };","import { allNetworks } from '../networks';\n\nconst getTxLink = (chainId, hash) => {\n const explorerLink = Object.values(allNetworks).find(\n (el) => el.chainId === chainId\n );\n return explorerLink ? `${explorerLink.explorerUrl}tx/${hash}` : null;\n};\n\nexport default getTxLink;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ethers } from 'ethers';\nimport arrowUpRight from '../assets/svg/arrow-up-right.svg';\nimport { allNetworks } from '../utils/networks';\nimport getTxLink from '../utils/helpers/getTxLink';\nimport NetworkOrTokenIcon from './NetworkOrTokenIcon';\nimport { Link } from 'react-router-dom';\n\nconst TransactionListItem = ({ tx }) => {\n const networkFrom = allNetworks[tx.networkFrom];\n const networkTo = allNetworks[tx.networkTo];\n\n const destinationNetTxHash = tx.transferFinishTxHash;\n const isSuccess = !!destinationNetTxHash;\n const tokenAmount = tx.denominatedAmount;\n\n const date = formatDate(tx.timestampStart);\n\n return !tx.tokenFrom.isLegacy || !tx.tokenTo.isLegacy ? (\n
\n
\n
\n \n \n {tokenAmount} {tx.tokenFrom.name}\n \n
\n

{date}

\n
\n
\n
\n From:\n {networkFrom.name}\n {tx.withdrawTx ? (\n <>\n \n TxHash\n arrow\n \n \n ) : (\n Tx not started\n )}\n
\n
\n To:\n {networkTo.name}\n {destinationNetTxHash ? (\n <>\n \n TxHash\n arrow\n \n \n ) : (\n Tx not started\n )}\n
\n
\n
\n
\n {!isSuccess && (\n \n View status\n \n )}\n \n {isSuccess ? 'Success' : 'Pending'}\n \n
\n

\n Transaction fee:\n \n {(+ethers.utils.formatUnits(tx.fee, 18)).toLocaleString()}\n \n

\n
\n
\n ) : null;\n};\n\nTransactionListItem.propTypes = {\n tx: PropTypes.object,\n};\n\nconst formatDate = (timestamp) => {\n const date = new Date(timestamp * 1000);\n const endDate = new Date();\n const days = parseInt((endDate - date) / (1000 * 60 * 60 * 24));\n const hours = parseInt((Math.abs(endDate - date) / (1000 * 60 * 60)) % 24);\n const minutes = parseInt(\n (Math.abs(endDate.getTime() - date.getTime()) / (1000 * 60)) % 60\n );\n const seconds = parseInt(\n (Math.abs(endDate.getTime() - date.getTime()) / 1000) % 60\n );\n let timePassed;\n\n if (days) {\n timePassed = `${days} days ago`;\n } else if (hours) {\n timePassed = `${hours} hours ago`;\n } else if (minutes) {\n timePassed = `${minutes} minutes ago`;\n } else {\n timePassed = `${seconds} seconds ago`;\n }\n\n return `${timePassed} (${date.getDate().toString().padStart(2, '0')}.${(\n date.getMonth() + 1\n )\n .toString()\n .padStart(2, '0')}.${date.getFullYear()}, ${date\n .getHours()\n .toString()\n .padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date\n .getSeconds()\n .toString()\n .padStart(2, '0')})`;\n};\n\nexport default TransactionListItem;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useHistory } from 'react-router';\nimport TransactionListItem from '../components/TransactionListItem';\nimport arrow from '../assets/svg/arrow-right.svg';\nimport { Helmet } from 'react-helmet';\nimport { useAccount } from 'wagmi';\n\nconst TransactionList = () => {\n const { address: account } = useAccount();\n const history = useHistory();\n\n const [transactionHistory, setTransactionHistory] = useState([]);\n const [isLoadingFinished, setIsLoadingFinished] = useState(false);\n\n const sortedTxs = useMemo(\n () => transactionHistory.sort((a, b) => b.timestamp - a.timestamp),\n [transactionHistory]\n );\n\n useEffect(() => {\n (async () => {\n const txHistory = await fetch(\n `https://${process.env.REACT_APP_BACKEND_DOMAIN}/txHistory?userAddress=${account}`\n );\n const txHistoryJson = await txHistory.json();\n setTransactionHistory(txHistoryJson);\n setIsLoadingFinished(true);\n })();\n }, [account]);\n\n const goHome = () => history.push('/');\n\n const backBtn = useMemo(\n () => (\n \n \n \n ),\n []\n );\n\n return (\n
\n \n \n \n
\n {backBtn}\n

Transaction History

\n
\n {isLoadingFinished && sortedTxs.length === 0 ? (\n
\n

You have no transactions yet.

\n {backBtn}\n
\n ) : (\n
\n {sortedTxs.map((el) => (\n \n ))}\n
\n )}\n
\n );\n};\n\nexport default TransactionList;\n","import { allNetworks } from '../networks';\n\nconst formatBridgesFromConfig = (bridges) => {\n return Object.keys(bridges).reduce(\n (dict, network) => ({\n ...dict,\n [allNetworks[network].chainId]: {\n native: bridges[network].amb,\n foreign: bridges[network].side,\n },\n }),\n {}\n );\n};\n\nexport default formatBridgesFromConfig;\n","import { utils } from 'ethers';\nimport { allNetworks } from '../networks';\nimport { bscChainId } from '../providers';\n\nconst formatConfig = (tokens) => {\n const formattedConfig = {};\n\n for (const token of Object.values(tokens)) {\n if (token.isActive) {\n for (const [net, network] of Object.entries(token.networks)) {\n const chainId = allNetworks[net].chainId;\n const address = network.address;\n const primaryNets = parsePrimaryNets(token.networks);\n const decimals = parseDecimals(token.networks);\n const nativeAnalog =\n token.symbol === 'SAMB' && chainId === bscChainId ? 'AMB' : null;\n\n if (utils.isAddress(address)) {\n if (!formattedConfig[chainId]) {\n formattedConfig[chainId] = {};\n }\n\n formattedConfig[chainId][token.symbol] = {\n name: token.name,\n symbol: token.symbol,\n denomination: network.denomination,\n logo: token.logo,\n nativeAnalog,\n decimals,\n primaryNets,\n chainId,\n address,\n };\n }\n }\n }\n }\n\n return formattedConfig;\n};\n\nconst parsePrimaryNets = (tokenNetworks) => {\n const primaryNets = [];\n\n for (const [net, network] of Object.entries(tokenNetworks)) {\n if (network.isPrimary) {\n primaryNets.push(allNetworks[net].chainId);\n }\n }\n\n return primaryNets;\n};\n\nconst parseDecimals = (tokenNetworks) => {\n const decimals = {};\n\n for (const [net, network] of Object.entries(tokenNetworks)) {\n decimals[allNetworks[net].chainId] = network.denomination;\n }\n\n return decimals;\n};\n\nexport default formatConfig;\n","import React, { useEffect, useState } from 'react';\nimport ConfigContext from './context';\nimport formatBridgesFromConfig from '../../utils/helpers/formatBridgesFromConfig';\n\nimport formatNewTokenList from '../../utils/helpers/formatNewTokenList';\n\nimport { Notify } from '@airdao/ui-library';\n\nconst ConfigProvider = (props) => {\n const [config, setConfig] = useState(undefined);\n\n useEffect(() => {\n (async () => {\n const { tokens, bridges } = await fetch(\n process.env.REACT_APP_CONFIG_URL,\n { cache: 'no-store' }\n )\n .then((res) => res.json())\n .catch((e) => {\n console.warn('Error fetching config:');\n console.error(e);\n Notify.error('Error fetching config', { ...e });\n });\n\n const formattedTokens = formatNewTokenList(tokens);\n const formattedBridges = formatBridgesFromConfig(bridges);\n\n setConfig({\n bridges: formattedBridges,\n tokens: formattedTokens,\n });\n })();\n }, []);\n\n return config ? : null;\n};\n\nexport default ConfigProvider;\n","import React, { useState } from 'react';\nimport ErrorContext from './context';\n\nconst ErrorProvider = (props) => {\n const [error, setError] = useState('');\n\n return ;\n};\n\nexport default ErrorProvider;\n","import { allNetworks, networksChainIds } from '../utils/networks';\nimport useError from './useError';\nimport { useEffect, useMemo } from 'react';\nimport { Notify } from '@airdao/ui-library';\nimport { useAccount } from 'wagmi';\n\nconst useUnsupportedChainError = () => {\n const { setError } = useError();\n const { chainId, isConnected: isActive } = useAccount();\n\n const isLoggedIn = useMemo(\n () => isActive && !networksChainIds.includes(chainId),\n [isActive, chainId]\n );\n\n useEffect(() => {\n (async () => {\n if (isLoggedIn) {\n const networksNames = Object.values(allNetworks)\n .map((network) => network.name)\n .join(', ');\n\n if (!window.location.href.includes('status')) {\n Notify.error(\n `Please, select supported network in your wallet. Supported networks: ${networksNames}`,\n null,\n { autoClose: 5000 }\n );\n }\n }\n })();\n }, [isLoggedIn, setError]);\n};\n\nexport default useUnsupportedChainError;\n","const NotFound = () => (\n
\n
\n
\n 404\n

Page not found

\n

\n The page you are looking for may have been\n moved, deleted, or possibly never existed\n

\n Back to Home\n
\n
\n
\n)\n\nexport default NotFound;\n","import { useEffect } from 'react';\nimport { useAccount } from 'wagmi';\n\nlet isFirstRender = true;\n\nconst useGtag = () => {\n const { address: account } = useAccount();\n\n useEffect(() => {\n if (isFirstRender && account) {\n window.dataLayer.push({\n event: 'ga4event',\n event_category: 'connect_wallet',\n });\n isFirstRender = false;\n }\n }, [account]);\n};\n\nexport default useGtag;\n","import { hashQueryKeyByOptions, matchQuery } from './utils'\nimport { Query } from './query'\nimport { notifyManager } from './notifyManager'\nimport { Subscribable } from './subscribable'\nimport type { QueryFilters } from './utils'\nimport type { Action, QueryState } from './query'\nimport type {\n DefaultError,\n NotifyEvent,\n QueryKey,\n QueryOptions,\n WithRequired,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { QueryObserver } from './queryObserver'\n\n// TYPES\n\ninterface QueryCacheConfig {\n onError?: (\n error: DefaultError,\n query: Query,\n ) => void\n onSuccess?: (data: unknown, query: Query) => void\n onSettled?: (\n data: unknown | undefined,\n error: DefaultError | null,\n query: Query,\n ) => void\n}\n\ninterface NotifyEventQueryAdded extends NotifyEvent {\n type: 'added'\n query: Query\n}\n\ninterface NotifyEventQueryRemoved extends NotifyEvent {\n type: 'removed'\n query: Query\n}\n\ninterface NotifyEventQueryUpdated extends NotifyEvent {\n type: 'updated'\n query: Query\n action: Action\n}\n\ninterface NotifyEventQueryObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n query: Query\n observer: QueryObserver\n}\n\ninterface NotifyEventQueryObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n query: Query\n observer: QueryObserver\n}\n\ninterface NotifyEventQueryObserverResultsUpdated extends NotifyEvent {\n type: 'observerResultsUpdated'\n query: Query\n}\n\ninterface NotifyEventQueryObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n query: Query\n observer: QueryObserver\n}\n\nexport type QueryCacheNotifyEvent =\n | NotifyEventQueryAdded\n | NotifyEventQueryRemoved\n | NotifyEventQueryUpdated\n | NotifyEventQueryObserverAdded\n | NotifyEventQueryObserverRemoved\n | NotifyEventQueryObserverResultsUpdated\n | NotifyEventQueryObserverOptionsUpdated\n\ntype QueryCacheListener = (event: QueryCacheNotifyEvent) => void\n\nexport interface QueryStore {\n has: (queryHash: string) => boolean\n set: (queryHash: string, query: Query) => void\n get: (queryHash: string) => Query | undefined\n delete: (queryHash: string) => void\n values: () => IterableIterator\n}\n\n// CLASS\n\nexport class QueryCache extends Subscribable {\n #queries: QueryStore\n\n constructor(public config: QueryCacheConfig = {}) {\n super()\n this.#queries = new Map()\n }\n\n build<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n client: QueryClient,\n options: WithRequired<\n QueryOptions,\n 'queryKey'\n >,\n state?: QueryState,\n ): Query {\n const queryKey = options.queryKey\n const queryHash =\n options.queryHash ?? hashQueryKeyByOptions(queryKey, options)\n let query = this.get(queryHash)\n\n if (!query) {\n query = new Query({\n cache: this,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey),\n })\n this.add(query)\n }\n\n return query\n }\n\n add(query: Query): void {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query)\n\n this.notify({\n type: 'added',\n query,\n })\n }\n }\n\n remove(query: Query): void {\n const queryInMap = this.#queries.get(query.queryHash)\n\n if (queryInMap) {\n query.destroy()\n\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash)\n }\n\n this.notify({ type: 'removed', query })\n }\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query)\n })\n })\n }\n\n get<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryHash: string,\n ): Query | undefined {\n return this.#queries.get(queryHash) as\n | Query\n | undefined\n }\n\n getAll(): Array {\n return [...this.#queries.values()]\n }\n\n find(\n filters: WithRequired,\n ): Query | undefined {\n const defaultedFilters = { exact: true, ...filters }\n\n return this.getAll().find((query) =>\n matchQuery(defaultedFilters, query),\n ) as Query | undefined\n }\n\n findAll(filters: QueryFilters = {}): Array {\n const queries = this.getAll()\n return Object.keys(filters).length > 0\n ? queries.filter((query) => matchQuery(filters, query))\n : queries\n }\n\n notify(event: QueryCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n onFocus(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus()\n })\n })\n }\n\n onOnline(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline()\n })\n })\n }\n}\n","import { notifyManager } from './notifyManager'\nimport { Mutation } from './mutation'\nimport { matchMutation, noop } from './utils'\nimport { Subscribable } from './subscribable'\nimport type { MutationObserver } from './mutationObserver'\nimport type { DefaultError, MutationOptions, NotifyEvent } from './types'\nimport type { QueryClient } from './queryClient'\nimport type { Action, MutationState } from './mutation'\nimport type { MutationFilters } from './utils'\n\n// TYPES\n\ninterface MutationCacheConfig {\n onError?: (\n error: DefaultError,\n variables: unknown,\n context: unknown,\n mutation: Mutation,\n ) => Promise | unknown\n onSuccess?: (\n data: unknown,\n variables: unknown,\n context: unknown,\n mutation: Mutation,\n ) => Promise | unknown\n onMutate?: (\n variables: unknown,\n mutation: Mutation,\n ) => Promise | unknown\n onSettled?: (\n data: unknown | undefined,\n error: DefaultError | null,\n variables: unknown,\n context: unknown,\n mutation: Mutation,\n ) => Promise | unknown\n}\n\ninterface NotifyEventMutationAdded extends NotifyEvent {\n type: 'added'\n mutation: Mutation\n}\ninterface NotifyEventMutationRemoved extends NotifyEvent {\n type: 'removed'\n mutation: Mutation\n}\n\ninterface NotifyEventMutationObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n mutation: Mutation\n observer: MutationObserver\n}\n\ninterface NotifyEventMutationObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n mutation: Mutation\n observer: MutationObserver\n}\n\ninterface NotifyEventMutationObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n mutation?: Mutation\n observer: MutationObserver\n}\n\ninterface NotifyEventMutationUpdated extends NotifyEvent {\n type: 'updated'\n mutation: Mutation\n action: Action\n}\n\nexport type MutationCacheNotifyEvent =\n | NotifyEventMutationAdded\n | NotifyEventMutationRemoved\n | NotifyEventMutationObserverAdded\n | NotifyEventMutationObserverRemoved\n | NotifyEventMutationObserverOptionsUpdated\n | NotifyEventMutationUpdated\n\ntype MutationCacheListener = (event: MutationCacheNotifyEvent) => void\n\n// CLASS\n\nexport class MutationCache extends Subscribable {\n #mutations: Map>>\n #mutationId: number\n\n constructor(public config: MutationCacheConfig = {}) {\n super()\n this.#mutations = new Map()\n this.#mutationId = Date.now()\n }\n\n build(\n client: QueryClient,\n options: MutationOptions,\n state?: MutationState,\n ): Mutation {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state,\n })\n\n this.add(mutation)\n\n return mutation\n }\n\n add(mutation: Mutation): void {\n const scope = scopeFor(mutation)\n const mutations = this.#mutations.get(scope) ?? []\n mutations.push(mutation)\n this.#mutations.set(scope, mutations)\n this.notify({ type: 'added', mutation })\n }\n\n remove(mutation: Mutation): void {\n const scope = scopeFor(mutation)\n if (this.#mutations.has(scope)) {\n const mutations = this.#mutations\n .get(scope)\n ?.filter((x) => x !== mutation)\n if (mutations) {\n if (mutations.length === 0) {\n this.#mutations.delete(scope)\n } else {\n this.#mutations.set(scope, mutations)\n }\n }\n }\n\n this.notify({ type: 'removed', mutation })\n }\n\n canRun(mutation: Mutation): boolean {\n const firstPendingMutation = this.#mutations\n .get(scopeFor(mutation))\n ?.find((m) => m.state.status === 'pending')\n\n // we can run if there is no current pending mutation (start use-case)\n // or if WE are the first pending mutation (continue use-case)\n return !firstPendingMutation || firstPendingMutation === mutation\n }\n\n runNext(mutation: Mutation): Promise {\n const foundMutation = this.#mutations\n .get(scopeFor(mutation))\n ?.find((m) => m !== mutation && m.state.isPaused)\n\n return foundMutation?.continue() ?? Promise.resolve()\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((mutation) => {\n this.remove(mutation)\n })\n })\n }\n\n getAll(): Array {\n return [...this.#mutations.values()].flat()\n }\n\n find<\n TData = unknown,\n TError = DefaultError,\n TVariables = any,\n TContext = unknown,\n >(\n filters: MutationFilters,\n ): Mutation | undefined {\n const defaultedFilters = { exact: true, ...filters }\n\n return this.getAll().find((mutation) =>\n matchMutation(defaultedFilters, mutation),\n ) as Mutation | undefined\n }\n\n findAll(filters: MutationFilters = {}): Array {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation))\n }\n\n notify(event: MutationCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n resumePausedMutations(): Promise {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused)\n\n return notifyManager.batch(() =>\n Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop)),\n ),\n )\n }\n}\n\nfunction scopeFor(mutation: Mutation) {\n return mutation.options.scope?.id ?? String(mutation.mutationId)\n}\n","import { addToEnd, addToStart, ensureQueryFn } from './utils'\nimport type { QueryBehavior } from './query'\nimport type {\n InfiniteData,\n InfiniteQueryPageParamsOptions,\n OmitKeyof,\n QueryFunctionContext,\n QueryKey,\n} from './types'\n\nexport function infiniteQueryBehavior(\n pages?: number,\n): QueryBehavior> {\n return {\n onFetch: (context, query) => {\n const fetchFn = async () => {\n const options = context.options as InfiniteQueryPageParamsOptions\n const direction = context.fetchOptions?.meta?.fetchMore?.direction\n const oldPages = context.state.data?.pages || []\n const oldPageParams = context.state.data?.pageParams || []\n const empty = { pages: [], pageParams: [] }\n let cancelled = false\n\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true\n } else {\n context.signal.addEventListener('abort', () => {\n cancelled = true\n })\n }\n return context.signal\n },\n })\n }\n\n const queryFn = ensureQueryFn(context.options, context.fetchOptions)\n\n // Create function to fetch a page\n const fetchPage = async (\n data: InfiniteData,\n param: unknown,\n previous?: boolean,\n ): Promise> => {\n if (cancelled) {\n return Promise.reject()\n }\n\n if (param == null && data.pages.length) {\n return Promise.resolve(data)\n }\n\n const queryFnContext: OmitKeyof<\n QueryFunctionContext,\n 'signal'\n > = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? 'backward' : 'forward',\n meta: context.options.meta,\n }\n\n addSignalProperty(queryFnContext)\n\n const page = await queryFn(\n queryFnContext as QueryFunctionContext,\n )\n\n const { maxPages } = context.options\n const addTo = previous ? addToStart : addToEnd\n\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages),\n }\n }\n\n let result: InfiniteData\n\n // fetch next / previous page?\n if (direction && oldPages.length) {\n const previous = direction === 'backward'\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams,\n }\n const param = pageParamFn(options, oldData)\n\n result = await fetchPage(oldData, param, previous)\n } else {\n // Fetch first page\n result = await fetchPage(\n empty,\n oldPageParams[0] ?? options.initialPageParam,\n )\n\n const remainingPages = pages ?? oldPages.length\n\n // Fetch remaining pages\n for (let i = 1; i < remainingPages; i++) {\n const param = getNextPageParam(options, result)\n if (param == null) {\n break\n }\n result = await fetchPage(result, param)\n }\n }\n\n return result\n }\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn as any,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal,\n },\n query,\n )\n }\n } else {\n context.fetchFn = fetchFn\n }\n },\n }\n}\n\nfunction getNextPageParam(\n options: InfiniteQueryPageParamsOptions,\n { pages, pageParams }: InfiniteData,\n): unknown | undefined {\n const lastIndex = pages.length - 1\n return pages.length > 0\n ? options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams,\n )\n : undefined\n}\n\nfunction getPreviousPageParam(\n options: InfiniteQueryPageParamsOptions,\n { pages, pageParams }: InfiniteData,\n): unknown | undefined {\n return pages.length > 0\n ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams)\n : undefined\n}\n\n/**\n * Checks if there is a next page.\n */\nexport function hasNextPage(\n options: InfiniteQueryPageParamsOptions,\n data?: InfiniteData,\n): boolean {\n if (!data) return false\n return getNextPageParam(options, data) != null\n}\n\n/**\n * Checks if there is a previous page.\n */\nexport function hasPreviousPage(\n options: InfiniteQueryPageParamsOptions,\n data?: InfiniteData,\n): boolean {\n if (!data || !options.getPreviousPageParam) return false\n return getPreviousPageParam(options, data) != null\n}\n","import type { Chain, ChainFormatters } from '../../types/chain.js'\nimport type { Assign, Prettify } from '../../types/utils.js'\n\nexport function defineChain<\n formatters extends ChainFormatters,\n const chain extends Chain,\n>(chain: chain): Prettify, chain>> {\n return {\n formatters: undefined,\n fees: undefined,\n serializers: undefined,\n ...chain,\n } as Assign, chain>\n}\n","import { defineChain } from '../../utils/chain/defineChain.js'\n\nexport const mainnet = /*#__PURE__*/ defineChain({\n id: 1,\n name: 'Ethereum',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: {\n default: {\n http: ['https://cloudflare-eth.com'],\n },\n },\n blockExplorers: {\n default: {\n name: 'Etherscan',\n url: 'https://etherscan.io',\n apiUrl: 'https://api.etherscan.io/api',\n },\n },\n contracts: {\n ensRegistry: {\n address: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',\n },\n ensUniversalResolver: {\n address: '0xce01f8eee7E479C928F8919abD53E553a36CeF67',\n blockCreated: 19_258_213,\n },\n multicall3: {\n address: '0xca11bde05977b3631167028862be2a173976ca11',\n blockCreated: 14_353_601,\n },\n },\n})\n","import { defineChain } from '../../utils/chain/defineChain.js'\n\nexport const bsc = /*#__PURE__*/ defineChain({\n id: 56,\n name: 'BNB Smart Chain',\n nativeCurrency: {\n decimals: 18,\n name: 'BNB',\n symbol: 'BNB',\n },\n rpcUrls: {\n default: { http: ['https://rpc.ankr.com/bsc'] },\n },\n blockExplorers: {\n default: {\n name: 'BscScan',\n url: 'https://bscscan.com',\n apiUrl: 'https://api.bscscan.com/api',\n },\n },\n contracts: {\n multicall3: {\n address: '0xca11bde05977b3631167028862be2a173976ca11',\n blockCreated: 15921452,\n },\n },\n})\n","import { defineChain } from '../../utils/chain/defineChain.js'\n\nexport const sepolia = /*#__PURE__*/ defineChain({\n id: 11_155_111,\n name: 'Sepolia',\n nativeCurrency: { name: 'Sepolia Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: {\n default: {\n http: ['https://rpc2.sepolia.org'],\n },\n },\n blockExplorers: {\n default: {\n name: 'Etherscan',\n url: 'https://sepolia.etherscan.io',\n apiUrl: 'https://api-sepolia.etherscan.io/api',\n },\n },\n contracts: {\n multicall3: {\n address: '0xca11bde05977b3631167028862be2a173976ca11',\n blockCreated: 751532,\n },\n ensRegistry: { address: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e' },\n ensUniversalResolver: {\n address: '0xc8Af999e38273D658BE1b921b88A9Ddf005769cC',\n blockCreated: 5_317_080,\n },\n },\n testnet: true,\n})\n","import { defineChain } from '../../utils/chain/defineChain.js'\n\nexport const bscTestnet = /*#__PURE__*/ defineChain({\n id: 97,\n name: 'Binance Smart Chain Testnet',\n nativeCurrency: {\n decimals: 18,\n name: 'BNB',\n symbol: 'tBNB',\n },\n rpcUrls: {\n default: { http: ['https://data-seed-prebsc-1-s1.bnbchain.org:8545'] },\n },\n blockExplorers: {\n default: {\n name: 'BscScan',\n url: 'https://testnet.bscscan.com',\n apiUrl: 'https://api-testnet.bscscan.com/api',\n },\n },\n contracts: {\n multicall3: {\n address: '0xca11bde05977b3631167028862be2a173976ca11',\n blockCreated: 17422483,\n },\n },\n testnet: true,\n})\n","import {\n ChainNotConfiguredError,\n type Connector,\n ProviderNotFoundError,\n createConnector,\n extractRpcUrls,\n} from '@wagmi/core'\nimport type { Compute, ExactPartial, Omit } from '@wagmi/core/internal'\nimport type { EthereumProvider } from '@walletconnect/ethereum-provider'\nimport {\n type AddEthereumChainParameter,\n type Address,\n type ProviderConnectInfo,\n type ProviderRpcError,\n type RpcError,\n SwitchChainError,\n UserRejectedRequestError,\n getAddress,\n numberToHex,\n} from 'viem'\n\ntype WalletConnectConnector = Connector & {\n onDisplayUri(uri: string): void\n onSessionDelete(data: { topic: string }): void\n}\n\ntype EthereumProviderOptions = Parameters<(typeof EthereumProvider)['init']>[0]\n\nexport type WalletConnectParameters = Compute<\n {\n /**\n * If a new chain is added to a previously existing configured connector `chains`, this flag\n * will determine if that chain should be considered as stale. A stale chain is a chain that\n * WalletConnect has yet to establish a relationship with (e.g. the user has not approved or\n * rejected the chain).\n *\n * This flag mainly affects the behavior when a wallet does not support dynamic chain authorization\n * with WalletConnect v2.\n *\n * If `true` (default), the new chain will be treated as a stale chain. If the user\n * has yet to establish a relationship (approved/rejected) with this chain in their WalletConnect\n * session, the connector will disconnect upon the dapp auto-connecting, and the user will have to\n * reconnect to the dapp (revalidate the chain) in order to approve the newly added chain.\n * This is the default behavior to avoid an unexpected error upon switching chains which may\n * be a confusing user experience (e.g. the user will not know they have to reconnect\n * unless the dapp handles these types of errors).\n *\n * If `false`, the new chain will be treated as a potentially valid chain. This means that if the user\n * has yet to establish a relationship with the chain in their WalletConnect session, wagmi will successfully\n * auto-connect the user. This comes with the trade-off that the connector will throw an error\n * when attempting to switch to the unapproved chain if the wallet does not support dynamic session updates.\n * This may be useful in cases where a dapp constantly\n * modifies their configured chains, and they do not want to disconnect the user upon\n * auto-connecting. If the user decides to switch to the unapproved chain, it is important that the\n * dapp handles this error and prompts the user to reconnect to the dapp in order to approve\n * the newly added chain.\n *\n * @default true\n */\n isNewChainsStale?: boolean\n } & Omit<\n EthereumProviderOptions,\n | 'chains'\n | 'events'\n | 'optionalChains'\n | 'optionalEvents'\n | 'optionalMethods'\n | 'methods'\n | 'rpcMap'\n | 'showQrModal'\n > &\n ExactPartial>\n>\n\nwalletConnect.type = 'walletConnect' as const\nexport function walletConnect(parameters: WalletConnectParameters) {\n const isNewChainsStale = parameters.isNewChainsStale ?? true\n\n type Provider = Awaited>\n type Properties = {\n connect(parameters?: { chainId?: number; pairingTopic?: string }): Promise<{\n accounts: readonly Address[]\n chainId: number\n }>\n getNamespaceChainsIds(): number[]\n getRequestedChainsIds(): Promise\n isChainsStale(): Promise\n onConnect(connectInfo: ProviderConnectInfo): void\n onDisplayUri(uri: string): void\n onSessionDelete(data: { topic: string }): void\n setRequestedChainsIds(chains: number[]): void\n requestedChainsStorageKey: `${string}.requestedChains`\n }\n type StorageItem = {\n [_ in Properties['requestedChainsStorageKey']]: number[]\n }\n\n let provider_: Provider | undefined\n let providerPromise: Promise\n const NAMESPACE = 'eip155'\n\n let accountsChanged: WalletConnectConnector['onAccountsChanged'] | undefined\n let chainChanged: WalletConnectConnector['onChainChanged'] | undefined\n let connect: WalletConnectConnector['onConnect'] | undefined\n let displayUri: WalletConnectConnector['onDisplayUri'] | undefined\n let sessionDelete: WalletConnectConnector['onSessionDelete'] | undefined\n let disconnect: WalletConnectConnector['onDisconnect'] | undefined\n\n return createConnector((config) => ({\n id: 'walletConnect',\n name: 'WalletConnect',\n type: walletConnect.type,\n async setup() {\n const provider = await this.getProvider().catch(() => null)\n if (!provider) return\n if (!connect) {\n connect = this.onConnect.bind(this)\n provider.on('connect', connect)\n }\n if (!sessionDelete) {\n sessionDelete = this.onSessionDelete.bind(this)\n provider.on('session_delete', sessionDelete)\n }\n },\n async connect({ chainId, ...rest } = {}) {\n try {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n if (!displayUri) {\n displayUri = this.onDisplayUri\n provider.on('display_uri', displayUri)\n }\n\n let targetChainId = chainId\n if (!targetChainId) {\n const state = (await config.storage?.getItem('state')) ?? {}\n const isChainSupported = config.chains.some(\n (x) => x.id === state.chainId,\n )\n if (isChainSupported) targetChainId = state.chainId\n else targetChainId = config.chains[0]?.id\n }\n if (!targetChainId) throw new Error('No chains found on connector.')\n\n const isChainsStale = await this.isChainsStale()\n // If there is an active session with stale chains, disconnect current session.\n if (provider.session && isChainsStale) await provider.disconnect()\n\n // If there isn't an active session or chains are stale, connect.\n if (!provider.session || isChainsStale) {\n const optionalChains = config.chains\n .filter((chain) => chain.id !== targetChainId)\n .map((optionalChain) => optionalChain.id)\n await provider.connect({\n optionalChains: [targetChainId, ...optionalChains],\n ...('pairingTopic' in rest\n ? { pairingTopic: rest.pairingTopic }\n : {}),\n })\n\n this.setRequestedChainsIds(config.chains.map((x) => x.id))\n }\n\n // If session exists and chains are authorized, enable provider for required chain\n const accounts = (await provider.enable()).map((x) => getAddress(x))\n const currentChainId = await this.getChainId()\n\n if (displayUri) {\n provider.removeListener('display_uri', displayUri)\n displayUri = undefined\n }\n if (connect) {\n provider.removeListener('connect', connect)\n connect = undefined\n }\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this)\n provider.on('accountsChanged', accountsChanged)\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this)\n provider.on('chainChanged', chainChanged)\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this)\n provider.on('disconnect', disconnect)\n }\n if (!sessionDelete) {\n sessionDelete = this.onSessionDelete.bind(this)\n provider.on('session_delete', sessionDelete)\n }\n\n return { accounts, chainId: currentChainId }\n } catch (error) {\n if (\n /(user rejected|connection request reset)/i.test(\n (error as ProviderRpcError)?.message,\n )\n ) {\n throw new UserRejectedRequestError(error as Error)\n }\n throw error\n }\n },\n async disconnect() {\n const provider = await this.getProvider()\n try {\n await provider?.disconnect()\n } catch (error) {\n if (!/No matching key/i.test((error as Error).message)) throw error\n } finally {\n if (chainChanged) {\n provider?.removeListener('chainChanged', chainChanged)\n chainChanged = undefined\n }\n if (disconnect) {\n provider?.removeListener('disconnect', disconnect)\n disconnect = undefined\n }\n if (!connect) {\n connect = this.onConnect.bind(this)\n provider?.on('connect', connect)\n }\n if (accountsChanged) {\n provider?.removeListener('accountsChanged', accountsChanged)\n accountsChanged = undefined\n }\n if (sessionDelete) {\n provider?.removeListener('session_delete', sessionDelete)\n sessionDelete = undefined\n }\n\n this.setRequestedChainsIds([])\n }\n },\n async getAccounts() {\n const provider = await this.getProvider()\n return provider.accounts.map((x) => getAddress(x))\n },\n async getProvider({ chainId } = {}) {\n async function initProvider() {\n const optionalChains = config.chains.map((x) => x.id) as [number]\n if (!optionalChains.length) return\n const { EthereumProvider } = await import(\n '@walletconnect/ethereum-provider'\n )\n return await EthereumProvider.init({\n ...parameters,\n disableProviderPing: true,\n optionalChains,\n projectId: parameters.projectId,\n rpcMap: Object.fromEntries(\n config.chains.map((chain) => {\n const [url] = extractRpcUrls({\n chain,\n transports: config.transports,\n })\n return [chain.id, url]\n }),\n ),\n showQrModal: parameters.showQrModal ?? true,\n })\n }\n\n if (!provider_) {\n if (!providerPromise) providerPromise = initProvider()\n provider_ = await providerPromise\n provider_?.events.setMaxListeners(Number.POSITIVE_INFINITY)\n }\n if (chainId) await this.switchChain?.({ chainId })\n return provider_!\n },\n async getChainId() {\n const provider = await this.getProvider()\n return provider.chainId\n },\n async isAuthorized() {\n try {\n const [accounts, provider] = await Promise.all([\n this.getAccounts(),\n this.getProvider(),\n ])\n\n // If an account does not exist on the session, then the connector is unauthorized.\n if (!accounts.length) return false\n\n // If the chains are stale on the session, then the connector is unauthorized.\n const isChainsStale = await this.isChainsStale()\n if (isChainsStale && provider.session) {\n await provider.disconnect().catch(() => {})\n return false\n }\n return true\n } catch {\n return false\n }\n },\n async switchChain({ addEthereumChainParameter, chainId }) {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n\n const chain = config.chains.find((x) => x.id === chainId)\n if (!chain) throw new SwitchChainError(new ChainNotConfiguredError())\n\n try {\n await Promise.all([\n new Promise((resolve) => {\n const listener = ({\n chainId: currentChainId,\n }: { chainId?: number | undefined }) => {\n if (currentChainId === chainId) {\n config.emitter.off('change', listener)\n resolve()\n }\n }\n config.emitter.on('change', listener)\n }),\n provider.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: numberToHex(chainId) }],\n }),\n ])\n\n const requestedChains = await this.getRequestedChainsIds()\n this.setRequestedChainsIds([...requestedChains, chainId])\n\n return chain\n } catch (err) {\n const error = err as RpcError\n\n if (/(user rejected)/i.test(error.message))\n throw new UserRejectedRequestError(error)\n\n // Indicates chain is not added to provider\n try {\n let blockExplorerUrls: string[] | undefined\n if (addEthereumChainParameter?.blockExplorerUrls)\n blockExplorerUrls = addEthereumChainParameter.blockExplorerUrls\n else\n blockExplorerUrls = chain.blockExplorers?.default.url\n ? [chain.blockExplorers?.default.url]\n : []\n\n let rpcUrls: readonly string[]\n if (addEthereumChainParameter?.rpcUrls?.length)\n rpcUrls = addEthereumChainParameter.rpcUrls\n else rpcUrls = [...chain.rpcUrls.default.http]\n\n const addEthereumChain = {\n blockExplorerUrls,\n chainId: numberToHex(chainId),\n chainName: addEthereumChainParameter?.chainName ?? chain.name,\n iconUrls: addEthereumChainParameter?.iconUrls,\n nativeCurrency:\n addEthereumChainParameter?.nativeCurrency ?? chain.nativeCurrency,\n rpcUrls,\n } satisfies AddEthereumChainParameter\n\n await provider.request({\n method: 'wallet_addEthereumChain',\n params: [addEthereumChain],\n })\n\n const requestedChains = await this.getRequestedChainsIds()\n this.setRequestedChainsIds([...requestedChains, chainId])\n return chain\n } catch (error) {\n throw new UserRejectedRequestError(error as Error)\n }\n }\n },\n onAccountsChanged(accounts) {\n if (accounts.length === 0) this.onDisconnect()\n else\n config.emitter.emit('change', {\n accounts: accounts.map((x) => getAddress(x)),\n })\n },\n onChainChanged(chain) {\n const chainId = Number(chain)\n config.emitter.emit('change', { chainId })\n },\n async onConnect(connectInfo) {\n const chainId = Number(connectInfo.chainId)\n const accounts = await this.getAccounts()\n config.emitter.emit('connect', { accounts, chainId })\n },\n async onDisconnect(_error) {\n this.setRequestedChainsIds([])\n config.emitter.emit('disconnect')\n\n const provider = await this.getProvider()\n if (accountsChanged) {\n provider.removeListener('accountsChanged', accountsChanged)\n accountsChanged = undefined\n }\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged)\n chainChanged = undefined\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect)\n disconnect = undefined\n }\n if (sessionDelete) {\n provider.removeListener('session_delete', sessionDelete)\n sessionDelete = undefined\n }\n if (!connect) {\n connect = this.onConnect.bind(this)\n provider.on('connect', connect)\n }\n },\n onDisplayUri(uri) {\n config.emitter.emit('message', { type: 'display_uri', data: uri })\n },\n onSessionDelete() {\n this.onDisconnect()\n },\n getNamespaceChainsIds() {\n if (!provider_) return []\n const chainIds = provider_.session?.namespaces[NAMESPACE]?.accounts?.map(\n (account) => Number.parseInt(account.split(':')[1] || ''),\n )\n return chainIds ?? []\n },\n async getRequestedChainsIds() {\n return (\n (await config.storage?.getItem(this.requestedChainsStorageKey)) ?? []\n )\n },\n /**\n * Checks if the target chains match the chains that were\n * initially requested by the connector for the WalletConnect session.\n * If there is a mismatch, this means that the chains on the connector\n * are considered stale, and need to be revalidated at a later point (via\n * connection).\n *\n * There may be a scenario where a dapp adds a chain to the\n * connector later on, however, this chain will not have been approved or rejected\n * by the wallet. In this case, the chain is considered stale.\n */\n async isChainsStale() {\n if (!isNewChainsStale) return false\n\n const connectorChains = config.chains.map((x) => x.id)\n const namespaceChains = this.getNamespaceChainsIds()\n if (\n namespaceChains.length &&\n !namespaceChains.some((id) => connectorChains.includes(id))\n )\n return false\n\n const requestedChains = await this.getRequestedChainsIds()\n return !connectorChains.every((id) => requestedChains.includes(id))\n },\n async setRequestedChainsIds(chains) {\n await config.storage?.setItem(this.requestedChainsStorageKey, chains)\n },\n get requestedChainsStorageKey() {\n return `${this.id}.requestedChains` as Properties['requestedChainsStorageKey']\n },\n }))\n}\n","import type { Chain, Transport } from 'viem'\n\ntype ExtractRpcUrlsParameters = {\n transports?: Record | undefined\n chain: Chain\n}\n\nexport function extractRpcUrls(parameters: ExtractRpcUrlsParameters) {\n const { chain } = parameters\n const fallbackUrl = chain.rpcUrls.default.http[0]\n\n if (!parameters.transports) return [fallbackUrl]\n\n const transport = parameters.transports?.[chain.id]?.({ chain })\n const transports = (transport?.value?.transports as NonNullable<\n typeof transport\n >[]) || [transport]\n return transports.map(({ value }) => value?.url || fallbackUrl)\n}\n","import type { Rdns } from './register.js'\nimport type { EIP6963ProviderDetail } from './types.js'\nimport { requestProviders } from './utils.js'\n\nexport type Listener = (\n providerDetails: readonly EIP6963ProviderDetail[],\n meta?:\n | {\n added?: readonly EIP6963ProviderDetail[] | undefined\n removed?: readonly EIP6963ProviderDetail[] | undefined\n }\n | undefined,\n) => void\n\nexport type Store = {\n /**\n * Clears the store, including all provider details.\n */\n clear(): void\n /**\n * Destroys the store, including all provider details and listeners.\n */\n destroy(): void\n /**\n * Finds a provider detail by its RDNS (Reverse Domain Name Identifier).\n */\n findProvider(args: { rdns: Rdns }): EIP6963ProviderDetail | undefined\n /**\n * Returns all provider details that have been emitted.\n */\n getProviders(): readonly EIP6963ProviderDetail[]\n /**\n * Resets the store, and emits an event to request provider details.\n */\n reset(): void\n /**\n * Subscribes to emitted provider details.\n */\n subscribe(\n listener: Listener,\n args?: { emitImmediately?: boolean | undefined } | undefined,\n ): () => void\n\n /**\n * @internal\n * Current state of listening listeners.\n */\n _listeners(): Set\n}\n\nexport function createStore(): Store {\n const listeners: Set = new Set()\n let providerDetails: readonly EIP6963ProviderDetail[] = []\n\n const request = () =>\n requestProviders((providerDetail) => {\n if (\n providerDetails.some(\n ({ info }) => info.uuid === providerDetail.info.uuid,\n )\n )\n return\n\n providerDetails = [...providerDetails, providerDetail]\n listeners.forEach((listener) =>\n listener(providerDetails, { added: [providerDetail] }),\n )\n })\n let unwatch = request()\n\n return {\n _listeners() {\n return listeners\n },\n clear() {\n listeners.forEach((listener) =>\n listener([], { removed: [...providerDetails] }),\n )\n providerDetails = []\n },\n destroy() {\n this.clear()\n listeners.clear()\n unwatch?.()\n },\n findProvider({ rdns }) {\n return providerDetails.find(\n (providerDetail) => providerDetail.info.rdns === rdns,\n )\n },\n getProviders() {\n return providerDetails\n },\n reset() {\n this.clear()\n unwatch?.()\n unwatch = request()\n },\n subscribe(listener, { emitImmediately } = {}) {\n listeners.add(listener)\n if (emitImmediately) listener(providerDetails, { added: providerDetails })\n return () => listeners.delete(listener)\n },\n }\n}\n","import type { EIP1193Provider } from './register.js'\nimport type {\n EIP6963AnnounceProviderEvent,\n EIP6963ProviderDetail,\n} from './types.js'\n\n////////////////////////////////////////////////////////////////////////////\n// Announce Provider\n\nexport type AnnounceProviderParameters = EIP6963ProviderDetail<\n EIP1193Provider,\n string\n>\nexport type AnnounceProviderReturnType = () => void\n\n/**\n * Announces an EIP-1193 Provider.\n */\nexport function announceProvider(\n detail: AnnounceProviderParameters,\n): AnnounceProviderReturnType {\n const event: CustomEvent = new CustomEvent(\n 'eip6963:announceProvider',\n { detail: Object.freeze(detail) },\n )\n\n window.dispatchEvent(event)\n\n const handler = () => window.dispatchEvent(event)\n window.addEventListener('eip6963:requestProvider', handler)\n return () => window.removeEventListener('eip6963:requestProvider', handler)\n}\n\n////////////////////////////////////////////////////////////////////////////\n// Request Providers\n\nexport type RequestProvidersParameters = (\n providerDetail: EIP6963ProviderDetail,\n) => void\nexport type RequestProvidersReturnType = (() => void) | undefined\n\n/**\n * Watches for EIP-1193 Providers to be announced.\n */\nexport function requestProviders(\n listener: RequestProvidersParameters,\n): RequestProvidersReturnType {\n if (typeof window === 'undefined') return\n const handler = (event: EIP6963AnnounceProviderEvent) =>\n listener(event.detail)\n\n window.addEventListener('eip6963:announceProvider', handler)\n\n window.dispatchEvent(new CustomEvent('eip6963:requestProvider'))\n\n return () => window.removeEventListener('eip6963:announceProvider', handler)\n}\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api)\n return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && enabled) {\n console.warn(\n \"[zustand devtools middleware] Please install/enable Redux devtools extension\"\n );\n }\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording)\n return r;\n const action = nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState)\n return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0)\n f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(\n name,\n JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n ),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst oldImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e) {\n }\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize({ ...get() });\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then(\n (serializedValue) => storage.setItem(options.name, serializedValue)\n ).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\nconst newImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persistImpl = (config, baseOptions) => {\n if (\"getStorage\" in baseOptions || \"serialize\" in baseOptions || \"deserialize\" in baseOptions) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead.\"\n );\n }\n return oldImpl(config, baseOptions);\n }\n return newImpl(config, baseOptions);\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","import type { ErrorType } from '../../errors/utils.js'\n\nexport type WithTimeoutErrorType = ErrorType\n\nexport function withTimeout(\n fn: ({\n signal,\n }: { signal: AbortController['signal'] | null }) => Promise,\n {\n errorInstance = new Error('timed out'),\n timeout,\n signal,\n }: {\n // The error instance to throw when the timeout is reached.\n errorInstance?: Error | undefined\n // The timeout (in ms).\n timeout: number\n // Whether or not the timeout should use an abort signal.\n signal?: boolean | undefined\n },\n): Promise {\n return new Promise((resolve, reject) => {\n ;(async () => {\n let timeoutId!: NodeJS.Timeout\n try {\n const controller = new AbortController()\n if (timeout > 0) {\n timeoutId = setTimeout(() => {\n if (signal) {\n controller.abort()\n } else {\n reject(errorInstance)\n }\n }, timeout) as NodeJS.Timeout // need to cast because bun globals.d.ts overrides @types/node\n }\n resolve(await fn({ signal: controller?.signal || null }))\n } catch (err) {\n if ((err as Error)?.name === 'AbortError') reject(errorInstance)\n reject(err)\n } finally {\n clearTimeout(timeoutId)\n }\n })()\n })\n}\n","import {\n type AddEthereumChainParameter,\n type Address,\n type EIP1193Provider,\n type ProviderConnectInfo,\n type ProviderRpcError,\n ResourceUnavailableRpcError,\n type RpcError,\n SwitchChainError,\n UserRejectedRequestError,\n getAddress,\n numberToHex,\n withRetry,\n withTimeout,\n} from 'viem'\n\nimport type { Connector } from '../createConfig.js'\nimport { ChainNotConfiguredError } from '../errors/config.js'\nimport { ProviderNotFoundError } from '../errors/connector.js'\nimport type { Compute } from '../types/utils.js'\nimport { createConnector } from './createConnector.js'\n\nexport type InjectedParameters = {\n /**\n * Some injected providers do not support programmatic disconnect.\n * This flag simulates the disconnect behavior by keeping track of connection status in storage.\n * @default true\n */\n shimDisconnect?: boolean | undefined\n /**\n * [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) Ethereum Provider to target\n */\n target?: TargetId | Target | (() => Target | undefined) | undefined\n unstable_shimAsyncInject?: boolean | number | undefined\n}\n\n// Regex of wallets/providers that can accurately simulate contract calls & display contract revert reasons.\nconst supportsSimulationIdRegex = /(rabby|trustwallet)/\n\nconst targetMap = {\n coinbaseWallet: {\n id: 'coinbaseWallet',\n name: 'Coinbase Wallet',\n provider(window) {\n if (window?.coinbaseWalletExtension) return window.coinbaseWalletExtension\n return findProvider(window, 'isCoinbaseWallet')\n },\n },\n metaMask: {\n id: 'metaMask',\n name: 'MetaMask',\n provider(window) {\n return findProvider(window, (provider) => {\n if (!provider.isMetaMask) return false\n // Brave tries to make itself look like MetaMask\n // Could also try RPC `web3_clientVersion` if following is unreliable\n if (provider.isBraveWallet && !provider._events && !provider._state)\n return false\n // Other wallets that try to look like MetaMask\n const flags: WalletProviderFlags[] = [\n 'isApexWallet',\n 'isAvalanche',\n 'isBitKeep',\n 'isBlockWallet',\n 'isKuCoinWallet',\n 'isMathWallet',\n 'isOkxWallet',\n 'isOKExWallet',\n 'isOneInchIOSWallet',\n 'isOneInchAndroidWallet',\n 'isOpera',\n 'isPortal',\n 'isRabby',\n 'isTokenPocket',\n 'isTokenary',\n 'isZerion',\n ]\n for (const flag of flags) if (provider[flag]) return false\n return true\n })\n },\n },\n phantom: {\n id: 'phantom',\n name: 'Phantom',\n provider(window) {\n if (window?.phantom?.ethereum) return window.phantom?.ethereum\n return findProvider(window, 'isPhantom')\n },\n },\n} as const satisfies TargetMap\n\ninjected.type = 'injected' as const\nexport function injected(parameters: InjectedParameters = {}) {\n const { shimDisconnect = true, unstable_shimAsyncInject } = parameters\n\n function getTarget(): Compute {\n const target = parameters.target\n if (typeof target === 'function') {\n const result = target()\n if (result) return result\n }\n\n if (typeof target === 'object') return target\n\n if (typeof target === 'string')\n return {\n ...(targetMap[target as keyof typeof targetMap] ?? {\n id: target,\n name: `${target[0]!.toUpperCase()}${target.slice(1)}`,\n provider: `is${target[0]!.toUpperCase()}${target.slice(1)}`,\n }),\n }\n\n return {\n id: 'injected',\n name: 'Injected',\n provider(window) {\n return window?.ethereum\n },\n }\n }\n\n type Provider = WalletProvider | undefined\n type Properties = {\n onConnect(connectInfo: ProviderConnectInfo): void\n }\n type StorageItem = {\n [_ in 'injected.connected' | `${string}.disconnected`]: true\n }\n\n let accountsChanged: Connector['onAccountsChanged'] | undefined\n let chainChanged: Connector['onChainChanged'] | undefined\n let connect: Connector['onConnect'] | undefined\n let disconnect: Connector['onDisconnect'] | undefined\n\n return createConnector((config) => ({\n get icon() {\n return getTarget().icon\n },\n get id() {\n return getTarget().id\n },\n get name() {\n return getTarget().name\n },\n get supportsSimulation() {\n return supportsSimulationIdRegex.test(this.id.toLowerCase())\n },\n type: injected.type,\n async setup() {\n const provider = await this.getProvider()\n // Only start listening for events if `target` is set, otherwise `injected()` will also receive events\n if (provider?.on && parameters.target) {\n if (!connect) {\n connect = this.onConnect.bind(this)\n provider.on('connect', connect)\n }\n\n // We shouldn't need to listen for `'accountsChanged'` here since the `'connect'` event should suffice (and wallet shouldn't be connected yet).\n // Some wallets, like MetaMask, do not implement the `'connect'` event and overload `'accountsChanged'` instead.\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this)\n provider.on('accountsChanged', accountsChanged)\n }\n }\n },\n async connect({ chainId, isReconnecting } = {}) {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n\n let accounts: readonly Address[] = []\n if (isReconnecting) accounts = await this.getAccounts().catch(() => [])\n else if (shimDisconnect) {\n // Attempt to show another prompt for selecting account if `shimDisconnect` flag is enabled\n try {\n const permissions = await provider.request({\n method: 'wallet_requestPermissions',\n params: [{ eth_accounts: {} }],\n })\n accounts = (permissions[0]?.caveats?.[0]?.value as string[])?.map(\n (x) => getAddress(x),\n )\n // `'wallet_requestPermissions'` can return a different order of accounts than `'eth_accounts'`\n // switch to `'eth_accounts'` ordering if more than one account is connected\n // https://github.com/wevm/wagmi/issues/4140\n if (accounts.length > 0) {\n const sortedAccounts = await this.getAccounts()\n accounts = sortedAccounts\n }\n } catch (err) {\n const error = err as RpcError\n // Not all injected providers support `wallet_requestPermissions` (e.g. MetaMask iOS).\n // Only bubble up error if user rejects request\n if (error.code === UserRejectedRequestError.code)\n throw new UserRejectedRequestError(error)\n // Or prompt is already open\n if (error.code === ResourceUnavailableRpcError.code) throw error\n }\n }\n\n try {\n if (!accounts?.length && !isReconnecting) {\n const requestedAccounts = await provider.request({\n method: 'eth_requestAccounts',\n })\n accounts = requestedAccounts.map((x) => getAddress(x))\n }\n\n // Manage EIP-1193 event listeners\n // https://eips.ethereum.org/EIPS/eip-1193#events\n if (connect) {\n provider.removeListener('connect', connect)\n connect = undefined\n }\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this)\n provider.on('accountsChanged', accountsChanged)\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this)\n provider.on('chainChanged', chainChanged)\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this)\n provider.on('disconnect', disconnect)\n }\n\n // Switch to chain if provided\n let currentChainId = await this.getChainId()\n if (chainId && currentChainId !== chainId) {\n const chain = await this.switchChain!({ chainId }).catch((error) => {\n if (error.code === UserRejectedRequestError.code) throw error\n return { id: currentChainId }\n })\n currentChainId = chain?.id ?? currentChainId\n }\n\n // Remove disconnected shim if it exists\n if (shimDisconnect)\n await config.storage?.removeItem(`${this.id}.disconnected`)\n\n // Add connected shim if no target exists\n if (!parameters.target)\n await config.storage?.setItem('injected.connected', true)\n\n return { accounts, chainId: currentChainId }\n } catch (err) {\n const error = err as RpcError\n if (error.code === UserRejectedRequestError.code)\n throw new UserRejectedRequestError(error)\n if (error.code === ResourceUnavailableRpcError.code)\n throw new ResourceUnavailableRpcError(error)\n throw error\n }\n },\n async disconnect() {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n\n // Manage EIP-1193 event listeners\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged)\n chainChanged = undefined\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect)\n disconnect = undefined\n }\n if (!connect) {\n connect = this.onConnect.bind(this)\n provider.on('connect', connect)\n }\n\n // Experimental support for MetaMask disconnect\n // https://github.com/MetaMask/metamask-improvement-proposals/blob/main/MIPs/mip-2.md\n try {\n // Adding timeout as not all wallets support this method and can hang\n // https://github.com/wevm/wagmi/issues/4064\n await withTimeout(\n () =>\n // TODO: Remove explicit type for viem@3\n provider.request<{\n Method: 'wallet_revokePermissions'\n Parameters: [permissions: { eth_accounts: Record }]\n ReturnType: null\n }>({\n // `'wallet_revokePermissions'` added in `viem@2.10.3`\n method: 'wallet_revokePermissions',\n params: [{ eth_accounts: {} }],\n }),\n { timeout: 100 },\n )\n } catch {}\n\n // Add shim signalling connector is disconnected\n if (shimDisconnect) {\n await config.storage?.setItem(`${this.id}.disconnected`, true)\n }\n\n if (!parameters.target)\n await config.storage?.removeItem('injected.connected')\n },\n async getAccounts() {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n const accounts = await provider.request({ method: 'eth_accounts' })\n return accounts.map((x) => getAddress(x))\n },\n async getChainId() {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n const hexChainId = await provider.request({ method: 'eth_chainId' })\n return Number(hexChainId)\n },\n async getProvider() {\n if (typeof window === 'undefined') return undefined\n\n let provider: Provider\n const target = getTarget()\n if (typeof target.provider === 'function')\n provider = target.provider(window as Window | undefined)\n else if (typeof target.provider === 'string')\n provider = findProvider(window, target.provider)\n else provider = target.provider\n\n // Some wallets do not conform to EIP-1193 (e.g. Trust Wallet)\n // https://github.com/wevm/wagmi/issues/3526#issuecomment-1912683002\n if (provider && !provider.removeListener) {\n // Try using `off` handler if it exists, otherwise noop\n if ('off' in provider && typeof provider.off === 'function')\n provider.removeListener =\n provider.off as typeof provider.removeListener\n else provider.removeListener = () => {}\n }\n\n return provider\n },\n async isAuthorized() {\n try {\n const isDisconnected =\n shimDisconnect &&\n // If shim exists in storage, connector is disconnected\n (await config.storage?.getItem(`${this.id}.disconnected`))\n if (isDisconnected) return false\n\n // Don't allow injected connector to connect if no target is set and it hasn't already connected\n // (e.g. flag in storage is not set). This prevents a targetless injected connector from connecting\n // automatically whenever there is a targeted connector configured.\n if (!parameters.target) {\n const connected = await config.storage?.getItem('injected.connected')\n if (!connected) return false\n }\n\n const provider = await this.getProvider()\n if (!provider) {\n if (\n unstable_shimAsyncInject !== undefined &&\n unstable_shimAsyncInject !== false\n ) {\n // If no provider is found, check for async injection\n // https://github.com/wevm/references/issues/167\n // https://github.com/MetaMask/detect-provider\n const handleEthereum = async () => {\n if (typeof window !== 'undefined')\n window.removeEventListener(\n 'ethereum#initialized',\n handleEthereum,\n )\n const provider = await this.getProvider()\n return !!provider\n }\n const timeout =\n typeof unstable_shimAsyncInject === 'number'\n ? unstable_shimAsyncInject\n : 1_000\n const res = await Promise.race([\n ...(typeof window !== 'undefined'\n ? [\n new Promise((resolve) =>\n window.addEventListener(\n 'ethereum#initialized',\n () => resolve(handleEthereum()),\n { once: true },\n ),\n ),\n ]\n : []),\n new Promise((resolve) =>\n setTimeout(() => resolve(handleEthereum()), timeout),\n ),\n ])\n if (res) return true\n }\n\n throw new ProviderNotFoundError()\n }\n\n // Use retry strategy as some injected wallets (e.g. MetaMask) fail to\n // immediately resolve JSON-RPC requests on page load.\n const accounts = await withRetry(() => this.getAccounts())\n return !!accounts.length\n } catch {\n return false\n }\n },\n async switchChain({ addEthereumChainParameter, chainId }) {\n const provider = await this.getProvider()\n if (!provider) throw new ProviderNotFoundError()\n\n const chain = config.chains.find((x) => x.id === chainId)\n if (!chain) throw new SwitchChainError(new ChainNotConfiguredError())\n\n try {\n await Promise.all([\n provider\n .request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: numberToHex(chainId) }],\n })\n // During `'wallet_switchEthereumChain'`, MetaMask makes a `'net_version'` RPC call to the target chain.\n // If this request fails, MetaMask does not emit the `'chainChanged'` event, but will still switch the chain.\n // To counter this behavior, we request and emit the current chain ID to confirm the chain switch either via\n // this callback or an externally emitted `'chainChanged'` event.\n // https://github.com/MetaMask/metamask-extension/issues/24247\n .then(async () => {\n const currentChainId = await this.getChainId()\n if (currentChainId === chainId)\n config.emitter.emit('change', { chainId })\n }),\n new Promise((resolve) => {\n const listener = ((data) => {\n if ('chainId' in data && data.chainId === chainId) {\n config.emitter.off('change', listener)\n resolve()\n }\n }) satisfies Parameters[1]\n config.emitter.on('change', listener)\n }),\n ])\n return chain\n } catch (err) {\n const error = err as RpcError\n\n // Indicates chain is not added to provider\n if (\n error.code === 4902 ||\n // Unwrapping for MetaMask Mobile\n // https://github.com/MetaMask/metamask-mobile/issues/2944#issuecomment-976988719\n (error as ProviderRpcError<{ originalError?: { code: number } }>)\n ?.data?.originalError?.code === 4902\n ) {\n try {\n const { default: blockExplorer, ...blockExplorers } =\n chain.blockExplorers ?? {}\n let blockExplorerUrls: string[] | undefined\n if (addEthereumChainParameter?.blockExplorerUrls)\n blockExplorerUrls = addEthereumChainParameter.blockExplorerUrls\n else if (blockExplorer)\n blockExplorerUrls = [\n blockExplorer.url,\n ...Object.values(blockExplorers).map((x) => x.url),\n ]\n\n let rpcUrls: readonly string[]\n if (addEthereumChainParameter?.rpcUrls?.length)\n rpcUrls = addEthereumChainParameter.rpcUrls\n else rpcUrls = [chain.rpcUrls.default?.http[0] ?? '']\n\n const addEthereumChain = {\n blockExplorerUrls,\n chainId: numberToHex(chainId),\n chainName: addEthereumChainParameter?.chainName ?? chain.name,\n iconUrls: addEthereumChainParameter?.iconUrls,\n nativeCurrency:\n addEthereumChainParameter?.nativeCurrency ??\n chain.nativeCurrency,\n rpcUrls,\n } satisfies AddEthereumChainParameter\n\n await provider.request({\n method: 'wallet_addEthereumChain',\n params: [addEthereumChain],\n })\n\n const currentChainId = await this.getChainId()\n if (currentChainId !== chainId)\n throw new UserRejectedRequestError(\n new Error('User rejected switch after adding network.'),\n )\n\n return chain\n } catch (error) {\n throw new UserRejectedRequestError(error as Error)\n }\n }\n\n if (error.code === UserRejectedRequestError.code)\n throw new UserRejectedRequestError(error)\n throw new SwitchChainError(error)\n }\n },\n async onAccountsChanged(accounts) {\n // Disconnect if there are no accounts\n if (accounts.length === 0) this.onDisconnect()\n // Connect if emitter is listening for connect event (e.g. is disconnected and connects through wallet interface)\n else if (config.emitter.listenerCount('connect')) {\n const chainId = (await this.getChainId()).toString()\n this.onConnect({ chainId })\n // Remove disconnected shim if it exists\n if (shimDisconnect)\n await config.storage?.removeItem(`${this.id}.disconnected`)\n }\n // Regular change event\n else\n config.emitter.emit('change', {\n accounts: accounts.map((x) => getAddress(x)),\n })\n },\n onChainChanged(chain) {\n const chainId = Number(chain)\n config.emitter.emit('change', { chainId })\n },\n async onConnect(connectInfo) {\n const accounts = await this.getAccounts()\n if (accounts.length === 0) return\n\n const chainId = Number(connectInfo.chainId)\n config.emitter.emit('connect', { accounts, chainId })\n\n // Manage EIP-1193 event listeners\n const provider = await this.getProvider()\n if (provider) {\n if (connect) {\n provider.removeListener('connect', connect)\n connect = undefined\n }\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this)\n provider.on('accountsChanged', accountsChanged)\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this)\n provider.on('chainChanged', chainChanged)\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this)\n provider.on('disconnect', disconnect)\n }\n }\n },\n async onDisconnect(error) {\n const provider = await this.getProvider()\n\n // If MetaMask emits a `code: 1013` error, wait for reconnection before disconnecting\n // https://github.com/MetaMask/providers/pull/120\n if (error && (error as RpcError<1013>).code === 1013) {\n if (provider && !!(await this.getAccounts()).length) return\n }\n\n // No need to remove `${this.id}.disconnected` from storage because `onDisconnect` is typically\n // only called when the wallet is disconnected through the wallet's interface, meaning the wallet\n // actually disconnected and we don't need to simulate it.\n config.emitter.emit('disconnect')\n\n // Manage EIP-1193 event listeners\n if (provider) {\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged)\n chainChanged = undefined\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect)\n disconnect = undefined\n }\n if (!connect) {\n connect = this.onConnect.bind(this)\n provider.on('connect', connect)\n }\n }\n },\n }))\n}\n\ntype Target = {\n icon?: string | undefined\n id: string\n name: string\n provider:\n | WalletProviderFlags\n | WalletProvider\n | ((window?: Window | undefined) => WalletProvider | undefined)\n}\n\n/** @deprecated */\ntype TargetId = Compute extends `is${infer name}`\n ? name extends `${infer char}${infer rest}`\n ? `${Lowercase}${rest}`\n : never\n : never\n\ntype TargetMap = { [_ in TargetId]?: Target | undefined }\n\n/** @deprecated */\ntype WalletProviderFlags =\n | 'isApexWallet'\n | 'isAvalanche'\n | 'isBackpack'\n | 'isBifrost'\n | 'isBitKeep'\n | 'isBitski'\n | 'isBlockWallet'\n | 'isBraveWallet'\n | 'isCoinbaseWallet'\n | 'isDawn'\n | 'isEnkrypt'\n | 'isExodus'\n | 'isFrame'\n | 'isFrontier'\n | 'isGamestop'\n | 'isHyperPay'\n | 'isImToken'\n | 'isKuCoinWallet'\n | 'isMathWallet'\n | 'isMetaMask'\n | 'isOkxWallet'\n | 'isOKExWallet'\n | 'isOneInchAndroidWallet'\n | 'isOneInchIOSWallet'\n | 'isOpera'\n | 'isPhantom'\n | 'isPortal'\n | 'isRabby'\n | 'isRainbow'\n | 'isStatus'\n | 'isTally'\n | 'isTokenPocket'\n | 'isTokenary'\n | 'isTrust'\n | 'isTrustWallet'\n | 'isXDEFI'\n | 'isZerion'\n\ntype WalletProvider = Compute<\n EIP1193Provider & {\n [key in WalletProviderFlags]?: true | undefined\n } & {\n providers?: WalletProvider[] | undefined\n /** Only exists in MetaMask as of 2022/04/03 */\n _events?: { connect?: (() => void) | undefined } | undefined\n /** Only exists in MetaMask as of 2022/04/03 */\n _state?:\n | {\n accounts?: string[]\n initialized?: boolean\n isConnected?: boolean\n isPermanentlyDisconnected?: boolean\n isUnlocked?: boolean\n }\n | undefined\n }\n>\n\ntype Window = {\n coinbaseWalletExtension?: WalletProvider | undefined\n ethereum?: WalletProvider | undefined\n phantom?: { ethereum: WalletProvider } | undefined\n}\n\nfunction findProvider(\n window: globalThis.Window | Window | undefined,\n select?: WalletProviderFlags | ((provider: WalletProvider) => boolean),\n) {\n function isProvider(provider: WalletProvider) {\n if (typeof select === 'function') return select(provider)\n if (typeof select === 'string') return provider[select]\n return true\n }\n\n const ethereum = (window as Window).ethereum\n if (ethereum?.providers)\n return ethereum.providers.find((provider) => isProvider(provider))\n if (ethereum && isProvider(ethereum)) return ethereum\n return undefined\n}\n","import { EventEmitter } from 'eventemitter3'\n\ntype EventMap = Record\ntype EventKey = string & keyof eventMap\ntype EventFn = (\n ...parameters: parameters\n) => void\nexport type EventData<\n eventMap extends EventMap,\n eventName extends keyof eventMap,\n> = (eventMap[eventName] extends [never] ? unknown : eventMap[eventName]) & {\n uid: string\n}\n\nexport class Emitter {\n _emitter = new EventEmitter()\n\n constructor(public uid: string) {}\n\n on>(\n eventName: key,\n fn: EventFn<\n eventMap[key] extends [never]\n ? [{ uid: string }]\n : [data: eventMap[key] & { uid: string }]\n >,\n ) {\n this._emitter.on(eventName, fn as EventFn)\n }\n\n once>(\n eventName: key,\n fn: EventFn<\n eventMap[key] extends [never]\n ? [{ uid: string }]\n : [data: eventMap[key] & { uid: string }]\n >,\n ) {\n this._emitter.once(eventName, fn as EventFn)\n }\n\n off>(\n eventName: key,\n fn: EventFn<\n eventMap[key] extends [never]\n ? [{ uid: string }]\n : [data: eventMap[key] & { uid: string }]\n >,\n ) {\n this._emitter.off(eventName, fn as EventFn)\n }\n\n emit>(\n eventName: key,\n ...params: eventMap[key] extends [never] ? [] : [data: eventMap[key]]\n ) {\n const data = params[0]\n this._emitter.emit(eventName, { uid: this.uid, ...data })\n }\n\n listenerCount>(eventName: key) {\n return this._emitter.listenerCount(eventName)\n }\n}\n\nexport function createEmitter(uid: string) {\n return new Emitter(uid)\n}\n","type Reviver = (key: string, value: any) => any\n\nexport function deserialize(value: string, reviver?: Reviver): type {\n return JSON.parse(value, (key, value_) => {\n let value = value_\n if (value?.__type === 'bigint') value = BigInt(value.value)\n if (value?.__type === 'Map') value = new Map(value.value)\n return reviver?.(key, value) ?? value\n })\n}\n","/**\n * Get the reference key for the circular value\n *\n * @param keys the keys to build the reference key from\n * @param cutoff the maximum number of keys to include\n * @returns the reference key\n */\nfunction getReferenceKey(keys: string[], cutoff: number) {\n return keys.slice(0, cutoff).join('.') || '.'\n}\n\n/**\n * Faster `Array.prototype.indexOf` implementation build for slicing / splicing\n *\n * @param array the array to match the value in\n * @param value the value to match\n * @returns the matching index, or -1\n */\nfunction getCutoff(array: any[], value: any) {\n const { length } = array\n\n for (let index = 0; index < length; ++index) {\n if (array[index] === value) {\n return index + 1\n }\n }\n\n return 0\n}\n\ntype StandardReplacer = (key: string, value: any) => any\ntype CircularReplacer = (key: string, value: any, referenceKey: string) => any\n\n/**\n * Create a replacer method that handles circular values\n *\n * @param [replacer] a custom replacer to use for non-circular values\n * @param [circularReplacer] a custom replacer to use for circular methods\n * @returns the value to stringify\n */\nfunction createReplacer(\n replacer?: StandardReplacer | null | undefined,\n circularReplacer?: CircularReplacer | null | undefined,\n): StandardReplacer {\n const hasReplacer = typeof replacer === 'function'\n const hasCircularReplacer = typeof circularReplacer === 'function'\n\n const cache: any[] = []\n const keys: string[] = []\n\n return function replace(this: any, key: string, value: any) {\n if (typeof value === 'object') {\n if (cache.length) {\n const thisCutoff = getCutoff(cache, this)\n\n if (thisCutoff === 0) {\n cache[cache.length] = this\n } else {\n cache.splice(thisCutoff)\n keys.splice(thisCutoff)\n }\n\n keys[keys.length] = key\n\n const valueCutoff = getCutoff(cache, value)\n\n if (valueCutoff !== 0) {\n return hasCircularReplacer\n ? circularReplacer.call(\n this,\n key,\n value,\n getReferenceKey(keys, valueCutoff),\n )\n : `[ref=${getReferenceKey(keys, valueCutoff)}]`\n }\n } else {\n cache[0] = value\n keys[0] = key\n }\n }\n\n return hasReplacer ? replacer.call(this, key, value) : value\n }\n}\n\n/**\n * Stringifier that handles circular values\n *\n * Forked from https://github.com/planttheidea/fast-stringify\n *\n * @param value to stringify\n * @param [replacer] a custom replacer function for handling standard values\n * @param [indent] the number of spaces to indent the output by\n * @param [circularReplacer] a custom replacer function for handling circular values\n * @returns the stringified output\n */\nexport function serialize(\n value: any,\n replacer?: StandardReplacer | null | undefined,\n indent?: number | null | undefined,\n circularReplacer?: CircularReplacer | null | undefined,\n) {\n return JSON.stringify(\n value,\n createReplacer((key, value_) => {\n let value = value_\n if (typeof value === 'bigint')\n value = { __type: 'bigint', value: value_.toString() }\n if (value instanceof Map)\n value = { __type: 'Map', value: Array.from(value_.entries()) }\n return replacer?.(key, value) ?? value\n }, circularReplacer),\n indent ?? undefined,\n )\n}\n","import type { PartializedState } from './createConfig.js'\nimport type { Compute } from './types/utils.js'\nimport { deserialize as deserialize_ } from './utils/deserialize.js'\nimport { serialize as serialize_ } from './utils/serialize.js'\n\n// key-values for loose autocomplete and typing\nexport type StorageItemMap = {\n recentConnectorId: string\n state: PartializedState\n}\n\nexport type Storage<\n itemMap extends Record = Record,\n ///\n storageItemMap extends StorageItemMap = StorageItemMap & itemMap,\n> = {\n key: string\n getItem<\n key extends keyof storageItemMap,\n value extends storageItemMap[key],\n defaultValue extends value | null | undefined,\n >(\n key: key,\n defaultValue?: defaultValue | undefined,\n ):\n | (defaultValue extends null ? value | null : value)\n | Promise\n setItem<\n key extends keyof storageItemMap,\n value extends storageItemMap[key] | null,\n >(key: key, value: value): void | Promise\n removeItem(key: keyof storageItemMap): void | Promise\n}\n\nexport type BaseStorage = {\n getItem(\n key: string,\n ): string | null | undefined | Promise\n setItem(key: string, value: string): void | Promise\n removeItem(key: string): void | Promise\n}\n\nexport type CreateStorageParameters = {\n deserialize?: ((value: string) => type | unknown) | undefined\n key?: string | undefined\n serialize?: ((value: type | any) => string) | undefined\n storage?: Compute | undefined\n}\n\nexport function createStorage<\n itemMap extends Record = Record,\n storageItemMap extends StorageItemMap = StorageItemMap & itemMap,\n>(parameters: CreateStorageParameters): Compute> {\n const {\n deserialize = deserialize_,\n key: prefix = 'wagmi',\n serialize = serialize_,\n storage = noopStorage,\n } = parameters\n\n function unwrap(value: type): type | Promise {\n if (value instanceof Promise) return value.then((x) => x).catch(() => null)\n return value\n }\n\n return {\n ...storage,\n key: prefix,\n async getItem(key, defaultValue) {\n const value = storage.getItem(`${prefix}.${key as string}`)\n const unwrapped = await unwrap(value)\n if (unwrapped) return deserialize(unwrapped) ?? null\n return (defaultValue ?? null) as any\n },\n async setItem(key, value) {\n const storageKey = `${prefix}.${key as string}`\n if (value === null) await unwrap(storage.removeItem(storageKey))\n else await unwrap(storage.setItem(storageKey, serialize(value)))\n },\n async removeItem(key) {\n await unwrap(storage.removeItem(`${prefix}.${key as string}`))\n },\n }\n}\n\nexport const noopStorage = {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n} satisfies BaseStorage\n","const size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import { BaseError } from './base.js'\n\nexport type UrlRequiredErrorType = UrlRequiredError & {\n name: 'UrlRequiredError'\n}\nexport class UrlRequiredError extends BaseError {\n constructor() {\n super(\n 'No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.',\n {\n docsPath: '/docs/clients/intro',\n name: 'UrlRequiredError',\n },\n )\n }\n}\n","function createIdStore() {\n return {\n current: 0,\n take() {\n return this.current++\n },\n reset() {\n this.current = 0\n },\n }\n}\n\nexport const idCache = /*#__PURE__*/ createIdStore()\n","import { RpcRequestError } from '../../errors/request.js'\nimport {\n UrlRequiredError,\n type UrlRequiredErrorType,\n} from '../../errors/transport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { RpcRequest } from '../../types/rpc.js'\nimport { createBatchScheduler } from '../../utils/promise/createBatchScheduler.js'\nimport {\n type HttpRpcClientOptions,\n getHttpRpcClient,\n} from '../../utils/rpc/http.js'\n\nimport {\n type CreateTransportErrorType,\n type Transport,\n type TransportConfig,\n createTransport,\n} from './createTransport.js'\n\nexport type HttpTransportConfig = {\n /**\n * Whether to enable Batch JSON-RPC.\n * @link https://www.jsonrpc.org/specification#batch\n */\n batch?:\n | boolean\n | {\n /** The maximum number of JSON-RPC requests to send in a batch. @default 1_000 */\n batchSize?: number | undefined\n /** The maximum number of milliseconds to wait before sending a batch. @default 0 */\n wait?: number | undefined\n }\n | undefined\n /**\n * Request configuration to pass to `fetch`.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/fetch\n */\n fetchOptions?: HttpRpcClientOptions['fetchOptions'] | undefined\n /** A callback to handle the response from `fetch`. */\n onFetchRequest?: HttpRpcClientOptions['onRequest'] | undefined\n /** A callback to handle the response from `fetch`. */\n onFetchResponse?: HttpRpcClientOptions['onResponse'] | undefined\n /** The key of the HTTP transport. */\n key?: TransportConfig['key'] | undefined\n /** The name of the HTTP transport. */\n name?: TransportConfig['name'] | undefined\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount'] | undefined\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay'] | undefined\n /** The timeout (in ms) for the HTTP request. Default: 10_000 */\n timeout?: TransportConfig['timeout'] | undefined\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n fetchOptions?: HttpTransportConfig['fetchOptions'] | undefined\n url?: string | undefined\n }\n>\n\nexport type HttpTransportErrorType =\n | CreateTransportErrorType\n | UrlRequiredErrorType\n | ErrorType\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string | undefined,\n config: HttpTransportConfig = {},\n): HttpTransport {\n const {\n batch,\n fetchOptions,\n key = 'http',\n name = 'HTTP JSON-RPC',\n onFetchRequest,\n onFetchResponse,\n retryDelay,\n } = config\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const { batchSize = 1000, wait = 0 } =\n typeof batch === 'object' ? batch : {}\n const retryCount = config.retryCount ?? retryCount_\n const timeout = timeout_ ?? config.timeout ?? 10_000\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n\n const rpcClient = getHttpRpcClient(url_, {\n fetchOptions,\n onRequest: onFetchRequest,\n onResponse: onFetchResponse,\n timeout,\n })\n\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const body = { method, params }\n\n const { schedule } = createBatchScheduler({\n id: url_,\n wait,\n shouldSplitBatch(requests) {\n return requests.length > batchSize\n },\n fn: (body: RpcRequest[]) =>\n rpcClient.request({\n body,\n }),\n sort: (a, b) => a.id - b.id,\n })\n\n const fn = async (body: RpcRequest) =>\n batch\n ? schedule(body)\n : [\n await rpcClient.request({\n body,\n }),\n ]\n\n const [{ error, result }] = await fn(body)\n if (error)\n throw new RpcRequestError({\n body,\n error,\n url: url_,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n },\n {\n fetchOptions,\n url: url_,\n },\n )\n }\n}\n","import {\n HttpRequestError,\n type HttpRequestErrorType as HttpRequestErrorType_,\n TimeoutError,\n type TimeoutErrorType,\n} from '../../errors/request.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { RpcRequest, RpcResponse } from '../../types/rpc.js'\nimport {\n type WithTimeoutErrorType,\n withTimeout,\n} from '../promise/withTimeout.js'\nimport { stringify } from '../stringify.js'\nimport { idCache } from './id.js'\n\nexport type HttpRpcClientOptions = {\n /** Request configuration to pass to `fetch`. */\n fetchOptions?: Omit | undefined\n /** A callback to handle the request. */\n onRequest?: ((request: Request) => Promise | void) | undefined\n /** A callback to handle the response. */\n onResponse?: ((response: Response) => Promise | void) | undefined\n /** The timeout (in ms) for the request. */\n timeout?: number | undefined\n}\n\nexport type HttpRequestParameters<\n body extends RpcRequest | RpcRequest[] = RpcRequest,\n> = {\n /** The RPC request body. */\n body: body\n /** Request configuration to pass to `fetch`. */\n fetchOptions?: HttpRpcClientOptions['fetchOptions'] | undefined\n /** A callback to handle the response. */\n onRequest?: ((request: Request) => Promise | void) | undefined\n /** A callback to handle the response. */\n onResponse?: ((response: Response) => Promise | void) | undefined\n /** The timeout (in ms) for the request. */\n timeout?: HttpRpcClientOptions['timeout'] | undefined\n}\n\nexport type HttpRequestReturnType<\n body extends RpcRequest | RpcRequest[] = RpcRequest,\n> = body extends RpcRequest[] ? RpcResponse[] : RpcResponse\n\nexport type HttpRequestErrorType =\n | HttpRequestErrorType_\n | TimeoutErrorType\n | WithTimeoutErrorType\n | ErrorType\n\nexport type HttpRpcClient = {\n request(\n params: HttpRequestParameters,\n ): Promise>\n}\n\nexport function getHttpRpcClient(\n url: string,\n options: HttpRpcClientOptions = {},\n): HttpRpcClient {\n return {\n async request(params) {\n const {\n body,\n onRequest = options.onRequest,\n onResponse = options.onResponse,\n timeout = options.timeout ?? 10_000,\n } = params\n\n const fetchOptions = {\n ...(options.fetchOptions ?? {}),\n ...(params.fetchOptions ?? {}),\n }\n\n const { headers, method, signal: signal_ } = fetchOptions\n\n try {\n const response = await withTimeout(\n async ({ signal }) => {\n const init: RequestInit = {\n ...fetchOptions,\n body: Array.isArray(body)\n ? stringify(\n body.map((body) => ({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n })),\n )\n : stringify({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n }),\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n method: method || 'POST',\n signal: signal_ || (timeout > 0 ? signal : null),\n }\n const request = new Request(url, init)\n if (onRequest) await onRequest(request)\n const response = await fetch(url, init)\n return response\n },\n {\n errorInstance: new TimeoutError({ body, url }),\n timeout,\n signal: true,\n },\n )\n\n if (onResponse) await onResponse(response)\n\n let data: any\n if (\n response.headers.get('Content-Type')?.startsWith('application/json')\n )\n data = await response.json()\n else {\n data = await response.text()\n try {\n data = JSON.parse(data || '{}')\n } catch (err) {\n if (response.ok) throw err\n data = { error: data }\n }\n }\n\n if (!response.ok) {\n throw new HttpRequestError({\n body,\n details: stringify(data.error) || response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n })\n }\n\n return data\n } catch (err) {\n if (err instanceof HttpRequestError) throw err\n if (err instanceof TimeoutError) throw err\n throw new HttpRequestError({\n body,\n cause: err as Error,\n url,\n })\n }\n },\n }\n}\n","import { mainnet as eth, sepolia, bsc, bscTestnet } from 'wagmi/chains';\nimport { walletConnect } from 'wagmi/connectors';\nimport { airdaoMainnet, airdaoTestnet } from '@airdao/ui-library';\nimport { createConfig, http } from 'wagmi';\nimport { createClient } from 'viem';\n\nconst { REACT_APP_CHAIN_ID, REACT_APP_WC_PROJECT_ID } = process.env;\n\nconst networksByChain = {\n 16718: [airdaoMainnet, eth, bsc],\n 22040: [airdaoTestnet, sepolia, bscTestnet],\n};\n\nconst walletconnectConfig = {\n projectId: REACT_APP_WC_PROJECT_ID,\n metadata: {\n name: 'AirDAO Bridge',\n description:\n 'Transfer your crypto tokens between AirDAO`s AMB-NET blockchain, the Ethereum network, and BNB Smart Chain (BSC).',\n url: 'https://airdao.io/bridge',\n icons: ['https://airdao.io/favicon.svg'],\n },\n};\n\nexport const wagmiConfig = createConfig({\n chains: networksByChain[+REACT_APP_CHAIN_ID],\n multiInjectedProviderDiscovery: true,\n client({ chain }) {\n return createClient({ chain, transport: http() });\n },\n connectors: [walletConnect(walletconnectConfig)],\n});\n","import {\n type EIP6963ProviderDetail,\n type Store as MipdStore,\n createStore as createMipd,\n} from 'mipd'\nimport {\n type Address,\n type Chain,\n type Client,\n type EIP1193RequestFn,\n createClient,\n type ClientConfig as viem_ClientConfig,\n type Transport as viem_Transport,\n} from 'viem'\nimport { persist, subscribeWithSelector } from 'zustand/middleware'\nimport { type Mutate, type StoreApi, createStore } from 'zustand/vanilla'\n\nimport type {\n ConnectorEventMap,\n CreateConnectorFn,\n} from './connectors/createConnector.js'\nimport { injected } from './connectors/injected.js'\nimport { type Emitter, type EventData, createEmitter } from './createEmitter.js'\nimport { type Storage, createStorage, noopStorage } from './createStorage.js'\nimport { ChainNotConfiguredError } from './errors/config.js'\nimport type {\n Compute,\n ExactPartial,\n LooseOmit,\n OneOf,\n RemoveUndefined,\n} from './types/utils.js'\nimport { uid } from './utils/uid.js'\nimport { version } from './version.js'\n\nexport type CreateConfigParameters<\n chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],\n transports extends Record = Record<\n chains[number]['id'],\n Transport\n >,\n> = Compute<\n {\n chains: chains\n connectors?: CreateConnectorFn[] | undefined\n multiInjectedProviderDiscovery?: boolean | undefined\n storage?: Storage | null | undefined\n ssr?: boolean | undefined\n syncConnectedChain?: boolean | undefined\n } & OneOf<\n | ({ transports: transports } & {\n [key in keyof ClientConfig]?:\n | ClientConfig[key]\n | { [_ in chains[number]['id']]?: ClientConfig[key] | undefined }\n | undefined\n })\n | {\n client(parameters: { chain: chains[number] }): Client<\n transports[chains[number]['id']],\n chains[number]\n >\n }\n >\n>\n\nexport function createConfig<\n const chains extends readonly [Chain, ...Chain[]],\n transports extends Record,\n>(\n parameters: CreateConfigParameters,\n): Config {\n const {\n multiInjectedProviderDiscovery = true,\n storage = createStorage({\n storage:\n typeof window !== 'undefined' && window.localStorage\n ? window.localStorage\n : noopStorage,\n }),\n syncConnectedChain = true,\n ssr = false,\n ...rest\n } = parameters\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n // Set up connectors, clients, etc.\n /////////////////////////////////////////////////////////////////////////////////////////////////\n\n const mipd =\n typeof window !== 'undefined' && multiInjectedProviderDiscovery\n ? createMipd()\n : undefined\n\n const chains = createStore(() => rest.chains)\n const connectors = createStore(() =>\n [\n ...(rest.connectors ?? []),\n ...(!ssr\n ? mipd?.getProviders().map(providerDetailToConnector) ?? []\n : []),\n ].map(setup),\n )\n function setup(connectorFn: CreateConnectorFn): Connector {\n // Set up emitter with uid and add to connector so they are \"linked\" together.\n const emitter = createEmitter(uid())\n const connector = {\n ...connectorFn({\n emitter,\n chains: chains.getState(),\n storage,\n transports: rest.transports,\n }),\n emitter,\n uid: emitter.uid,\n }\n\n // Start listening for `connect` events on connector setup\n // This allows connectors to \"connect\" themselves without user interaction (e.g. MetaMask's \"Manually connect to current site\")\n emitter.on('connect', connect)\n connector.setup?.()\n\n return connector\n }\n function providerDetailToConnector(providerDetail: EIP6963ProviderDetail) {\n const { info } = providerDetail\n const provider = providerDetail.provider as any\n return injected({ target: { ...info, id: info.rdns, provider } })\n }\n\n const clients = new Map>()\n function getClient(\n config: { chainId?: chainId | chains[number]['id'] | undefined } = {},\n ): Client> {\n const chainId = config.chainId ?? store.getState().chainId\n const chain = chains.getState().find((x) => x.id === chainId)\n\n // chainId specified and not configured\n if (config.chainId && !chain) throw new ChainNotConfiguredError()\n\n // If the target chain is not configured, use the client of the current chain.\n type Return = Client>\n {\n const client = clients.get(store.getState().chainId)\n if (client && !chain) return client as Return\n if (!chain) throw new ChainNotConfiguredError()\n }\n\n // If a memoized client exists for a chain id, use that.\n {\n const client = clients.get(chainId)\n if (client) return client as Return\n }\n\n let client: Client\n if (rest.client) client = rest.client({ chain })\n else {\n const chainId = chain.id as chains[number]['id']\n const chainIds = chains.getState().map((x) => x.id)\n // Grab all properties off `rest` and resolve for use in `createClient`\n const properties: Partial = {}\n const entries = Object.entries(rest) as [keyof typeof rest, any][]\n\n for (const [key, value] of entries) {\n if (\n key === 'chains' ||\n key === 'client' ||\n key === 'connectors' ||\n key === 'transports'\n )\n continue\n\n if (typeof value === 'object') {\n // check if value is chainId-specific since some values can be objects\n // e.g. { batch: { multicall: { batchSize: 1024 } } }\n if (chainId in value) properties[key] = value[chainId]\n else {\n // check if value is chainId-specific, but does not have value for current chainId\n const hasChainSpecificValue = chainIds.some((x) => x in value)\n if (hasChainSpecificValue) continue\n properties[key] = value\n }\n } else properties[key] = value\n }\n\n client = createClient({\n ...properties,\n chain,\n batch: properties.batch ?? { multicall: true },\n transport: (parameters) =>\n rest.transports[chainId]({ ...parameters, connectors }),\n })\n }\n\n clients.set(chainId, client)\n return client as Return\n }\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n // Create store\n /////////////////////////////////////////////////////////////////////////////////////////////////\n\n function getInitialState(): State {\n return {\n chainId: chains.getState()[0].id,\n connections: new Map(),\n current: null,\n status: 'disconnected',\n }\n }\n\n let currentVersion: number\n const prefix = '0.0.0-canary-'\n if (version.startsWith(prefix))\n currentVersion = Number.parseInt(version.replace(prefix, ''))\n // use package major version to version store\n else currentVersion = Number.parseInt(version.split('.')[0] ?? '0')\n\n const store = createStore(\n subscribeWithSelector(\n // only use persist middleware if storage exists\n storage\n ? persist(getInitialState, {\n migrate(persistedState, version) {\n if (version === currentVersion) return persistedState as State\n\n const initialState = getInitialState()\n const chainId = validatePersistedChainId(\n persistedState,\n initialState.chainId,\n )\n return { ...initialState, chainId }\n },\n name: 'store',\n partialize(state) {\n // Only persist \"critical\" store properties to preserve storage size.\n return {\n connections: {\n __type: 'Map',\n value: Array.from(state.connections.entries()).map(\n ([key, connection]) => {\n const { id, name, type, uid } = connection.connector\n const connector = { id, name, type, uid }\n return [key, { ...connection, connector }]\n },\n ),\n } as unknown as PartializedState['connections'],\n chainId: state.chainId,\n current: state.current,\n } satisfies PartializedState\n },\n merge(persistedState, currentState) {\n // `status` should not be persisted as it messes with reconnection\n if (\n typeof persistedState === 'object' &&\n persistedState &&\n 'status' in persistedState\n )\n delete persistedState.status\n // Make sure persisted `chainId` is valid\n const chainId = validatePersistedChainId(\n persistedState,\n currentState.chainId,\n )\n return {\n ...currentState,\n ...(persistedState as object),\n chainId,\n }\n },\n skipHydration: ssr,\n storage: storage as Storage>,\n version: currentVersion,\n })\n : getInitialState,\n ),\n )\n\n function validatePersistedChainId(\n persistedState: unknown,\n defaultChainId: number,\n ) {\n return persistedState &&\n typeof persistedState === 'object' &&\n 'chainId' in persistedState &&\n typeof persistedState.chainId === 'number' &&\n chains.getState().some((x) => x.id === persistedState.chainId)\n ? persistedState.chainId\n : defaultChainId\n }\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n // Subscribe to changes\n /////////////////////////////////////////////////////////////////////////////////////////////////\n\n // Update default chain when connector chain changes\n if (syncConnectedChain)\n store.subscribe(\n ({ connections, current }) =>\n current ? connections.get(current)?.chainId : undefined,\n (chainId) => {\n // If chain is not configured, then don't switch over to it.\n const isChainConfigured = chains\n .getState()\n .some((x) => x.id === chainId)\n if (!isChainConfigured) return\n\n return store.setState((x) => ({\n ...x,\n chainId: chainId ?? x.chainId,\n }))\n },\n )\n\n // EIP-6963 subscribe for new wallet providers\n mipd?.subscribe((providerDetails) => {\n const currentConnectorIds = new Map()\n for (const connector of connectors.getState()) {\n currentConnectorIds.set(connector.id, true)\n }\n\n const newConnectors: Connector[] = []\n for (const providerDetail of providerDetails) {\n const connector = setup(providerDetailToConnector(providerDetail))\n if (currentConnectorIds.has(connector.id)) continue\n newConnectors.push(connector)\n }\n\n if (storage && !store.persist.hasHydrated()) return\n connectors.setState((x) => [...x, ...newConnectors], true)\n })\n\n /////////////////////////////////////////////////////////////////////////////////////////////////\n // Emitter listeners\n /////////////////////////////////////////////////////////////////////////////////////////////////\n\n function change(data: EventData) {\n store.setState((x) => {\n const connection = x.connections.get(data.uid)\n if (!connection) return x\n return {\n ...x,\n connections: new Map(x.connections).set(data.uid, {\n accounts:\n (data.accounts as readonly [Address, ...Address[]]) ??\n connection.accounts,\n chainId: data.chainId ?? connection.chainId,\n connector: connection.connector,\n }),\n }\n })\n }\n function connect(data: EventData) {\n // Disable handling if reconnecting/connecting\n if (\n store.getState().status === 'connecting' ||\n store.getState().status === 'reconnecting'\n )\n return\n\n store.setState((x) => {\n const connector = connectors.getState().find((x) => x.uid === data.uid)\n if (!connector) return x\n\n if (connector.emitter.listenerCount('connect'))\n connector.emitter.off('connect', change)\n if (!connector.emitter.listenerCount('change'))\n connector.emitter.on('change', change)\n if (!connector.emitter.listenerCount('disconnect'))\n connector.emitter.on('disconnect', disconnect)\n\n return {\n ...x,\n connections: new Map(x.connections).set(data.uid, {\n accounts: data.accounts as readonly [Address, ...Address[]],\n chainId: data.chainId,\n connector: connector,\n }),\n current: data.uid,\n status: 'connected',\n }\n })\n }\n function disconnect(data: EventData) {\n store.setState((x) => {\n const connection = x.connections.get(data.uid)\n if (connection) {\n const connector = connection.connector\n if (connector.emitter.listenerCount('change'))\n connection.connector.emitter.off('change', change)\n if (connector.emitter.listenerCount('disconnect'))\n connection.connector.emitter.off('disconnect', disconnect)\n if (!connector.emitter.listenerCount('connect'))\n connection.connector.emitter.on('connect', connect)\n }\n\n x.connections.delete(data.uid)\n\n if (x.connections.size === 0)\n return {\n ...x,\n connections: new Map(),\n current: null,\n status: 'disconnected',\n }\n\n const nextConnection = x.connections.values().next().value as Connection\n return {\n ...x,\n connections: new Map(x.connections),\n current: nextConnection.connector.uid,\n }\n })\n }\n\n return {\n get chains() {\n return chains.getState() as chains\n },\n get connectors() {\n return connectors.getState()\n },\n storage,\n\n getClient,\n get state() {\n return store.getState() as unknown as State\n },\n setState(value) {\n let newState: State\n if (typeof value === 'function') newState = value(store.getState() as any)\n else newState = value\n\n // Reset state if it got set to something not matching the base state\n const initialState = getInitialState()\n if (typeof newState !== 'object') newState = initialState\n const isCorrupt = Object.keys(initialState).some((x) => !(x in newState))\n if (isCorrupt) newState = initialState\n\n store.setState(newState, true)\n },\n subscribe(selector, listener, options) {\n return store.subscribe(\n selector as unknown as (state: State) => any,\n listener,\n options\n ? ({\n ...options,\n fireImmediately: options.emitImmediately,\n // Workaround cast since Zustand does not support `'exactOptionalPropertyTypes'`\n } as RemoveUndefined)\n : undefined,\n )\n },\n\n _internal: {\n mipd,\n store,\n ssr: Boolean(ssr),\n syncConnectedChain,\n transports: rest.transports as transports,\n chains: {\n setState(value) {\n const nextChains = (\n typeof value === 'function' ? value(chains.getState()) : value\n ) as chains\n if (nextChains.length === 0) return\n return chains.setState(nextChains, true)\n },\n subscribe(listener) {\n return chains.subscribe(listener)\n },\n },\n connectors: {\n providerDetailToConnector,\n setup,\n setState(value) {\n return connectors.setState(\n typeof value === 'function' ? value(connectors.getState()) : value,\n true,\n )\n },\n subscribe(listener) {\n return connectors.subscribe(listener)\n },\n },\n events: { change, connect, disconnect },\n },\n }\n}\n\n/////////////////////////////////////////////////////////////////////////////////////////////////\n// Types\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport type Config<\n chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],\n transports extends Record = Record<\n chains[number]['id'],\n Transport\n >,\n> = {\n readonly chains: chains\n readonly connectors: readonly Connector[]\n readonly storage: Storage | null\n\n readonly state: State\n setState(\n value: State | ((state: State) => State),\n ): void\n subscribe(\n selector: (state: State) => state,\n listener: (state: state, previousState: state) => void,\n options?:\n | {\n emitImmediately?: boolean | undefined\n equalityFn?: ((a: state, b: state) => boolean) | undefined\n }\n | undefined,\n ): () => void\n\n getClient(parameters?: {\n chainId?: chainId | chains[number]['id'] | undefined\n }): Client>\n\n /**\n * Not part of versioned API, proceed with caution.\n * @internal\n */\n _internal: Internal\n}\n\ntype Internal<\n chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],\n transports extends Record = Record<\n chains[number]['id'],\n Transport\n >,\n> = {\n readonly mipd: MipdStore | undefined\n readonly store: Mutate, [['zustand/persist', any]]>\n readonly ssr: boolean\n readonly syncConnectedChain: boolean\n readonly transports: transports\n\n chains: {\n setState(\n value:\n | readonly [Chain, ...Chain[]]\n | ((\n state: readonly [Chain, ...Chain[]],\n ) => readonly [Chain, ...Chain[]]),\n ): void\n subscribe(\n listener: (\n state: readonly [Chain, ...Chain[]],\n prevState: readonly [Chain, ...Chain[]],\n ) => void,\n ): () => void\n }\n connectors: {\n providerDetailToConnector(\n providerDetail: EIP6963ProviderDetail,\n ): CreateConnectorFn\n setup(connectorFn: CreateConnectorFn): Connector\n setState(value: Connector[] | ((state: Connector[]) => Connector[])): void\n subscribe(\n listener: (state: Connector[], prevState: Connector[]) => void,\n ): () => void\n }\n events: {\n change(data: EventData): void\n connect(data: EventData): void\n disconnect(data: EventData): void\n }\n}\n\nexport type State<\n chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],\n> = {\n chainId: chains[number]['id']\n connections: Map\n current: string | null\n status: 'connected' | 'connecting' | 'disconnected' | 'reconnecting'\n}\n\nexport type PartializedState = Compute<\n ExactPartial>\n>\n\nexport type Connection = {\n accounts: readonly [Address, ...Address[]]\n chainId: number\n connector: Connector\n}\n\nexport type Connector = ReturnType & {\n emitter: Emitter\n uid: string\n}\n\nexport type Transport<\n type extends string = string,\n rpcAttributes = Record,\n eip1193RequestFn extends EIP1193RequestFn = EIP1193RequestFn,\n> = (\n params: Parameters<\n viem_Transport\n >[0] & {\n connectors?: StoreApi | undefined\n },\n) => ReturnType>\n\ntype ClientConfig = LooseOmit<\n viem_ClientConfig,\n 'account' | 'chain' | 'key' | 'name' | 'transport' | 'type'\n>\n","import React, { useMemo } from 'react';\nimport { Redirect, Route, Switch } from 'react-router';\nimport Status from './pages/Status';\nimport Exchange from './pages/Exchange';\nimport Layout from './components/Layout';\nimport Confirmation from './pages/Confirmation';\nimport TransactionList from './pages/TransactionList';\nimport ConfigProvider from './contexts/ConfigContext/provider';\nimport ErrorProvider from './contexts/ErrorContext/provider';\nimport useUnsupportedChainError from './hooks/useUnsupportedChainError';\nimport NotFound from './pages/NotFound';\nimport { ConnectWalletModalProvider, Header } from '@airdao/ui-library';\nimport useGtag from './hooks/useGtag';\n\nimport { useAccount, useChains, WagmiProvider } from 'wagmi';\nimport { QueryClientProvider, QueryClient } from '@tanstack/react-query';\nimport { wagmiConfig } from './utils/wagmiConfig';\n\nconst queryClient = new QueryClient();\n\nconst Main = () => (\n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default Main;\n\nconst Routing = () => {\n useUnsupportedChainError();\n useGtag();\n\n const { chainId } = useAccount();\n const supportedChains = useChains();\n const isSupportedChain = useMemo(() => {\n return supportedChains.some(\n (supportedChain) => supportedChain.id === chainId\n );\n }, [supportedChains, chainId]);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken,\n} from './utils'\nimport { QueryCache } from './queryCache'\nimport { MutationCache } from './mutationCache'\nimport { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { notifyManager } from './notifyManager'\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior'\nimport type { QueryState } from './query'\nimport type {\n CancelOptions,\n DataTag,\n DefaultError,\n DefaultOptions,\n DefaultedQueryObserverOptions,\n EnsureQueryDataOptions,\n FetchInfiniteQueryOptions,\n FetchQueryOptions,\n InfiniteData,\n InvalidateOptions,\n InvalidateQueryFilters,\n MutationKey,\n MutationObserverOptions,\n MutationOptions,\n NoInfer,\n OmitKeyof,\n QueryClientConfig,\n QueryKey,\n QueryObserverOptions,\n QueryOptions,\n RefetchOptions,\n RefetchQueryFilters,\n ResetOptions,\n SetDataOptions,\n} from './types'\nimport type { MutationFilters, QueryFilters, Updater } from './utils'\n\n// TYPES\n\ninterface QueryDefaults {\n queryKey: QueryKey\n defaultOptions: OmitKeyof, 'queryKey'>\n}\n\ninterface MutationDefaults {\n mutationKey: MutationKey\n defaultOptions: MutationOptions\n}\n\n// CLASS\n\nexport class QueryClient {\n #queryCache: QueryCache\n #mutationCache: MutationCache\n #defaultOptions: DefaultOptions\n #queryDefaults: Map\n #mutationDefaults: Map\n #mountCount: number\n #unsubscribeFocus?: () => void\n #unsubscribeOnline?: () => void\n\n constructor(config: QueryClientConfig = {}) {\n this.#queryCache = config.queryCache || new QueryCache()\n this.#mutationCache = config.mutationCache || new MutationCache()\n this.#defaultOptions = config.defaultOptions || {}\n this.#queryDefaults = new Map()\n this.#mutationDefaults = new Map()\n this.#mountCount = 0\n }\n\n mount(): void {\n this.#mountCount++\n if (this.#mountCount !== 1) return\n\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations()\n this.#queryCache.onFocus()\n }\n })\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations()\n this.#queryCache.onOnline()\n }\n })\n }\n\n unmount(): void {\n this.#mountCount--\n if (this.#mountCount !== 0) return\n\n this.#unsubscribeFocus?.()\n this.#unsubscribeFocus = undefined\n\n this.#unsubscribeOnline?.()\n this.#unsubscribeOnline = undefined\n }\n\n isFetching(filters?: QueryFilters): number {\n return this.#queryCache.findAll({ ...filters, fetchStatus: 'fetching' })\n .length\n }\n\n isMutating(filters?: MutationFilters): number {\n return this.#mutationCache.findAll({ ...filters, status: 'pending' }).length\n }\n\n getQueryData<\n TQueryFnData = unknown,\n TTaggedQueryKey extends QueryKey = QueryKey,\n TInferredQueryFnData = TTaggedQueryKey extends DataTag<\n unknown,\n infer TaggedValue\n >\n ? TaggedValue\n : TQueryFnData,\n >(queryKey: TTaggedQueryKey): TInferredQueryFnData | undefined\n getQueryData(queryKey: QueryKey) {\n const options = this.defaultQueryOptions({ queryKey })\n return this.#queryCache.get(options.queryHash)?.state.data\n }\n\n ensureQueryData<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: EnsureQueryDataOptions,\n ): Promise {\n const cachedData = this.getQueryData(options.queryKey)\n\n if (cachedData === undefined) return this.fetchQuery(options)\n else {\n const defaultedOptions = this.defaultQueryOptions(options)\n const query = this.#queryCache.build(this, defaultedOptions)\n\n if (\n options.revalidateIfStale &&\n query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))\n ) {\n void this.prefetchQuery(defaultedOptions)\n }\n\n return Promise.resolve(cachedData)\n }\n }\n\n getQueriesData(\n filters: QueryFilters,\n ): Array<[QueryKey, TQueryFnData | undefined]> {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data as TQueryFnData | undefined\n return [queryKey, data]\n })\n }\n\n setQueryData<\n TQueryFnData = unknown,\n TTaggedQueryKey extends QueryKey = QueryKey,\n TInferredQueryFnData = TTaggedQueryKey extends DataTag<\n unknown,\n infer TaggedValue\n >\n ? TaggedValue\n : TQueryFnData,\n >(\n queryKey: TTaggedQueryKey,\n updater: Updater<\n NoInfer | undefined,\n NoInfer | undefined\n >,\n options?: SetDataOptions,\n ): TInferredQueryFnData | undefined {\n const defaultedOptions = this.defaultQueryOptions<\n any,\n any,\n unknown,\n any,\n QueryKey\n >({ queryKey })\n\n const query = this.#queryCache.get(\n defaultedOptions.queryHash,\n )\n const prevData = query?.state.data\n const data = functionalUpdate(updater, prevData)\n\n if (data === undefined) {\n return undefined\n }\n\n return this.#queryCache\n .build(this, defaultedOptions)\n .setData(data, { ...options, manual: true })\n }\n\n setQueriesData(\n filters: QueryFilters,\n updater: Updater,\n options?: SetDataOptions,\n ): Array<[QueryKey, TQueryFnData | undefined]> {\n return notifyManager.batch(() =>\n this.#queryCache\n .findAll(filters)\n .map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options),\n ]),\n )\n }\n\n getQueryState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TTaggedQueryKey extends QueryKey = QueryKey,\n TInferredQueryFnData = TTaggedQueryKey extends DataTag<\n unknown,\n infer TaggedValue\n >\n ? TaggedValue\n : TQueryFnData,\n >(\n queryKey: TTaggedQueryKey,\n ): QueryState | undefined {\n const options = this.defaultQueryOptions({ queryKey })\n return this.#queryCache.get(options.queryHash)\n ?.state\n }\n\n removeQueries(filters?: QueryFilters): void {\n const queryCache = this.#queryCache\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query)\n })\n })\n }\n\n resetQueries(filters?: QueryFilters, options?: ResetOptions): Promise {\n const queryCache = this.#queryCache\n\n const refetchFilters: RefetchQueryFilters = {\n type: 'active',\n ...filters,\n }\n\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset()\n })\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n cancelQueries(\n filters: QueryFilters = {},\n cancelOptions: CancelOptions = {},\n ): Promise {\n const defaultedCancelOptions = { revert: true, ...cancelOptions }\n\n const promises = notifyManager.batch(() =>\n this.#queryCache\n .findAll(filters)\n .map((query) => query.cancel(defaultedCancelOptions)),\n )\n\n return Promise.all(promises).then(noop).catch(noop)\n }\n\n invalidateQueries(\n filters: InvalidateQueryFilters = {},\n options: InvalidateOptions = {},\n ): Promise {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate()\n })\n\n if (filters.refetchType === 'none') {\n return Promise.resolve()\n }\n const refetchFilters: RefetchQueryFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? 'active',\n }\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n refetchQueries(\n filters: RefetchQueryFilters = {},\n options?: RefetchOptions,\n ): Promise {\n const fetchOptions = {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true,\n }\n const promises = notifyManager.batch(() =>\n this.#queryCache\n .findAll(filters)\n .filter((query) => !query.isDisabled())\n .map((query) => {\n let promise = query.fetch(undefined, fetchOptions)\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop)\n }\n return query.state.fetchStatus === 'paused'\n ? Promise.resolve()\n : promise\n }),\n )\n\n return Promise.all(promises).then(noop)\n }\n\n fetchQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = never,\n >(\n options: FetchQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n ): Promise {\n const defaultedOptions = this.defaultQueryOptions(options)\n\n // https://github.com/tannerlinsley/react-query/issues/652\n if (defaultedOptions.retry === undefined) {\n defaultedOptions.retry = false\n }\n\n const query = this.#queryCache.build(this, defaultedOptions)\n\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query),\n )\n ? query.fetch(defaultedOptions)\n : Promise.resolve(query.state.data as TData)\n }\n\n prefetchQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchQueryOptions,\n ): Promise {\n return this.fetchQuery(options).then(noop).catch(noop)\n }\n\n fetchInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n >(\n options: FetchInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n ): Promise> {\n options.behavior = infiniteQueryBehavior<\n TQueryFnData,\n TError,\n TData,\n TPageParam\n >(options.pages)\n return this.fetchQuery(options)\n }\n\n prefetchInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n >(\n options: FetchInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n ): Promise {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop)\n }\n\n resumePausedMutations(): Promise {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations()\n }\n return Promise.resolve()\n }\n\n getQueryCache(): QueryCache {\n return this.#queryCache\n }\n\n getMutationCache(): MutationCache {\n return this.#mutationCache\n }\n\n getDefaultOptions(): DefaultOptions {\n return this.#defaultOptions\n }\n\n setDefaultOptions(options: DefaultOptions): void {\n this.#defaultOptions = options\n }\n\n setQueryDefaults(\n queryKey: QueryKey,\n options: Partial<\n OmitKeyof, 'queryKey'>\n >,\n ): void {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options,\n })\n }\n\n getQueryDefaults(\n queryKey: QueryKey,\n ): OmitKeyof, 'queryKey'> {\n const defaults = [...this.#queryDefaults.values()]\n\n let result: OmitKeyof<\n QueryObserverOptions,\n 'queryKey'\n > = {}\n\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n result = { ...result, ...queryDefault.defaultOptions }\n }\n })\n return result\n }\n\n setMutationDefaults(\n mutationKey: MutationKey,\n options: OmitKeyof<\n MutationObserverOptions,\n 'mutationKey'\n >,\n ): void {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options,\n })\n }\n\n getMutationDefaults(\n mutationKey: MutationKey,\n ): MutationObserverOptions {\n const defaults = [...this.#mutationDefaults.values()]\n\n let result: MutationObserverOptions = {}\n\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n result = { ...result, ...queryDefault.defaultOptions }\n }\n })\n\n return result\n }\n\n defaultQueryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = never,\n >(\n options:\n | QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey,\n TPageParam\n >\n | DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n > {\n if (options._defaulted) {\n return options as DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n }\n\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true,\n }\n\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions,\n )\n }\n\n // dependent default values\n if (defaultedOptions.refetchOnReconnect === undefined) {\n defaultedOptions.refetchOnReconnect =\n defaultedOptions.networkMode !== 'always'\n }\n if (defaultedOptions.throwOnError === undefined) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense\n }\n\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = 'offlineFirst'\n }\n\n if (\n defaultedOptions.enabled !== true &&\n defaultedOptions.queryFn === skipToken\n ) {\n defaultedOptions.enabled = false\n }\n\n return defaultedOptions as DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n }\n\n defaultMutationOptions>(\n options?: T,\n ): T {\n if (options?._defaulted) {\n return options\n }\n return {\n ...this.#defaultOptions.mutations,\n ...(options?.mutationKey &&\n this.getMutationDefaults(options.mutationKey)),\n ...options,\n _defaulted: true,\n } as T\n }\n\n clear(): void {\n this.#queryCache.clear()\n this.#mutationCache.clear()\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { BrowserRouter } from 'react-router-dom';\nimport Main from './Main';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n \n
\n \n);\n"],"names":["ALPHABET","ALPHABET_MAP","z","x","charAt","undefined","TypeError","polymodStep","pre","b","prefixChk","prefix","chk","i","length","c","charCodeAt","v","__decode","str","LIMIT","lowered","toLowerCase","uppered","toUpperCase","split","lastIndexOf","slice","wordChars","words","push","convert","data","inBits","outBits","pad","value","bits","maxV","result","module","exports","decodeUnsafe","res","apply","arguments","decode","Error","encode","toWordsUnsafe","bytes","Array","isArray","toWords","fromWordsUnsafe","fromWords","assert","val","msg","inherits","ctor","superCtor","super_","TempCtor","prototype","constructor","BN","number","base","endian","isBN","this","negative","red","_init","Buffer","wordSize","window","require","e","parseHex4Bits","string","index","parseHexByte","lowerBound","r","parseBase","start","end","mul","len","Math","min","move","dest","src","num","max","left","right","cmp","_initNumber","_initArray","toString","replace","_parseHex","_parseBase","toArray","ceil","j","w","off","_strip","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","copy","_move","clone","_expand","size","_normSign","Symbol","for","inspect","zeros","groupSizes","groupBases","padding","out","carry","groupSize","groupBase","isZero","modrn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","smallMulTo","self","a","lo","k","ncarry","rword","maxJ","ArrayType","byteLength","reqLength","allocUnsafe","allocate","_toArrayLikeLE","position","shift","_toArrayLikeBE","clz32","_countBits","t","_zeroBits","bitLength","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","add","sub","comb10MulTo","mid","o","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","FFTM","y","mulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","p","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","n","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","mulp","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","isNegNum","muln","sqr","isqr","toBitArray","q","iushln","carryMask","newCarry","ishln","iushrn","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","andln","acc","modn","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","name","tmp","_tmp","K256","call","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","strip","input","output","outLen","prev","next","mod3","one","nOne","lpow","inv","wnd","current","currentLen","mont","u","has","Object","hasOwnProperty","Events","EE","fn","context","once","addListener","emitter","event","listener","evt","_events","_eventsCount","clearEvent","EventEmitter","create","__proto__","eventNames","events","names","getOwnPropertySymbols","concat","listeners","handlers","ee","listenerCount","emit","args","removeListener","on","removeAllListeners","prefixed","hash","utils","common","sha","ripemd","hmac","sha1","sha256","sha224","sha384","sha512","ripemd160","BlockHash","pending","pendingTotal","blockSize","outSize","hmacStrength","padLength","_delta8","_delta32","update","enc","join32","_update","digest","_pad","_digest","Hmac","key","Hash","inner","outer","rotl32","sum32","sum32_3","sum32_4","RIPEMD160","f","K","Kh","E","Ah","Bh","Ch","Dh","Eh","T","rh","sh","toHex32","split32","shaCommon","sum32_5","ft_1","sha1_K","SHA1","W","d","SHA256","SHA224","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","T1","T2","SHA512","SHA384","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","bl","ch","cl","dh","dl","eh","el","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","rotr32","p32","isSurrogatePair","htonl","zero2","zero8","parseInt","toHex","buf","pos","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","getOwnPropertyNames","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","targetStatics","sourceStatics","descriptor","enumerable","writable","configurable","INPUT_ERROR","WINDOW","root","JS_SHA3_NO_WINDOW","WEB_WORKER","JS_SHA3_NO_NODE_JS","process","versions","node","global","COMMON_JS","JS_SHA3_NO_COMMON_JS","AMD","define","ARRAY_BUFFER","JS_SHA3_NO_ARRAY_BUFFER","ArrayBuffer","HEX_CHARS","CSHAKE_PADDING","SHIFT","RC","BITS","SHAKE_BITS","OUTPUT_TYPES","CSHAKE_BYTEPAD","obj","JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW","isView","buffer","createOutputMethod","outputType","message","Keccak","createShakeOutputMethod","outputBits","createCshakeOutputMethod","methods","createKmacOutputMethod","createOutputMethods","method","createMethod","algorithms","bytepad","Kmac","methodNames","algorithm","methodName","newMethodName","blocks","reset","finalized","block","blockCount","byteCount","outputBlocks","extraBytes","notString","Uint8Array","code","lastByteIndex","unshift","encodeString","strs","paddingBytes","finalize","hex","arrayBuffer","array","Uint32Array","offset","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","b10","b11","b12","b13","b14","b15","b16","b17","b18","b19","b20","b21","b22","b23","b24","b25","b26","b27","b28","b29","b30","b31","b32","b33","b34","b35","b36","b37","b38","b39","b40","b41","b42","b43","b44","b45","b46","b47","b48","b49","equal","propIsEnumerable","propertyIsEnumerable","assign","test1","String","test2","fromCharCode","map","join","test3","forEach","letter","err","shouldUseNative","target","source","from","symbols","to","toObject","isarray","pathToRegexp","parse","compile","options","tokensToFunction","tokensToRegExp","PATH_REGEXP","RegExp","tokens","path","defaultDelimiter","delimiter","exec","escaped","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","matches","flags","opts","pretty","encodeURIComponent","token","segment","JSON","stringify","test","attachKeys","sensitive","strict","route","endsWithDelimiter","groups","match","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","arr","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","bool","func","object","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","ca","da","Set","ea","fa","ha","ia","document","createElement","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","isNaN","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","Ma","stack","trim","Na","Oa","prepareStackTrace","set","Reflect","construct","includes","Pa","tag","Qa","$$typeof","_context","_payload","Ra","Sa","Ta","nodeName","Va","_valueTracker","get","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","MSApp","execUnsafeLocalFunction","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","sb","style","indexOf","setProperty","substring","tb","menuitem","area","br","col","embed","hr","img","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Jd","clipboardData","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Rd","locale","which","Td","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Zd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","$d","ae","be","documentMode","ce","de","fe","ge","he","le","color","date","datetime","email","month","password","range","search","tel","text","time","url","week","me","ne","oe","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","of","pf","qf","rf","random","sf","bind","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","G","Vf","H","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","ref","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","implementation","Sg","Tg","done","Ug","Vg","Wg","Xg","Yg","Zg","$g","_currentValue","childLanes","dependencies","firstContext","lanes","memoizedValue","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","lh","mh","eventTime","lane","payload","callback","nh","oh","qh","th","uh","vh","wh","tagName","L","revealOrder","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","M","O","Ih","Jh","Lh","P","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","Q","di","lastEffect","stores","ei","fi","gi","ii","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","R","Bi","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","state","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","Ki","Li","console","error","Mi","WeakMap","Ni","Oi","Pi","Qi","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","xj","Dj","S","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","createTextNode","Gj","Hj","Ij","Jj","U","Kj","WeakSet","V","Lj","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","insertBefore","_reactRootContainer","Wj","X","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","mutableSourceEagerHydrationData","cache","pendingSuspenseBoundaries","il","yj","Zk","kl","reportError","ll","_internalRoot","ml","nl","ol","pl","rl","ql","unmount","unstable_scheduleHydration","splice","querySelectorAll","form","sl","usingClientEntryPoint","tl","findFiberByHostInstance","bundleType","version","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","hasElementType","Element","hasMap","hasSet","hasArrayBuffer","it","entries","warn","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","ex","React","React__default","_defineProperty","canUseDOM","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","subClass","superClass","peek","rewind","recordedState","_proto","PureComponent","getDisplayName","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","default","Children","count","only","Component","act","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","inst","useSyncExternalStoreWithSelector","hasValue","execTyped","regex","bytesRegex","integerRegex","isTupleRegex","parseAccount","account","address","errorSignatureRegex","eventSignatureRegex","functionSignatureRegex","structSignatureRegex","isStructSignature","signature","execStructSignature","constructorSignatureRegex","fallbackSignatureRegex","receiveSignatureRegex","eventModifiers","functionModifiers","BaseError","shortMessage","details","cause","docsPath","super","metaMessages","UnknownTypeError","_ref2","UnknownSolidityTypeError","_ref3","InvalidParameterError","SolidityProtectedKeywordError","_ref4","InvalidModifierError","_ref5","InvalidFunctionModifierError","_ref6","InvalidAbiTypeParameterError","_ref7","abiParameter","InvalidSignatureError","_ref","UnknownSignatureError","InvalidStructSignatureError","CircularReferenceError","InvalidParenthesisError","depth","parameterCache","indexed","parseSignature","structs","isFunctionSignature","execFunctionSignature","inputParams","splitParameters","parameters","inputs","inputLength","parseAbiParameter","modifiers","outputs","returns","outputParams","outputLength","stateMutability","isEventSignature","execEventSignature","params","abiParameters","isErrorSignature","execErrorSignature","isConstructorSignature","execConstructorSignature","isFallbackSignature","isReceiveSignature","abiParameterWithoutTupleRegex","abiParameterWithTupleRegex","dynamicIntegerRegex","parameterCacheKey","getParameterCacheKey","isTuple","protectedKeywordsRegex","isSolidityKeyword","components","components_","isSolidityType","isValidDataLocation","typeWithoutTupleRegex","resolveStructs","ancestors","parseAbi","signatures","shallowStructs","signaturesLength","properties","propertiesLength","trimmed","resolvedStructs","entriesLength","parseStructs","abi","aggregate3Signature","deploylessCallViaBytecodeBytecode","deploylessCallViaFactoryBytecode","encodeDeployData","bytecode","description","find","AbiConstructorNotFoundError","AbiConstructorParamsNotFoundError","encodeAbiParameters","concatHex","ExecutionRevertedError","reason","FeeCapTooHighError","maxFeePerGas","formatGwei","FeeCapTooLowError","NonceTooHighError","nonce","NonceTooLowError","NonceMaxValueError","InsufficientFundsError","IntrinsicGasTooHighError","gas","IntrinsicGasTooLowError","TransactionTypeNotSupportedError","TipAboveFeeCapError","maxPriorityFeePerGas","UnknownNodeError","getCallError","executionRevertedError","walk","nodeMessage","getNodeError","CallExecutionError","extract","value_","format","extract_","formatted","rpcTransactionType","legacy","eip2930","eip1559","eip4844","eip7702","formatTransactionRequest","request","rpcRequest","authorizationList","authorization","contractAddress","chainId","numberToHex","yParity","accessList","blobVersionedHashes","blobs","bytesToHex","gasPrice","maxFeePerBlobGas","serializeStateMapping","stateMapping","reduce","slot","InvalidBytesLengthError","targetSize","serializeAccountStateOverride","balance","stateDiff","rpcAccountStateOverride","StateAssignmentConflictError","serializeStateOverride","rpcStateOverride","accountState","isAddress","InvalidAddressError","AccountStateConflictError","maxUint256","async","client","account_","batch","Boolean","multicall","blockNumber","blockTag","data_","factory","factoryData","stateOverride","rest","deploylessCallViaBytecode","deploylessCallViaFactory","deploylessCall","toDeploylessCallViaBytecodeData","toDeploylessCallViaFactoryData","FeeConflictError","assertRequest","chainFormat","chain","formatters","transactionRequest","request_","startsWith","values","filter","shouldPerformMulticall","batchSize","wait","multicallAddress","multicallAddress_","ClientChainNotConfiguredError","getChainContractAddress","contract","blockNumberHex","schedule","createBatchScheduler","uid","shouldSplitBatch","calls","requests","allowFailure","callData","calldata","encodeFunctionData","multicall3Abi","functionName","decodeFunctionResult","returnData","success","RawContractError","scheduleMulticall","ChainDoesNotSupportContract","response","getRevertErrorData","offchainLookup","offchainLookupSignature","ccipRead","CounterfactualDeploymentFailedError","universalResolverErrors","panicReasons","solidityError","solidityPanic","etherUnits","gwei","wei","gweiUnits","ether","weiUnits","AbiDecodingDataSizeTooSmallError","formatAbiParams","includeName","AbiDecodingZeroDataError","AbiEncodingArrayLengthMismatchError","expectedLength","givenLength","AbiEncodingBytesSizeMismatchError","expectedSize","AbiEncodingLengthMismatchError","AbiErrorSignatureNotFoundError","_ref9","AbiFunctionNotFoundError","AbiFunctionOutputsNotFoundError","_ref12","AbiItemAmbiguityError","formatAbiItem","abiItem","InvalidAbiEncodingTypeError","_ref17","InvalidAbiDecodingTypeError","_ref18","InvalidArrayError","InvalidDefinitionTypeError","errorConfig","getDocsUrl","docsBaseUrl","docsSlug","docsUrl","blockCreated","formatAbiItemWithArgs","includeFunctionName","prettyArgs","prettyPrint","formatEther","nativeCurrency","prettyStateOverride","ContractFunctionExecutionError","sender","getAbiItem","formattedArgs","functionWithParams","getContractAddress","function","ContractFunctionRevertedError","decodedData","decodeErrorResult","errorName","errorArgs","firstArg","errorWithParams","ContractFunctionZeroDataError","SliceOffsetOutOfBoundsError","SizeExceedsPaddingSizeError","IntegerOutOfRangeError","signed","InvalidBytesBooleanError","SizeOverflowError","givenSize","maxSize","HttpRequestError","headers","status","getUrl","RpcRequestError","TimeoutError","prettyStateMapping","maxLength","padEnd","NegativeOffsetError","PositionOutOfBoundsError","RecursiveReadLimitExceededError","limit","staticCursor","dataView","DataView","positionReadCount","recursiveReadCount","recursiveReadLimit","Number","POSITIVE_INFINITY","assertReadLimit","assertPosition","decrementPosition","getReadCount","incrementPosition","inspectByte","position_","inspectBytes","subarray","inspectUint8","inspectUint16","getUint16","inspectUint24","getUint8","inspectUint32","getUint32","pushByte","byte","pushBytes","pushUint8","pushUint16","setUint16","pushUint24","setUint8","pushUint32","setUint32","readByte","_touch","readBytes","readUint8","readUint16","readUint24","readUint32","remaining","setPosition","oldPosition","bytesToBigInt","assertSize","hexToBigInt","bytesToBool","bytes_","bytesToNumber","hexToNumber","bytesToString","dir","TextDecoder","decodeAbiParameters","hexToBytes","cursor","byteOffset","createCursor","consumed","consumed_","decodeParameter","staticPosition","arrayComponents","getArrayComponents","sizeOfOffset","startOfData","sizeOfLength","dynamicChild","hasDynamicChild","decodeArray","hasUnnamedChild","some","decodeTuple","checksumAddress","sliceBytes","decodeAddress","decodeBool","decodeBytes","decodeNumber","decodeString","endsWith","toFunctionSelector","item","preparedParams","prepareParam","prepareParams","encodeParams","dynamic","preparedParam","encoded","encodeArray","param_","_ref8","encodeTuple","padHex","encodeAddress","boolToHex","encodeBool","encodeNumber","paramSize","bytesSize","encodeBytes","hexValue","stringToHex","partsLength","staticSize","staticParams","dynamicParams","dynamicSize","prepareEncodeFunctionData","formatAbiParam","toEventSelector","toSignatureHash","isSelector","isHex","abiItems","matchedAbiItem","every","arg","isArgOfType","ambiguousTypes","getAmbiguousTypes","argType","abiParameterType","sourceParameters","targetParameters","parameterIndex","sourceParameter","targetParameter","types","checksumAddressCache","LruMap","address_","hexAddress","keccak256","stringToBytes","getAddress","addressRegex","isAddressCache","cacheKey","contracts","concatBytes","hexOrBytes","paddedBytes","padBytes","hex_","assertStartOffset","assertEndOffset","sliceHex","sliceLength","size_","BigInt","padStart","hexToString","encoder","TextEncoder","toBytes","numberToBytes","boolToBytes","charCodeMap","zero","nine","charCodeToBase16","hexString","nibbleLeft","nibbleRight","hexes","_v","maxValue","MAX_SAFE_INTEGER","minValue","suffix","isSafeInteger","isBytes","_len","lengths","_key","exists","checkFinished","destroyed","finished","outputLen","U32_MASK64","_32n","fromBig","lst","Al","rotlSH","rotlSL","rotlBH","rotlBL","isLE","byteSwap","byteSwap32","utf8ToBytes","abytes","_cloneInto","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_0n","_1n","_2n","_7n","_256n","_0x71n","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","rotlL","blockLen","enableXOF","rounds","posOut","state32","keccak","idx1","idx0","B0","B1","Tl","curH","curL","fill","keccakP","take","finish","writeInto","bufferOut","xofInto","xof","digestInto","gen","hashCons","hashC","wrapConstructor","keccak_256","to_","tupleRegex","formatAbiParameter","formatAbiParameters","toSignature","def","active","level","valid","normalizeSignature","sig","firstKey","schedulerCache","sort","scheduler","getScheduler","flush","pendingPromise","reject","setScheduler","promise","replacer","space","unit","formatUnits","decimals","integer","fraction","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","amdO","getter","__esModule","definition","chunkId","all","promises","miniCssF","globalThis","Function","prop","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","onerror","onload","doneFns","head","toStringTag","nmd","paths","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","_setPrototypeOf","setPrototypeOf","_inheritsLoose","isAbsolute","pathname","spliceOne","list","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","part","valueEqual","aValue","bValue","isProduction","invariant","condition","provided","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","_extends","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","locationsAreEqual$$1","allPaths","baseTag","querySelector","pushHashPath","nextPaths","clamp","upperBound","MAX_SIGNED_31_BIT_INT","commonjsGlobal","calculateChangedBits","contextProp","getUniqueId","_React$Component","handler","newValue","changedBits","createEventEmitter","_this","nextProps","oldValue","objectIs","_Provider$childContex","_React$Component2","observedBits","_this2","onUpdate","_Consumer$contextType","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","Lifecycle","onMount","prevProps","onUnmount","cacheLimit","cacheCount","generatePath","generator","compilePath","Redirect","computedMatch","_ref$push","locationsAreEqual","cache$1","cacheLimit$1","cacheCount$1","matchPath","_options","_options$exact","_options$strict","_options$sensitive","matched","pathCache","regexp","compilePath$1","_compilePath","Route","context$1","_this$props","isEmptyChildren","createURL","staticHandler","noop","Switch","useHistory","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","_onClick","_objectWithoutPropertiesLoose","isModifiedEvent","Link","_ref2$component","__RouterContext","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","ariaCurrent","_ref$ariaCurrent","activeClassName","_ref$activeClassName","activeStyle","classNameProp","className","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","_typeof","createClass","defineProperties","Constructor","protoProps","staticProps","objectWithoutProperties","encodeSpecialCharacters","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","objectAssign","property","rafPolyfill","clock","currentTime","cafPolyfill","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","_helmetCallback","commitTagChanges","newState","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","title","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","elementTag","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","attribute","indexToSave","_i","tags","headElement","tagNodes","indexToDelete","newElement","styleSheet","cssText","existingTag","isEqualNode","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","generateTitleAsReactComponent","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","content","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","_ref$title","noscript","HelmetExport","_class","_temp","HelmetWrapper","classCallCheck","ReferenceError","possibleConstructorReturn","isEqual","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_child$props","initAttributes","convertReactPropstoHtmlAttributes","defaultTitle","defer","titleTemplate","mappedState","Helmet","withSideEffect","renderStatic","deepEqual","getAccount","config","connection","connections","addresses","accounts","chains","connector","isConnected","isConnecting","isDisconnected","isReconnecting","initialState","reconnectOnMount","_internal","store","hasHydrated","ssr","rehydrate","mipdConnectors","mipd","getProviders","connectors","providerDetailToConnector","setup","connector_","recentConnectorId","storage","getItem","scores","sorted","connected","providers","provider","getProvider","isAuthorized","connect","change","disconnect","reconnect","Hydrate","WagmiContext","WagmiProvider","__classPrivateFieldGet","_BaseError_instances","_BaseError_walk","CoreError","WagmiProviderNotFoundError","useConfig","isPlainObject","useAccount","subscribe","getServerSnapshot","trackedKeys","trackedResult","useSyncExternalStoreWithTracked","onChange","equalityFn","aConnector","aRest","bConnector","bRest","watchAccount","notifyManager","transactions","notifyFn","batchNotifyFn","scheduleFn","originalQueue","batchCalls","setNotifyFunction","setBatchNotifyFunction","createNotifyManager","isServer","isValidTimeout","timeUntilStale","updatedAt","staleTime","resolveStaleTime","query","resolveEnabled","enabled","matchQuery","filters","fetchStatus","predicate","queryKey","stale","queryHash","hashQueryKeyByOptions","partialMatchKey","isStale","matchMutation","mutation","mutationKey","hashKey","queryKeyHashFn","replaceEqualDeep","isPlainArray","aItems","aSize","bItems","bSize","equalItems","shallowEqualObjects","hasObjectPrototype","prot","replaceData","prevData","structuralSharing","addToEnd","items","newItems","addToStart","skipToken","ensureQueryFn","fetchOptions","queryFn","initialPromise","Removable","clearGcTimeout","scheduleGc","gcTime","optionalRemove","updateGcTime","newGcTime","Subscribable","onSubscribe","onUnsubscribe","hasListeners","focusManager","onFocus","setEventListener","focused","setFocused","isFocused","visibilityState","onlineManager","onOnline","onlineListener","offlineListener","setOnline","online","isOnline","defaultRetryDelay","failureCount","canFetch","networkMode","CancelledError","revert","silent","isCancelledError","createRetryer","continueFn","promiseResolve","promiseReject","isRetryCancelled","isResolved","outerResolve","outerReject","canContinue","canRun","canStart","onSuccess","pause","continueResolve","onPause","onContinue","run","promiseOrValue","retry","retryDelay","shouldRetry","onFail","cancel","cancelOptions","abort","continue","cancelRetry","continueRetry","Mutation","mutationId","mutationCache","failureReason","isPaused","variables","submittedAt","setOptions","addObserver","observer","notify","removeObserver","remove","execute","mutationFn","restored","onMutate","onSettled","runNext","reducer","onMutationUpdate","MutationObserver","bindMethods","mutate","prevOptions","defaultMutationOptions","getMutationCache","getCurrentResult","build","isPending","isSuccess","isError","isIdle","QueryClientContext","useQueryClient","queryClient","QueryClientProvider","mount","shouldThrowError","throwError","useMutation","onStoreChange","mutateOptions","throwOnError","mutateAsync","ChainNotConfiguredError","ConnectorAlreadyConnectedError","ConnectorNotConnectedError","ConnectorAccountNotFoundError","ConnectorChainMismatchError","connectionChainId","connectorChainId","ConnectorUnavailableReconnectingError","connectMutationOptions","setItem","previousConnectors","getConnectors","useConnectors","prevConnectors","watchConnectors","useConnect","mutationOptions","previousStatus","connectAsync","createClient","cacheTime","pollingInterval","transport","extendFn","combined","RpcError","ProviderRpcError","ParseRpcError","InvalidRequestRpcError","MethodNotFoundRpcError","InvalidParamsRpcError","InternalRpcError","InvalidInputRpcError","ResourceNotFoundRpcError","ResourceUnavailableRpcError","TransactionRejectedRpcError","MethodNotSupportedRpcError","LimitExceededRpcError","JsonRpcVersionUnsupportedError","UserRejectedRequestError","UnauthorizedProviderError","UnsupportedProviderMethodError","ProviderDisconnectedError","ChainDisconnectedError","SwitchChainError","UnknownRpcError","promiseCache","withRetry","delay_","retryCount","attemptRetry","buildRequest","overrideOptions","dedupe","finally","withDedupe","err_","retryAfter","createTransport","uid_","getConnectorClient","getAccounts","getChainId","getClient","defaultRetryCount","custom","hashFn","filterQueryOptions","_defaulted","behavior","initialData","initialDataUpdatedAt","maxPages","getPreviousPageParam","getNextPageParam","initialPageParam","_optimisticResults","notifyOnChangeProps","placeholderData","refetchInterval","refetchIntervalInBackground","refetchOnMount","refetchOnReconnect","refetchOnWindowFocus","retryOnMount","select","suspense","getConnectorClientQueryKey","connectorUid","Query","defaultOptions","observers","hasData","dataUpdateCount","dataUpdatedAt","errorUpdateCount","errorUpdatedAt","fetchFailureCount","fetchFailureReason","fetchMeta","isInvalidated","getDefaultState","setData","newData","manual","setStateOptions","getObserversCount","isStaleByTime","shouldFetchOnWindowFocus","refetch","cancelRefetch","shouldFetchOnReconnect","invalidate","fetch","abortController","AbortController","addSignalProperty","signal","fetchFn","queryFnContext","persister","onFetch","isFetchingOptimistic","fetchState","onQueryUpdate","QueryObserver","shouldFetchOnMount","updateResult","shouldFetchOn","notifyOptions","prevQuery","defaultQueryOptions","getQueryCache","mounted","shouldFetchOptionally","nextRefetchInterval","getOptimisticResult","createResult","optimisticResult","shouldAssignObserverCurrentProperties","trackResult","onPropTracked","trackProp","getCurrentQuery","fetchOptimistic","defaultedOptions","nextInterval","setInterval","clearInterval","prevResult","prevResultState","prevResultOptions","queryInitialState","isPlaceholderData","fetchOnMount","fetchOptionally","selectError","isFetching","isLoading","isInitialLoading","isFetched","isFetchedAfterMount","isRefetching","isLoadingError","isRefetchError","nextResult","defaultNotifyOptions","shouldNotifyListeners","notifyOnChangePropsValue","includedProps","typedKey","shouldLoadOnMount","field","createValue","isReset","clearReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","IsRestoringContext","useIsRestoring","ensurePreventErrorBoundaryRetry","errorResetBoundary","useClearResetErrorBoundary","getHasError","ensureSuspenseTimers","shouldSuspend","useQuery","Observer","isRestoring","getDefaultOptions","queries","_experimental_beforeQuery","unsubscribe","_experimental_afterQuery","useBaseQuery","tanstack_useQuery","useChainId","watchChainId","useConnectorClient","activeConnector","scopeKey","_s","getConnectorClientQueryOptions","addressRef","previousAddress","removeQueries","invalidateQueries","ProviderNotFoundError","SwitchChainNotSupportedError","switchChainMutationOptions","addEthereumChainParameter","switchChain","previousChains","getChains","useChains","prevChains","watchChains","useSwitchChain","switchChainAsync","disconnectMutationOptions","nextConnection","previousConnections","getConnections","useConnections","watchConnections","getBalance","getAction","actionFn","action_implicit","action_explicit","getUnit","EXECUTION_REVERTED_ERROR_CODE","getContractError","readContract","batchSize_","chunkedCalls","currentChunk","currentChunkSize","aggregate3Results","allSettled","results","aggregate3Result","readContracts","contractsByChainId","viem_multicall","multicallResults","flat","resultIndexes","flatMap","viem_readContract","getTokenBalance","balanceAddress","symbolType","tokenAddress","getBalanceQueryOptions","viem_getBalance","getBalanceQueryKey","_permanentCensorErrors","_censorErrors","LogLevels","debug","info","warning","_logLevel","_globalLogger","_normalizeError","missing","normalize","_checkNormalize","LogLevel","ErrorCode","HEX","Logger","_log","logLevel","throwArgumentError","levels","DEBUG","_len2","_key2","INFO","_len3","_key3","WARNING","makeError","errors","UNKNOWN_ERROR","messageDetails","NUMERIC_FAULT","fault","CALL_EXCEPTION","INSUFFICIENT_FUNDS","MISSING_NEW","NONCE_EXPIRED","REPLACEMENT_UNDERPRICED","TRANSACTION_REPLACED","UNPREDICTABLE_GAS_LIMIT","INVALID_ARGUMENT","argument","assertArgument","checkNormalize","UNSUPPORTED_OPERATION","operation","checkSafeUint53","checkArgumentCount","expectedCount","MISSING_ARGUMENT","UNEXPECTED_ARGUMENT","checkNew","kind","checkAbstract","globalLogger","setCensorship","censorship","permanent","setLogLevel","logger","defineReadOnly","getStatic","resolveProperties","accum","shallowCopy","opaque","boolean","_isFrozen","isFrozen","_deepCopy","freeze","deepCopy","allowedTransactionKeys","forwardErrors","Signer","_checkProvider","getTransactionCount","estimateGas","transaction","tx","checkTransaction","sendTransaction","populateTransaction","signedTx","signTransaction","getNetwork","getGasPrice","getFeeData","resolveName","__awaiter","hasEip1559","feeData","gasLimit","isSigner","_isSigner","VoidSigner","_fail","signMessage","_signTypedData","domain","isHexable","toHexString","addSlice","isBytesLike","isHexString","isInteger","arrayify","allowMissingPrefix","hexPad","objects","stripZeros","HexCharacters","hexlify","hexDataLength","hexDataSlice","endOffset","hexConcat","hexStripZeros","hexZeroPad","splitSignature","_vs","recoveryParam","yParityAndS","compact","vs","zeroPad","recId","_BN","_constructorGuard","MAX_SAFE","_warnedToStringRadix","BigNumber","constructorGuard","_hex","_isBigNumber","toBigNumber","toBN","other","throwFault","isNegative","shr","toBigInt","anyValue","isBigNumber","sha3","arrayifyInteger","unarrayifyInteger","_encode","_decodeChildren","childOffset","decoded","_decode","BUFFER_OVERRUN","lengthLength","getChecksumAddress","chars","expanded","hashed","ibanLookup","safeDigits","log10","LN10","ibanChecksum","checksum","UnicodeNormalizationForm","Utf8ErrorReason","ignoreFunc","badCodepoint","BAD_PREFIX","UNEXPECTED_CONTINUE","OVERRUN","Utf8ErrorFuncs","ignore","OVERLONG","getUtf8CodePoints","extraLength","overlongMask","nextChar","MISSING_CONTINUE","OUT_OF_RANGE","UTF16_SURROGATE","toUtf8Bytes","pair","toUtf8String","codePoint","NegativeOne","Zero","One","MaxUint256","hexTrue","hexFalse","domainFieldTypes","verifyingContract","salt","domainFieldNames","checkString","domainChecks","getBaseEncoder","boundsUpper","boundsLower","padOffset","hexPadRight","encodeType","fields","TypedDataEncoder","links","parents","subtypes","uniqueNames","baseType","primaryTypes","checkCircular","found","subtype","primaryType","st","_types","getEncoder","_encoderCache","_getEncoder","subEncoder","encodedType","encodeData","hashStruct","_visit","visit","getPrimaryType","hashDomain","domainFields","EIP712Domain","resolveNames","ensCache","getPayload","domainValues","domainTypes","typesWithDomain","minimalisticAssert","utils_1","getNAF","naf","getJSF","k1","k2","jsf","m8","d1","d2","u1","u2","m14","m24","cachedProperty","computer","parseBytes","intFromLE","utils_1$1","assert$1","BaseCurve","conf","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","curve","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","step","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","decodePoint","pointFromX","encodeCompressed","getX","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","assert$2","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","inherits_browser","short_1","Point","isRed","inf","JPoint","zOne","lambda","betas","_getEndoRoots","lambdas","basis","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","y1","y2","len1","_endoSplit","v1","v2","p1","p2","q1","q2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","fromJSON","endoMul","obj2point","isInfinity","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","negate","zinv","zinv2","ay","pz2","z2","s1","s2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","yyu4","kbase","z3","pz3","eqXToP","zs","short","edwards","curves","PresetCurve","curve_1","defineCurve","crash","HmacDRBG","predResist","minEntropy","_reseed","reseedInterval","entropy","entropyEnc","nonceEnc","pers","persEnc","hmacDrbg","seed","_hmac","kmac","reseed","addEnc","generate","temp","assert$3","KeyPair","priv","pub","_importPrivate","privEnc","_importPublic","pubEnc","fromPublic","fromPrivate","getPublic","getPrivate","derive","sign","verify","assert$4","Signature","_importDER","Position","place","getLength","initial","octetLen","rmPadding","constructLength","octets","slen","toDER","backHalf","rand","assert$5","EC","curves_1","keyPair","keyFromPrivate","keyFromPublic","genKeyPair","drbg","ns2","_truncateToN","truncOnly","bkey","ns1","iter","kp","kpX","canonical","signature$1","sinv","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","EC$1","elliptic","eddsa","_curve","getCurve","SigningKey","privateKey","_addPoint","p0","publicKey","signDigest","digestBytes","computeSharedSecret","otherKey","otherKeyPair","computePublicKey","isSigningKey","_isSigningKey","compressed","signingKey","TransactionTypes","handleAddress","handleNumber","recoverAddress","computeAddress","rs","recoverPublicKey","formatNumber","accessSetify","addr","storageKeys","storageKey","accessListify","localeCompare","formatAccessList","_serializeEip1559","RLP","_serializeEip2930","_parseEipSignature","serialize","recid","rawTransaction","raw","_parse","_parseEip2930","_parseEip1559","transactionType","textData","atob","btoa","skipFetchSetup","credentials","redirect","referrer","statusCode","statusMessage","statusText","staller","duration","bodyify","fetchJson","json","processFunc","updated","attemptLimit","throttleLimit","throttleCallback","throttleSlotInterval","errorPassThrough","allow304","allowGzip","user","allowInsecureAuthentication","base64Encode","reData","dataMatch","base64Decode","SERVER_ERROR","requestBody","requestMethod","flatHeaders","header","runningTimeout","timer","TIMEOUT","runningFetch","attempt","tryAgain","stall","serverError","throttleRetry","race","_fetchData","processJsonFunc","poll","ceiling","interval","retryLimit","check","oncePoll","onceBlock","Description","ForkEvent","isForkEvent","_isForkEvent","getBlock","lastBaseFeePerGas","baseFeePerGas","eventName","isProvider","_isProvider","BaseX","alphabet","_alphabetMap","digits","_leader","Base58","flatDeep","read_compressed_payload","read_payload","u16","symbol_count","skip","pos_payload","read_width","read_buffer","read_bit","FULL","HALF","QRTR","MASK","register","low","decode_arithmetic","read_ascending","read_deltas","read_member_array","lookup","vX","vN","read_counts","read_transposed","read_linear_table","dx","dy","read_zero_terminated_array","ys","j_dy","read_replacement_table","VALID","IGNORED","MAPPED","fromEntries","read_mapped_map","EMOJI_ROOT","read","branches","fe0f","save","read_emoji_trie","HYPHEN","UNDERSCORE","explode_cp","toUtf8CodePoints","filter_fe0f","cps","cp","ens_normalize_post_check","label","ens_normalize","emoji_filter","emoji","consume_emoji_reversed","fromCodePoint","eaten","saved","_a","Zeros","checkComponent","comp","ensNameSplit","comps","namehash","ethDefaultProvider","network","providerList","InfuraProvider","infura","EtherscanProvider","etherscan","AlchemyProvider","alchemy","PocketProvider","pocket","CloudflareProvider","cloudflare","AnkrProvider","ankr","FallbackProvider","quorum","renetwork","etcDefaultProvider","JsonRpcProvider","homestead","ensAddress","_defaultProvider","ropsten","classicMordor","networks","unspecified","mainnet","morden","testnet","rinkeby","kovan","goerli","kintsugi","sepolia","classic","classicMorden","classicTestnet","classicKotti","xdai","matic","maticmum","optimism","arbitrum","bnb","bnbt","Formatter","formats","getDefaultFormats","bigNumber","allowNull","blockHash","transactionIndex","confirmations","uint256","creates","receiptLog","transactionHash","topics","logIndex","receipt","gasUsed","logsBloom","logs","cumulativeGasUsed","effectiveGasPrice","parentHash","timestamp","difficulty","miner","extraData","blockWithTransactions","transactionResponse","fromBlock","toBlock","filterLog","removed","allowFalsish","callAddress","_block","author","_difficulty","networkId","parseTransaction","byzantium","checkKey","checkValue","nullValue","replaceValue","throttleMessage","checkTopic","topic","serializeTopics","unique","getEventTag","getTime","PollableEvents","Event","_lastBlockNumber","_inflight","pollable","coinInfos","p2pkh","p2sh","ilk","bytes32ify","base58Encode","matcherIpfs","matchers","_parseString","_parseBytes","getIpfsLink","numPad","padded","bytesPad","datas","Resolver","resolvedAddress","formatter","supportsWildcard","_supportsEip2544","_fetch","selector","ccipReadEnabled","_fetchBytes","_getAddress","coinType","hexBytes","coinInfo","bech32","getAvatar","linkage","avatar","getText","scheme","owner","_resolvedAddress","tokenId","tokenOwner","metadataUrl","metadata","imageUrl","image","getContentHash","ipfs","ipns","swarm","skynet","urlSafe","keyBytes","defaultFormatter","nextPollId","BaseProvider","_emitted","disableCcipRead","getFormatter","anyNetwork","detectNetwork","_networkPromise","_ready","knownNetwork","_maxInternalBlockNumber","_maxFilterBlockRange","_pollingInterval","_fastQueryDate","_network","ready","NETWORK_ERROR","standard","defaultProvider","ccipReadFetch","urls","errorMessages","errorMessage","_getInternalBlockNumber","maxAge","_internalBlockNumber","internalBlockNumber","respTime","reqTime","checkInternalBlockNumber","perform","networkError","_setFastBlockNumber","pollId","runners","previousBlockNumber","eventBlockNumber","runner","getTransactionReceipt","minFromBlock","getLogs","resetEventsBlock","polling","currentNetwork","_fastBlockNumber","_fastBlockNumberPromise","detectedNetwork","_poller","_bootstrapPoll","_getFastBlockNumber","getBlockNumber","waitForTransaction","_waitForTransaction","replaceable","cancelFuncs","alreadyDone","minedHandler","lastBlockNumber","startBlock","scannedBlock","replaceHandler","mined","getTransaction","getBlockWithTransactions","cancelled","replacement","_wrapTransaction","unref","addressOrName","_getBlockTag","getCode","getStorageAt","expectedHash","returnedHash","confirms","signedTransaction","hexTx","_getTransactionRequest","_getFilter","_call","redirects","txSender","urlsOffset","urlsLength","urlsData","callbackSelector","ccipResult","resolved","_getBlock","blockHashOrBlockTag","includeTransactions","blockWithTxs","getEtherPrice","getResolver","currentName","_getResolver","resolver","addrData","lookupAddress","resolverAddr","nameOrAddress","resolverAddress","NOT_IMPLEMENTED","_startEvent","_stopEvent","_addEventListener","stopped","eventTag","errorGas","spelunk","requireData","checkError","responseText","getResult","getLowerCase","JsonRpcSigner","addressOrIndex","connectUnchecked","UncheckedJsonRpcSigner","_address","_index","send","sendUncheckedTransaction","fromAddress","estimate","hexlifyTransaction","ACTION_REJECTED","messageData","_legacySignMessage","populated","_TypedDataEncoder","unlock","networkOrReady","_nextId","_cache","_eventLoopCache","defaultUrl","_uncachedDetectNetwork","getSigner","getUncheckedSigner","listAccounts","jsonrpc","prepareRequest","_startPending","_pendingFilter","pendingFilter","filterId","hashes","seq","allowExtra","allowed","buildWeb3LegacyFetcher","sendFunc","fetcher","Web3Provider","jsonRpcFetchFunc","subprovider","host","isMetaMask","buildEip1193Fetcher","sendAsync","__assign","__rest","__spreadArray","styleInject","insertAt","SuppressedError","button__large","button__48","button__medium","button__40","button__small","button__32","button__primary","button__secondary","button__tetiary","button__plain","button__destructive","button__grey","Button","leadIcon","tailIcon","ButtonIcon","Tab","icon","Footer","rel","alt","Loader","viewBox","xmlns","PrismicProvider","linkResolver","richTextComponents","internalLinkComponent","externalLinkComponent","isParams","useSinglePrismicDocument","usePrismicClient","header_fixed","header__logo","header__products","header__product","header__balance","header__address","open","header__hamburger","header__buttons","Ge","useOnClickOutside","formatValue","pathWithArgsFilter","pathFilter","at","not","in","fulltext","similar","geopointNear","numberLessThan","numberGreaterThan","numberInRange","dateAfter","dateBefore","dateBetween","dateDayOfMonth","dateDayOfMonthAfter","dateDayOfMonthBefore","dateDayOfWeek","dateDayOfWeekAfter","dateDayOfWeekBefore","dateMonth","dateMonthAfter","dateMonthBefore","dateYear","dateHour","dateHourAfter","dateHourBefore","castArray","appendFilters","devMsg","everyTagFilter","en","__publicField$2","__publicField","PrismicError","findRef","findMasterRef","isMasterRef","findRefByID","findRefByLabel","readValue","someTagsFilter","typeFilter","ForbiddenError","NotFoundError","ParsingError","PreviewTokenExpiredError","RefExpiredError","RefNotFoundError","RepositoryNotFoundError","nn","an","__publicField$1","BaseClient","queueFetch","dedupeFetch","URL","hostname","queuedFetchJobs","resumeNext","_len5","_key5","pLimit","createFetchJob","dedupedFetchJobs","rn","accessToken","castOrderingToString","direction","isRepositoryEndpoint","sn","cn","dn","ln","__typeError","__accessCheck","__privateGet","Master","ReleaseID","ReleaseLabel","Manual","asText","_len6","_key6","separator","TailArrow","ArrowRight","ArrowTail","HeaderNav","hamburgerButtonRef","close","headerInfo","isOpen","amburl","slices","primary","navlabel","toLocaleLowerCase","navitemlink","navitemimg","navitemlabel","navitemdescr","ArrowTop","AddressInfo","accountInfoRef","logout","clipboard","writeText","balance__img","Modal$1","onClose","modalRootId","getElementById","handleClickOutside","$","role","mn","hn","gn","yn","WalletList","promoConnectors","Option","mocked","kn","fulfilled","rejected","throw","sent","trys","ops","Iterator","verb","__generator","ConnectWalletModal","En","Tn","rpcUrls","http","blockExplorers","multicall3","Ln","An","formatAmountString","Fn","Nn","Bn","Hn","On","Mn","Pn","Sn","MetaMask","WalletConnect","SafePal","Bitget","GateWallet","jn","zn","Vn","overrideIconInConnector","Wn","Dn","qn","Qn","Un","HeaderBody","currentConnector","isSupportedChain","switchToAmb","logotype","_e","offsetTop","handleFixed","scrollY","handleResize","innerWidth","useLockBodyScroll","handleLoginModal","handleAddressInfo","handleMobileNav","connect_button","useIsMobilePlatform","innerHeight","vendor","opera","MSStream","isMobile","isAndroid","isIOS","isAdaptive","getConnectorByName","useFilteredConnectors","filteredConnectors","mockedConnectors","mergeConnectors","useEthersAdapter","ensRegistry","signer","clientToSigner","Kn","autoPreviewsEnabled","documentAPIEndpoint","repositoryName","routes","brokenRoute","defaultParams","queryContentFromRef","graphQLFetch","endpoint","enableAutoPreviews","refState","enableAutoPreviewsFromReq","httpRequest","disableAutoPreviews","buildQueryURL","getFirst","page","pageSize","dangerouslyGetAll","next_page","getByID","getByIDs","getAllByIDs","getByUID","getByUIDs","getAllByUIDs","getSingle","getByType","getAllByType","getByTag","getAllByTag","getByEveryTag","getAllByEveryTag","getBySomeTags","getAllBySomeTags","getRepository","searchParams","getRefs","getRefByID","getRefByLabel","getMasterRef","getReleases","getReleaseByID","getReleaseByLabel","getTags","getCachedRepositoryForm","getResolvedRefString","integrationFieldsRef","getCachedRepository","predicates","append","resolvePreviewURL","documentID","previewToken","URLSearchParams","documentId","_len4","_key4","link_type","lang","slug","slugs","asLink","defaultURL","queryLatestContent","queryContentFromReleaseByID","releaseID","queryContentFromReleaseByLabel","releaseLabel","Authorization","cachedRepository","cachedRepositoryExpiration","forms","cookie","Zn","Header","disconnectAsync","Yn","Xn","Modal","passRef","Jn","Content","clsx","enter","exit","appendPosition","collapse","collapseDuration","preventExitTransition","nodeRef","isIn","classList","scrollHeight","minHeight","margin","containerId","toastId","theme","ct","emitQueue","cancelEmit","dt","spinner","toastKey","displayedToast","isToastActive","getToast","toastContent","toastProps","staleId","enableMultiContainer","updateId","toastStyle","closeToast","toastClassName","bodyClassName","progressClassName","autoClose","deleteToast","iconOut","onOpen","closeButton","clear","getToastToRender","newestOnTop","containerRef","ariaLabel","fillRule","isRunning","hide","controlledProgress","progress","rtl","animationDuration","animationPlayState","defaultClassName","toastRef","eventHandlers","removalDistance","canCloseOnClick","canDrag","boundingRect","didMove","pauseOnHover","closeOnClick","draggable","getBoundingClientRect","draggableDirection","offsetWidth","draggablePercent","offsetHeight","bottom","pauseOnFocusLoss","hasFocus","onMouseDown","onTouchStart","onMouseUp","onTouchEnd","onMouseEnter","onMouseLeave","playToast","pauseToast","hideProgressBar","bodyStyle","progressStyle","_t","pt","pointerEvents","ut","ft","mt","ht","ErrorIcon","InfoIcon","SuccessIcon","WarningIcon","loading","dismiss","dark","clearWaitingQueue","POSITION","TOP_LEFT","TOP_RIGHT","TOP_CENTER","BOTTOM_LEFT","BOTTOM_RIGHT","BOTTOM_CENTER","TYPE","SUCCESS","ERROR","DEFAULT","Spinner","yt","CloseButton","NotificationContainer","At","Rt","It","Ft","Nt","Bt","Ht","Ot","Mt","Pt","ConnectWallet_old","loginMetamask","loginWalletConnect","loginSafepal","loginBitget","marginTop","Wt","toggleModal","ConnectWalletModalProvider","_path2","SvgAmb","svgRef","titleId","clipRule","_path3","_path4","_path5","_path6","_path7","SvgEth","SvgBnb","enableBackground","xmlSpace","SvgBsc","SvgUsdc","SvgBusd","SvgUsdt","iconDict","ETH","EthIcon","WETH","AMB","AmbIcon","SAMB","BNB","BnbIcon","WBNB","BSC","BscIcon","USDC","UsdcIcon","WUSDC","BUSD","BusdCoin","USDT","UsdtCoin","IconComponent","_jsx","REACT_APP_ENV","allNetworks","NetworksConfig","amb","eth","bsc","supportedNetworks","AmbrosusNetwork","getNetworkByChainId","networksChainIds","WS","WebSocket","NextId","WebSocketProvider","_wsReady","websocket","onopen","_requests","messageEvent","_subs","subscription","fauxPoll","_websocket","_detectNetwork","rid","_subscribe","subIdPromise","_subIds","subId","emitReceipt","readyState","CONNECTING","StaticJsonRpcProvider","_super","UrlJsonRpcProvider","apiKey","isCommunityResource","getApiKey","defaultProjectId","InfuraWebSocketProvider","projectId","projectSecret","getWebSocketProvider","apiKeyObj","REACT_APP_INFURA_KEY","ethChainId","ethProvider","ethers","ambChainId","ambProvider","rpcUrl","bscChainId","bscProvider","denomination","wrappedAnalog","primaryNets","nativeTokensById","findTokenByAddress","handleTransferredTokens","withDrawArgs","getLogo","transTokens","fromChainId","networkFrom","toChainId","networkTo","tokenFrom","tokenTo","useTokens","ConfigContext","Status","_allNetworks$networks","_allNetworks$networks2","_networks$from","_allNetworks$networks3","_networks$to","_allNetworks$networks4","txHash","useParams","setNetworks","stage","setStage","setConfirmations","otherNetworkTxHash","setOtherNetworkTxHash","minSafetyBlocks","setMinSafetyBlocks","transferredTokens","setTransferredTokens","amount","setAmount","finishTxHash","denominatedAmount","getTransferredTokens","onclose","renderStatus","stageNum","formatHash","_jsxs","goHome","arrow","_Fragment","NetworkOrTokenIcon","explorerUrl","_rect","SvgExchangeSwapButton","_g","_defs","SvgHistory","clipPath","InlineLoader","handleClose","handleSelect","selectedOption","alignLeft","useClickOutside","setChainId","selectedChainId","isLoggedIn","setIsOpen","selectedNetwork","formattedOptions","handleOpen","ChevronIcon","Dropdown","NetworkSelect","getMultiplier","formatFixed","multiplier","whole","parseFixed","wholeValue","fractionValue","FixedFormat","_multiplier","FixedNumber","_value","_isFixedNumber","_checkFormat","addUnsafe","fromValue","subUnsafe","mulUnsafe","divUnsafe","hasFraction","ONE","toFormat","factor","bump","BUMP","toUnsafeFloat","parseFloat","fromString","isBigNumberish","fixedFormat","numeric","decimal","fromBytes","isFixedNumber","unitName","parseUnits","Coder","localName","_throwError","Writer","_data","_dataLength","_padding","_writeData","appendWriter","writer","writeBytes","paddingOffset","_getValue","writeValue","writeUpdatableValue","Reader","coerceFunc","allowLoose","_offset","coerce","_coerceFunc","_peekBytes","loose","alignedLength","subReader","AddressCoder","reader","AnonymousCoder","coder","pack","coders","arrayValues","staticWriter","dynamicWriter","updateFuncs","dynamicOffset","updateFunc","baseOffset","unpack","baseReader","offsetReader","ArrayCoder","defaultChild","BooleanCoder","DynamicBytesCoder","BytesCoder","FixedBytesCoder","NullCoder","NumberCoder","maxUintValue","bounds","StringCoder","TupleCoder","ModifiersBytes","memory","ModifiersNest","checkModifier","populate","FormatTypes","sighash","minimal","full","paramTypeArray","ParamType","arrayLength","arrayChildren","fromObject","_isParamType","allowIndexed","isParamType","verifyType","originalParam","newNode","parent","allowType","allowParams","allowName","allowArray","readArray","parseParamType","parseParams","allowIndex","splitNesting","_isFragment","FunctionFragment","EventFragment","ConstructorFragment","ErrorFragment","anonymous","isEventFragment","verifyIdentifier","regexParen","parseGas","parseModifiers","constant","payable","verifyState","isConstructorFragment","parens","isFunctionFragment","checkForbidden","fragment","isErrorFragment","regexIdentifier","paramTypeBytes","paramTypeNumber","defaultAbiCoder","_getCoder","_getWordSize","_getReader","_getWriter","getDefaultValue","LogDescription","TransactionDescription","ErrorDescription","Indexed","isIndexed","_isIndexed","BuiltinErrors","wrapAccessError","wrap","Interface","fragments","bucket","deploy","functions","getAbiCoder","getSighash","getEventTopic","eventFragment","getFunction","nameOrSignatureOrSighash","matching","getEvent","nameOrSignatureOrTopic","topichash","getError","_decodeParams","_abiCoder","_encodeParams","encodeDeploy","encodeErrorResult","decodeFunctionData","functionFragment","errorSignature","builtin","encodeFunctionResult","encodeFilterTopics","encodeTopic","encodeEventLog","dataTypes","dataValues","decodeEventLog","topicHash","expected","nonIndexed","resultIndexed","resultNonIndexed","nonIndexedIndex","indexedIndex","parseLog","parseError","hexData","errorFragment","isInterface","_isInterface","nameOrPromise","resolveAddresses","paramType","overrides","override","interface","intrinsic","roValue","customData","leftovers","addContractWait","parsed","eventSignature","buildCall","collapseSimple","signerOrProvider","deployTransaction","_deployed","buildDefault","txRequest","buildSend","RunningEvent","_listeners","argsCopy","prepareEvent","getEmit","ErrorRunningEvent","FragmentRunningEvent","contractInterface","decodeError","checkErrors","childPath","checkResultErrors","WildcardRunningEvent","BaseContract","uniqueFilters","uniqueSignatures","callStatic","buildPopulate","buildEstimate","getInterface","deployed","_deployedPromise","attach","_normalizeRunningEvent","runningEvent","_runningEvents","_getRunningEvent","_checkRunningEvents","_wrappedEmits","_wrapEvent","wrappedEmit","queryFilter","fromBlockOrBlockhash","Contract","tokenContractAddress","ownerAddress","balanceOf","transactionAmount","actualBnBalance","bnValue","destinationChainId","relayUrlByChainId","isFromAmb","selectedCoin","foreignChainId","isAmountWithFees","isAmb","bridgeFee","transferFee","bnBridgeFee","bnTransferFee","totalFee","afterDotAmount","amountFloatString","intPart","floatPart","amountBalance","defaultState","departureToken","destinationToken","useSelectedTokens","depNet","destNet","changeNetwork","prevChainId","usePrevious","_tokens$ethChainId","_tokens$ethChainId2","_tokens$bscChainId","findDestinationToken","newDepartureToken","newDestinationToken","setDestinationToken","nativeAnalog","setDepartureToken","useCoinBalance","setBalance","createBridgeContract","BridgeABI","useBridges","bridges","useGetMaxTxAmount","bnBalance","getFee","gasOpts","BridgeContract","estGasPrice","wrapWithdraw","multipliedEstGasPrice","formatAmount","useAvailableForTransferTokens","availableTokens","setAvailableTokens","tokenList","ambIcon","inputValue","selectedCoinIcon","placeholder","onKeyPress","onBlur","setCoin","setTimer","getMaxTxAmount","formattedTokenList","formattedSelectedCoin","AmountInput","formattedValue","toLocaleString","maxTxAmount","Notify","scrollTo","Exchange","useSwitchToConfiguredChain","setForeignChainId","destinationNetwork","departureNetwork","newChainId","setTransactionAmount","fee","setFee","updateFee","isValueInvalid","setIsInvalid","goToHistory","History","ExchangeField","SwapButton","ReceiveField","receivedCoin","CurrencyInput","tokenSymbol","validateTransactionAmount","Heading","SvgInfoIcon","SvgChatHelpIcon","ChatHelpIcon","TokenContract","createTokenContract","TokenABI","allowance","tokenDecimals","oneHundredThousand","approve","bnAllowanceToAsk","bnTransactionAmount","increaseAllowanceIfNeeded","tokenThisAddress","toAddress","unwrapSide","feeSignature","withdraw","setError","useError","ErrorContext","Confirmation","prevAccount","ambPrice","setAmbPrice","price_usd","isLocked","setIsLocked","isAmbTransfered","toFixed","bridgeAddress","withdrawCoins","_e$data","errorMsg","loader","getTxLink","explorerLink","formatDate","endDate","days","hours","minutes","seconds","timePassed","getDate","getMonth","getFullYear","getHours","getMinutes","getSeconds","destinationNetTxHash","transferFinishTxHash","tokenAmount","timestampStart","isLegacy","withdrawTx","arrowUpRight","TransactionList","transactionHistory","setTransactionHistory","isLoadingFinished","setIsLoadingFinished","sortedTxs","txHistory","txHistoryJson","backBtn","TransactionListItem","dict","native","foreign","side","parsePrimaryNets","tokenNetworks","net","parseDecimals","formattedConfig","logo","setConfig","formattedTokens","formatNewTokenList","formattedBridges","formatBridgesFromConfig","useUnsupportedChainError","networksNames","NotFound","isFirstRender","useGtag","dataLayer","event_category","QueryCache","getQueryDefaults","queryInMap","getAll","defaultedFilters","findAll","MutationCache","scope","scopeFor","mutations","firstPendingMutation","foundMutation","resumePausedMutations","pausedMutations","infiniteQueryBehavior","pages","fetchMore","oldPages","oldPageParams","pageParams","empty","fetchPage","previous","pageParam","aborted","addTo","oldData","remainingPages","lastIndex","defineChain","fees","serializers","apiUrl","ensUniversalResolver","bscTestnet","walletConnect","isNewChainsStale","provider_","providerPromise","accountsChanged","chainChanged","displayUri","sessionDelete","onConnect","onSessionDelete","onDisplayUri","targetChainId","isChainSupported","isChainsStale","session","optionalChains","optionalChain","pairingTopic","setRequestedChainsIds","enable","currentChainId","onAccountsChanged","onChainChanged","onDisconnect","EthereumProvider","init","disableProviderPing","rpcMap","fallbackUrl","transports","extractRpcUrls","showQrModal","initProvider","setMaxListeners","requestedChains","getRequestedChainsIds","blockExplorerUrls","addEthereumChain","chainName","iconUrls","connectInfo","_error","uri","getNamespaceChainsIds","chainIds","namespaces","requestedChainsStorageKey","connectorChains","namespaceChains","createStore","providerDetails","CustomEvent","requestProviders","providerDetail","uuid","added","unwatch","findProvider","rdns","emitImmediately","subscribeWithSelector","api","origSubscribe","optListener","currentSlice","getState","nextSlice","previousSlice","fireImmediately","createJSONStorage","getStorage","persistStorage","str2","reviver","removeItem","toThenable","onFulfilled","_onRejected","_onFulfilled","onRejected","persistImpl","baseOptions","oldImpl","localStorage","deserialize","partialize","merge","persistedState","currentState","hydrationListeners","finishHydrationListeners","thenableSerialize","errorInSync","thenable","serializedValue","savedSetState","configResult","stateFromStorage","postRehydrationCallback","onRehydrateStorage","storageValue","deserializedStorageValue","migrate","migratedState","_a2","newOptions","clearStorage","getOptions","onHydrate","onFinishHydration","newImpl","_b","skipHydration","createStoreImpl","createState","previousState","withTimeout","errorInstance","timeoutId","controller","supportsSimulationIdRegex","targetMap","coinbaseWallet","coinbaseWalletExtension","metaMask","isBraveWallet","_state","flag","phantom","ethereum","injected","shimDisconnect","unstable_shimAsyncInject","getTarget","supportsSimulation","permissions","eth_accounts","caveats","hexChainId","handleEthereum","originalError","blockExplorer","Emitter","_emitter","__type","getReferenceKey","cutoff","getCutoff","indent","circularReplacer","hasReplacer","hasCircularReplacer","thisCutoff","valueCutoff","createReplacer","createStorage","deserialize_","serialize_","noopStorage","unwrap","unwrapped","UrlRequiredError","createIdStore","idCache","onFetchRequest","onFetchResponse","retryCount_","timeout_","url_","rpcClient","onRequest","onResponse","signal_","Request","getHttpRpcClient","REACT_APP_CHAIN_ID","REACT_APP_WC_PROJECT_ID","walletconnectConfig","icons","wagmiConfig","multiInjectedProviderDiscovery","syncConnectedChain","createMipd","connectorFn","createEmitter","clients","getInitialState","currentVersion","validatePersistedChainId","defaultChainId","isChainConfigured","currentConnectorIds","newConnectors","hasChainSpecificValue","isCorrupt","nextChains","createConfig","airdaoMainnet","airdaoTestnet","queryCache","isMutating","getQueryData","ensureQueryData","cachedData","fetchQuery","revalidateIfStale","prefetchQuery","getQueriesData","setQueryData","functionalUpdate","setQueriesData","getQueryState","resetQueries","refetchFilters","refetchQueries","cancelQueries","defaultedCancelOptions","refetchType","fetchInfiniteQuery","prefetchInfiniteQuery","setDefaultOptions","setQueryDefaults","defaults","queryDefault","setMutationDefaults","getMutationDefaults","Main","ConfigProvider","ErrorProvider","Routing","supportedChains","supportedChain","Layout","ReactDOM"],"sourceRoot":""}